ORIGINAL
Loading...
Searching...
No Matches
config.h
Go to the documentation of this file.
1#ifndef CONFIG_H
2#define CONFIG_H
3
12#include <cstdint>
13
20// Initialize all platform macros to false
21#define ORIGINAL_PLATFORM_WINDOWS 0
22#define ORIGINAL_PLATFORM_WINDOWS_32 0
23#define ORIGINAL_PLATFORM_WINDOWS_64 0
24#define ORIGINAL_PLATFORM_LINUX 0
25#define ORIGINAL_PLATFORM_MACOS 0
26#define ORIGINAL_PLATFORM_UNIX 0
27#define ORIGINAL_PLATFORM_UNKNOWN 0
28
29// Override based on actual platform detection
30#if defined(_WIN32) || defined(_WIN64)
31 #undef ORIGINAL_PLATFORM_WINDOWS
32 #define ORIGINAL_PLATFORM_WINDOWS 1
33 #ifdef _WIN64
34 #undef ORIGINAL_PLATFORM_WINDOWS_64
35 #define ORIGINAL_PLATFORM_WINDOWS_64 1
36 #else
37 #undef ORIGINAL_PLATFORM_WINDOWS_32
38 #define ORIGINAL_PLATFORM_WINDOWS_32 1
39 #endif
40#elif defined(__linux__)
41 #undef ORIGINAL_PLATFORM_LINUX
42 #define ORIGINAL_PLATFORM_LINUX 1
43#elif defined(__APPLE__) && defined(__MACH__)
44 #undef ORIGINAL_PLATFORM_MACOS
45 #define ORIGINAL_PLATFORM_MACOS 1
46#elif defined(__unix__)
47 #undef ORIGINAL_PLATFORM_UNIX
48 #define ORIGINAL_PLATFORM_UNIX 1
49#else
50 #undef ORIGINAL_PLATFORM_UNKNOWN
51 #define ORIGINAL_PLATFORM_UNKNOWN 1
52#endif
// end of PlatformDetection group
54
61// Initialize all compiler macros to false
62#define ORIGINAL_COMPILER_CLANG 0
63#define ORIGINAL_COMPILER_GCC 0
64#define ORIGINAL_COMPILER_MSVC 0
65#define ORIGINAL_COMPILER_UNKNOWN 0
66
67// Override based on actual compiler detection
68#if defined(__clang__)
69 #undef ORIGINAL_COMPILER_CLANG
70 #define ORIGINAL_COMPILER_CLANG 1
71 #define ORIGINAL_COMPILER_VERSION __clang_major__.__clang_minor__.__clang_patchlevel__
72#elif defined(__GNUC__) || defined(__GNUG__)
73 #undef ORIGINAL_COMPILER_GCC
74 #define ORIGINAL_COMPILER_GCC 1
75 #define ORIGINAL_COMPILER_VERSION __GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__
76#elif defined(_MSC_VER)
77 #undef ORIGINAL_COMPILER_MSVC
78 #define ORIGINAL_COMPILER_MSVC 1
79 #define ORIGINAL_COMPILER_VERSION _MSC_VER
80#else
81 #undef ORIGINAL_COMPILER_UNKNOWN
82 #define ORIGINAL_COMPILER_UNKNOWN 1
83#endif
// end of CompilerDetection group
85
93namespace original {
94
106 consteval bool ON_WINDOWS(){
107 #if ORIGINAL_PLATFORM_WINDOWS
108 return true;
109 #else
110 return false;
111 #endif
112 }
113
119 consteval bool ON_WIN32(){
120 #if ORIGINAL_PLATFORM_WINDOWS_32
121 return true;
122 #else
123 return false;
124 #endif
125 }
126
132 consteval bool ON_WIN64(){
133 #if ORIGINAL_PLATFORM_WINDOWS_64
134 return true;
135 #else
136 return false;
137 #endif
138 }
139
145 consteval bool ON_LINUX(){
146 #if ORIGINAL_PLATFORM_LINUX
147 return true;
148 #else
149 return false;
150 #endif
151 }
152
158 consteval bool ON_MACOS(){
159 #if ORIGINAL_PLATFORM_MACOS
160 return true;
161 #else
162 return false;
163 #endif
164 }
165
171 consteval bool ON_UNIX(){
172 #if ORIGINAL_PLATFORM_UNIX
173 return true;
174 #else
175 return false;
176 #endif
177 }
178
184 consteval bool ON_UNKNOWN_PLATFORM(){
185 #if ORIGINAL_PLATFORM_UNKNOWN
186 return true;
187 #else
188 return false;
189 #endif
190 }
// end of PlatformDetectionFunctions group
192
204 consteval bool USING_CLANG(){
205 #if ORIGINAL_COMPILER_CLANG
206 return true;
207 #else
208 return false;
209 #endif
210 }
211
217 consteval bool USING_GCC(){
218 #if ORIGINAL_COMPILER_GCC
219 return true;
220 #else
221 return false;
222 #endif
223 }
224
230 consteval bool USING_MSVC(){
231 #if ORIGINAL_COMPILER_MSVC
232 return true;
233 #else
234 return false;
235 #endif
236 }
237
243 consteval bool USING_UNKNOWN_COMPLIER(){
244 #if ORIGINAL_COMPILER_UNKNOWN
245 return true;
246 #else
247 return false;
248 #endif
249 }
// end of CompilerDetectionFunctions group
251
258 #if ORIGINAL_COMPILER_GCC || ORIGINAL_COMPILER_CLANG
265 using byte = std::uint8_t;
266 #elif ORIGINAL_COMPILER_MSVC
267 using byte = uint8_t;
268 #endif
269
270
271 #if ORIGINAL_COMPILER_GCC || ORIGINAL_COMPILER_CLANG
278 using s_byte = std::int8_t;
279 #elif ORIGINAL_COMPILER_MSVC
280 using s_byte = int8_t;
281 #endif
282
283 #if ORIGINAL_COMPILER_GCC || ORIGINAL_COMPILER_CLANG
291 using integer = std::int64_t;
292 #elif ORIGINAL_COMPILER_MSVC
293 using integer = int64_t;
294 #endif
295
296 #if ORIGINAL_COMPILER_GCC || ORIGINAL_COMPILER_CLANG
304 using u_integer = std::uint32_t;
305 #elif ORIGINAL_COMPILER_MSVC
306 using u_integer = uint32_t;
307 #endif
308
309 #if ORIGINAL_COMPILER_GCC || ORIGINAL_COMPILER_CLANG
319 using ul_integer = std::uint64_t;
320 #elif ORIGINAL_COMPILER_MSVC
321 using ul_integer = uint64_t;
322 #endif
323
332
340 using l_floating = long double;
// end of TypeDefinitions group
342}
343
344#endif //CONFIG_H
Unique ownership smart pointer with move semantics.
Definition ownerPtr.h:37
consteval bool USING_UNKNOWN_COMPLIER()
Checks if compiling with unknown compiler.
Definition config.h:243
consteval bool USING_MSVC()
Checks if compiling with MSVC.
Definition config.h:230
consteval bool USING_GCC()
Checks if compiling with GCC.
Definition config.h:217
consteval bool USING_CLANG()
Checks if compiling with Clang.
Definition config.h:204
consteval bool ON_LINUX()
Checks if compiling for Linux platform.
Definition config.h:145
consteval bool ON_WINDOWS()
Checks if compiling for Windows platform.
Definition config.h:106
consteval bool ON_UNIX()
Checks if compiling for Unix-like platform (excluding Linux/macOS)
Definition config.h:171
consteval bool ON_WIN32()
Checks if compiling for 32-bit Windows.
Definition config.h:119
consteval bool ON_UNKNOWN_PLATFORM()
Checks if compiling for unknown platform.
Definition config.h:184
consteval bool ON_WIN64()
Checks if compiling for 64-bit Windows.
Definition config.h:132
consteval bool ON_MACOS()
Checks if compiling for macOS platform.
Definition config.h:158
double floating
Double-precision floating-point type.
Definition config.h:331
Main namespace for the project Original.
Definition algorithms.h:21