浏览代码

Export interface modules

Kajetan Johannes Hammerle 1 周之前
父节点
当前提交
e84617ae1a

+ 1 - 1
modules/AlignedData.cppm

@@ -2,7 +2,7 @@ module;
 
 export module Core.AlignedData;
 
-import Core.Types;
+export import Core.Types;
 
 export namespace Core {
     template<size_t SIZE, size_t ALIGNMENT>

+ 2 - 2
modules/Array.cppm

@@ -1,9 +1,9 @@
 module;
 
-#include <cstddef>
-
 export module Core.Array;
 
+export import Core.Types;
+
 namespace Core {
     export template<typename T, size_t N>
     struct Array final {

+ 1 - 2
modules/Box.cppm

@@ -2,8 +2,7 @@ module;
 
 export module Core.Box;
 
-import Core.Vector;
-import Core.Types;
+export import Core.Vector;
 
 export namespace Core {
     class Box final {

+ 2 - 2
modules/Buffer.cppm

@@ -1,9 +1,9 @@
 module;
 
-#include <cstddef>
-
 export module Core.Buffer;
 
+import Core.Types;
+
 export namespace Core {
     class Buffer final {
         size_t length;

+ 0 - 1
modules/Clock.cppm

@@ -3,7 +3,6 @@ module;
 export module Core.Clock;
 
 import Core.Array;
-import Core.Types;
 
 export namespace Core {
     struct Clock final {

+ 1 - 1
modules/Color.cppm

@@ -2,7 +2,7 @@ module;
 
 export module Core.Color;
 
-import Core.Types;
+export import Core.Types;
 
 export namespace Core {
     using ColorChannel = u8;

+ 0 - 1
modules/Components.cppm

@@ -4,7 +4,6 @@ export module Core.Components;
 
 import Core.HashMap;
 import Core.List;
-import Core.Types;
 import Core.Meta;
 
 export namespace Core {

+ 1 - 1
modules/File.cppm

@@ -2,7 +2,7 @@ module;
 
 export module Core.File;
 
-import Core.List;
+export import Core.List;
 
 export namespace Core {
     bool readFile(List<char>& content, const char* path);

+ 2 - 2
modules/Frustum.cppm

@@ -2,10 +2,10 @@ module;
 
 export module Core.Frustum;
 
+export import Core.Matrix;
+
 import Core.Array;
-import Core.Matrix;
 import Core.Plane;
-import Core.Vector;
 
 export namespace Core {
     class Frustum final {

+ 2 - 1
modules/HashMap.cppm

@@ -2,9 +2,10 @@ module;
 
 export module Core.HashMap;
 
+export import Core.Types;
+
 import Core.List;
 import Core.ToString;
-import Core.Types;
 import Core.Utility;
 import Core.AlignedData;
 import Core.Math;

+ 2 - 0
modules/HashedString.cppm

@@ -5,6 +5,8 @@ module;
 
 export module Core.HashedString;
 
+export import Core.Types;
+
 export namespace Core {
     struct StringHash {
         size_t length = 0;

+ 0 - 2
modules/List.cppm

@@ -1,7 +1,6 @@
 module;
 
 #include <cassert>
-#include <cstdio>
 #include <new>
 
 export module Core.List;
@@ -9,7 +8,6 @@ export module Core.List;
 import Core.AlignedData;
 import Core.Math;
 import Core.Meta;
-import Core.Types;
 import Core.Utility;
 import Core.ToString;
 

+ 1 - 3
modules/Matrix.cppm

@@ -2,9 +2,7 @@ module;
 
 export module Core.Matrix;
 
-import Core.Quaternion;
-import Core.Vector;
-import Core.Types;
+export import Core.Quaternion;
 
 export namespace Core {
     class Matrix final {

+ 51 - 51
modules/Meta.cppm

@@ -2,54 +2,54 @@ module;
 
 export module Core.Meta;
 
-export namespace Core {
-    namespace Internal {
-        template<typename T>
-        struct BaseRemovePointer final {
-            using Type = T;
-        };
-
-        template<typename T>
-        struct BaseRemovePointer<T*> final {
-            using Type = T;
-        };
-
-        template<typename T>
-        struct BaseRemoveReference final {
-            using Type = T;
-        };
-
-        template<typename T>
-        struct BaseRemoveReference<T&> final {
-            using Type = T;
-        };
-
-        template<typename T>
-        struct BaseRemoveReference<T&&> final {
-            using Type = T;
-        };
-
-        template<typename A, typename B>
-        struct BaseIsSame final {
-            static constexpr bool value = false;
-        };
-
-        template<typename T>
-        struct BaseIsSame<T, T> final {
-            static constexpr bool value = true;
-        };
-
-        template<bool C, typename A, typename B>
-        struct BaseIf final {
-            using Type = A;
-        };
-
-        template<typename A, typename B>
-        struct BaseIf<false, A, B> final {
-            using Type = B;
-        };
-    }
+namespace Core {
+    template<typename T>
+    struct BaseRemovePointer final {
+        using Type = T;
+    };
+
+    template<typename T>
+    struct BaseRemovePointer<T*> final {
+        using Type = T;
+    };
+
+    template<typename T>
+    struct BaseRemoveReference final {
+        using Type = T;
+    };
+
+    template<typename T>
+    struct BaseRemoveReference<T&> final {
+        using Type = T;
+    };
+
+    template<typename T>
+    struct BaseRemoveReference<T&&> final {
+        using Type = T;
+    };
+
+    template<typename A, typename B>
+    struct BaseIsSame final {
+        static constexpr bool value = false;
+    };
+
+    template<typename T>
+    struct BaseIsSame<T, T> final {
+        static constexpr bool value = true;
+    };
 
+    template<bool C, typename A, typename B>
+    struct BaseIf final {
+        using Type = A;
+    };
+
+    template<typename A, typename B>
+    struct BaseIf<false, A, B> final {
+        using Type = B;
+    };
+}
+
+export namespace Core {
     template<typename T>
     concept Iterable = requires(T& t) {
         t.begin();
@@ -57,16 +57,16 @@ export namespace Core {
     };
 
     template<typename T>
-    using RemovePointer = Internal::BaseRemovePointer<T>::Type;
+    using RemovePointer = BaseRemovePointer<T>::Type;
 
     template<typename T>
-    using RemoveReference = Internal::BaseRemoveReference<T>::Type;
+    using RemoveReference = BaseRemoveReference<T>::Type;
 
     template<typename T, typename U>
-    constexpr bool IsSame = Internal::BaseIsSame<T, U>::value;
+    constexpr bool IsSame = BaseIsSame<T, U>::value;
 
     template<bool C, typename A, typename B>
-    using If = Internal::BaseIf<C, A, B>::Type;
+    using If = BaseIf<C, A, B>::Type;
 
     template<typename T>
     constexpr RemoveReference<T>&& move(T&& t) {

+ 1 - 2
modules/Plane.cppm

@@ -2,8 +2,7 @@ module;
 
 export module Core.Plane;
 
-import Core.Vector;
-import Core.Types;
+export import Core.Vector;
 
 export namespace Core {
     class Plane final {

+ 1 - 2
modules/Quaternion.cppm

@@ -2,8 +2,7 @@ module;
 
 export module Core.Quaternion;
 
-import Core.Vector;
-import Core.Types;
+export import Core.Vector;
 
 export namespace Core {
     class Quaternion final {

+ 0 - 1
modules/Queue.cppm

@@ -6,7 +6,6 @@ export module Core.Queue;
 
 import Core.AlignedData;
 import Core.ToString;
-import Core.Types;
 import Core.Meta;
 
 export namespace Core {

+ 0 - 1
modules/Random.cppm

@@ -3,7 +3,6 @@ module;
 export module Core.Random;
 
 import Core.Array;
-import Core.Types;
 
 export namespace Core {
     class Random final {

+ 2 - 2
modules/ReadLine.cppm

@@ -1,9 +1,9 @@
 module;
 
-#include <cstddef>
-
 export module Core.ReadLine;
 
+export import Core.Types;
+
 export namespace Core {
     bool startReadLine();
     bool readLine(char* buffer, size_t n);

+ 2 - 2
modules/Terminal.cppm

@@ -1,8 +1,8 @@
 module;
+
 export module Core.Terminal;
 
-import Core.Types;
-import Core.Vector;
+export import Core.Vector;
 
 #define ESC "\33["
 

+ 0 - 1
modules/Test.cppm

@@ -7,7 +7,6 @@ export module Core.Test;
 
 import Core.Logger;
 import Core.Terminal;
-import Core.Meta;
 import Core.ToString;
 
 #define SOURCE const std::source_location& l = std::source_location::current()

+ 1 - 3
modules/ToString.cppm

@@ -1,12 +1,10 @@
 module;
 
-#include <cstdio>
-#include <cstring>
-
 export module Core.ToString;
 
 import Core.Math;
 import Core.Meta;
+import Core.Types;
 
 export namespace Core {
     size_t toString(signed char v, char* s, size_t n);

+ 1 - 1
modules/Unicode.cppm

@@ -2,7 +2,7 @@ module;
 
 export module Core.Unicode;
 
-import Core.Types;
+export import Core.Types;
 
 export namespace Core {
     struct UTF8 {

+ 4 - 0
modules/Utility.cppm

@@ -9,6 +9,10 @@ import Core.Meta;
 
 #define SOURCE const std::source_location& l = std::source_location::current()
 
+export namespace std {
+    using std::source_location;
+}
+
 #ifdef CHECK_MEMORY
 export void* operator new(size_t count, const std::source_location& l);
 export void* operator new[](size_t count, const std::source_location& l);

+ 2 - 0
modules/Vector.cppm

@@ -4,6 +4,8 @@ module;
 
 export module Core.Vector;
 
+export import Core.Types;
+
 import Core.Math;
 import Core.Meta;
 import Core.ToString;

+ 1 - 3
modules/View.cppm

@@ -2,9 +2,7 @@ module;
 
 export module Core.View;
 
-import Core.Matrix;
-import Core.Vector;
-import Core.Quaternion;
+export import Core.Matrix;
 
 export namespace Core {
     class View {

+ 0 - 1
test/modules/FileTests.cpp

@@ -10,7 +10,6 @@ module Tests;
 import Core.File;
 import Core.Logger;
 import Core.Test;
-import Core.List;
 
 static int failIndex = 0;
 static const char* fails[] = {

+ 0 - 2
test/modules/RandomTests.cpp

@@ -1,8 +1,6 @@
 module Tests;
-
 import Core.Random;
 import Core.Test;
-import Core.Types;
 import Core.Array;
 
 using Core::Random;