Formatting code
This commit is contained in:
parent
6dc64ce76b
commit
13a8f07e32
37 changed files with 2242 additions and 2281 deletions
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace tp {
|
||||
void _assert_(const char* exp, const char* file, int line);
|
||||
void terminate(tp::alni code = 0);
|
||||
void terminate(tp::alni code = 0);
|
||||
};
|
||||
|
||||
#define FAIL(exp) tp::_assert_(#exp, __FILE__, __LINE__);
|
||||
|
|
|
|||
|
|
@ -6,54 +6,54 @@
|
|||
#include <initializer_list>
|
||||
|
||||
namespace tp {
|
||||
template<typename Type>
|
||||
using init_list = std::initializer_list<Type>;
|
||||
template<typename Type>
|
||||
using init_list = std::initializer_list<Type>;
|
||||
|
||||
// Selects whether to pass by constant reference or by value
|
||||
template <typename tType>
|
||||
using SelCopyArg = typename TypeSelect<(sizeof(tType) > sizeof(tp::alni)), const tType&, tType>::Result;
|
||||
// Selects whether to pass by constant reference or by value
|
||||
template <typename tType>
|
||||
using SelCopyArg = typename TypeSelect<(sizeof(tType) > sizeof(tp::alni)), const tType&, tType>::Result;
|
||||
|
||||
ualni next2pow(ualni v);
|
||||
uhalni next2pow(uhalni v);
|
||||
ufalni next2pow(ufalni v);
|
||||
ualni next2pow(ualni v);
|
||||
uhalni next2pow(uhalni v);
|
||||
ufalni next2pow(ufalni v);
|
||||
|
||||
ualni hash(const char* bytes);
|
||||
ualni hash(alni bytes);
|
||||
ualni hash(halni bytes);
|
||||
ualni hash(uhalni bytes);
|
||||
ualni hash(ualni bytes);
|
||||
ualni hash(alnf bytes);
|
||||
ualni hash(const char* bytes);
|
||||
ualni hash(alni bytes);
|
||||
ualni hash(halni bytes);
|
||||
ualni hash(uhalni bytes);
|
||||
ualni hash(ualni bytes);
|
||||
ualni hash(alnf bytes);
|
||||
|
||||
template <typename T>
|
||||
[[nodiscard]] T clamp(T v, T l, T u) { if (v < l) { v = l; } else if (v > u) { v = u; } return v; }
|
||||
template <typename T>
|
||||
[[nodiscard]] T clamp(T v, T l, T u) { if (v < l) { v = l; } else if (v > u) { v = u; } return v; }
|
||||
|
||||
template <typename T>
|
||||
[[nodiscard]] T max(T a, T b) { return (a > b) ? a : b; }
|
||||
template <typename T>
|
||||
[[nodiscard]] T max(T a, T b) { return (a > b) ? a : b; }
|
||||
|
||||
template <typename T>
|
||||
[[nodiscard]] T min(T a, T b) { return (a < b) ? a : b; }
|
||||
template <typename T>
|
||||
[[nodiscard]] T min(T a, T b) { return (a < b) ? a : b; }
|
||||
|
||||
template <typename T>
|
||||
[[nodiscard]] T abs(T v) { if (v < 0) { return -v; } return v; }
|
||||
template <typename T>
|
||||
[[nodiscard]] T abs(T v) { if (v < 0) { return -v; } return v; }
|
||||
|
||||
template <typename T>
|
||||
inline void swap(T& t1, T& t2) { const T tmp = t1; t1 = t2; t2 = tmp; }
|
||||
template <typename T>
|
||||
inline void swap(T& t1, T& t2) { const T tmp = t1; t1 = t2; t2 = tmp; }
|
||||
|
||||
// only for x > 0 and y > 0
|
||||
template <typename T>
|
||||
[[nodiscard]] T ceil_positive(T x, T y) { return T( 1 + ((x - 1) / (tp::alnf)y) ); }
|
||||
// only for x > 0 and y > 0
|
||||
template <typename T>
|
||||
[[nodiscard]] T ceil_positive(T x, T y) { return T( 1 + ((x - 1) / (tp::alnf)y) ); }
|
||||
|
||||
// power
|
||||
template <typename T>
|
||||
[[nodiscard]] T pow(T x, uhalni n) {
|
||||
T out = x; for (uhalni i = 0; i < n - 1; i++) { out = out * x; }
|
||||
return out;
|
||||
}
|
||||
// power
|
||||
template <typename T>
|
||||
[[nodiscard]] T pow(T x, uhalni n) {
|
||||
T out = x; for (uhalni i = 0; i < n - 1; i++) { out = out * x; }
|
||||
return out;
|
||||
}
|
||||
|
||||
template<typename Type>
|
||||
halni nDig10(Type val) {
|
||||
val = abs(val); halni out = 0;
|
||||
while (val != 0) { val = halni(val / 10); out++; }
|
||||
return out;
|
||||
}
|
||||
template<typename Type>
|
||||
halni nDig10(Type val) {
|
||||
val = abs(val); halni out = 0;
|
||||
while (val != 0) { val = halni(val / 10); out++; }
|
||||
return out;
|
||||
}
|
||||
}
|
||||
|
|
@ -6,138 +6,138 @@
|
|||
|
||||
namespace tp {
|
||||
|
||||
class Environment {
|
||||
public:
|
||||
class Environment {
|
||||
public:
|
||||
|
||||
enum class Arch { UNDEF, INTEL, ARM } mArch = Arch::UNDEF;
|
||||
enum class Arch { UNDEF, INTEL, ARM } mArch = Arch::UNDEF;
|
||||
|
||||
// Build Type
|
||||
#if defined(__DEBUG__) || defined(_DEBUG) || defined(DEBUG) || !defined(NDEBUG)
|
||||
#define ENV_BUILD_DEBUG
|
||||
enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::DEBUG;
|
||||
#else
|
||||
#define ENV_BUILD_RELEASE
|
||||
enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::RELEASE;
|
||||
#endif
|
||||
// Build Type
|
||||
#if defined(__DEBUG__) || defined(_DEBUG) || defined(DEBUG) || !defined(NDEBUG)
|
||||
#define ENV_BUILD_DEBUG
|
||||
enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::DEBUG;
|
||||
#else
|
||||
#define ENV_BUILD_RELEASE
|
||||
enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::RELEASE;
|
||||
#endif
|
||||
|
||||
// MCVS
|
||||
#ifdef _MSC_VER
|
||||
#define ENV_COMPILER_MSVC
|
||||
enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::MSVC;
|
||||
// MCVS
|
||||
#ifdef _MSC_VER
|
||||
#define ENV_COMPILER_MSVC
|
||||
enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::MSVC;
|
||||
|
||||
// VERSION
|
||||
// TODO
|
||||
// VERSION
|
||||
// TODO
|
||||
|
||||
// TARGET OS
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
#define ENV_OS_WINDOWS
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::WINDOWS;
|
||||
#else
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::UNDEF;
|
||||
#error "unexplored compilation to os target"
|
||||
#endif
|
||||
// TARGET OS
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
#define ENV_OS_WINDOWS
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::WINDOWS;
|
||||
#else
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::UNDEF;
|
||||
#error "unexplored compilation to os target"
|
||||
#endif
|
||||
|
||||
// TARGET ALIGNED SIZE
|
||||
#ifdef _WIN64
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64;
|
||||
#define ENV_BITS_64
|
||||
#else
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32;
|
||||
#define ENV_BITS_32
|
||||
#endif
|
||||
// TARGET ALIGNED SIZE
|
||||
#ifdef _WIN64
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64;
|
||||
#define ENV_BITS_64
|
||||
#else
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32;
|
||||
#define ENV_BITS_32
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// GCC
|
||||
#if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER)
|
||||
#define ENV_COMPILER_GCC
|
||||
enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::GNU;
|
||||
// GCC
|
||||
#if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER)
|
||||
#define ENV_COMPILER_GCC
|
||||
enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::GNU;
|
||||
|
||||
// VERSION
|
||||
#if (__GNUC___ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1))
|
||||
// TODO
|
||||
#endif
|
||||
// VERSION
|
||||
#if (__GNUC___ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1))
|
||||
// TODO
|
||||
#endif
|
||||
|
||||
// TARGET OS
|
||||
#if defined(__linux__) && !defined(__ANDROID__)
|
||||
#define ENV_OS_LINUX
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX;
|
||||
#else
|
||||
#error "unexplored compilation to os target"
|
||||
#endif
|
||||
// TARGET OS
|
||||
#if defined(__linux__) && !defined(__ANDROID__)
|
||||
#define ENV_OS_LINUX
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX;
|
||||
#else
|
||||
#error "unexplored compilation to os target"
|
||||
#endif
|
||||
|
||||
// TARGET ALIGNED SIZE
|
||||
#if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE)
|
||||
#define ENV_BITS_64
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64;
|
||||
#elif defined(__x86_64__) || defined(i386)
|
||||
#define ENV_BITS_32
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32;
|
||||
#endif
|
||||
// TARGET ALIGNED SIZE
|
||||
#if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE)
|
||||
#define ENV_BITS_64
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64;
|
||||
#elif defined(__x86_64__) || defined(i386)
|
||||
#define ENV_BITS_32
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// CLANG
|
||||
#if defined(__clang__) && !defined(ENV_COMPILER_GCC)
|
||||
#define ENV_COMPILER_CLANG
|
||||
enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::LLVM;
|
||||
// CLANG
|
||||
#if defined(__clang__) && !defined(ENV_COMPILER_GCC)
|
||||
#define ENV_COMPILER_CLANG
|
||||
enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::LLVM;
|
||||
|
||||
// VERSION
|
||||
#if (__clang_major__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1))
|
||||
// TODO
|
||||
#endif
|
||||
// VERSION
|
||||
#if (__clang_major__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1))
|
||||
// TODO
|
||||
#endif
|
||||
|
||||
// TARGET OS
|
||||
#if defined(__linux__) && !defined(__ANDROID__)
|
||||
#define ENV_OS_LINUX
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX;
|
||||
#elif defined(__ANDROID__)
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::ANDOID;
|
||||
#define ENV_OS_ANDROID
|
||||
#else
|
||||
#error "unexplored compilation to target os"
|
||||
#endif
|
||||
// TARGET OS
|
||||
#if defined(__linux__) && !defined(__ANDROID__)
|
||||
#define ENV_OS_LINUX
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX;
|
||||
#elif defined(__ANDROID__)
|
||||
enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::ANDOID;
|
||||
#define ENV_OS_ANDROID
|
||||
#else
|
||||
#error "unexplored compilation to target os"
|
||||
#endif
|
||||
|
||||
// TARGET ALIGNED SIZE
|
||||
#if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE)
|
||||
#define ENV_BITS_64
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64;
|
||||
#elif defined(__x86_64__) || defined(i386)
|
||||
#define ENV_BITS_32
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32;
|
||||
#endif
|
||||
// TARGET ALIGNED SIZE
|
||||
#if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE)
|
||||
#define ENV_BITS_64
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64;
|
||||
#elif defined(__x86_64__) || defined(i386)
|
||||
#define ENV_BITS_32
|
||||
enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__EMSCRIPTEN__) || defined(__MINGW32__) || defined(__MINGW32__) || defined(__MINGW64__)
|
||||
#error "compiler is not supported"
|
||||
#else
|
||||
#if !(defined(ENV_COMPILER_MSVC) || defined(ENV_COMPILER_CLANG) || defined(ENV_COMPILER_GCC))
|
||||
// Linux and Linux - derived __linux__
|
||||
// Darwin(Mac OS X and iOS) __APPLE__
|
||||
// Akaros __ros__
|
||||
// NaCL __native_client__
|
||||
// AsmJS __asmjs__
|
||||
// Fuschia __Fuchsia__
|
||||
#error "unknown compiler"
|
||||
#endif
|
||||
#endif
|
||||
#if defined(__EMSCRIPTEN__) || defined(__MINGW32__) || defined(__MINGW32__) || defined(__MINGW64__)
|
||||
#error "compiler is not supported"
|
||||
#else
|
||||
#if !(defined(ENV_COMPILER_MSVC) || defined(ENV_COMPILER_CLANG) || defined(ENV_COMPILER_GCC))
|
||||
// Linux and Linux - derived __linux__
|
||||
// Darwin(Mac OS X and iOS) __APPLE__
|
||||
// Akaros __ros__
|
||||
// NaCL __native_client__
|
||||
// AsmJS __asmjs__
|
||||
// Fuschia __Fuchsia__
|
||||
#error "unknown compiler"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void log() const;
|
||||
};
|
||||
void log() const;
|
||||
};
|
||||
|
||||
#ifndef ENV_BITS_64
|
||||
#error "ERROR - not 64 bit archytectures are out of support"
|
||||
#endif
|
||||
#ifndef ENV_BITS_64
|
||||
#error "ERROR - not 64 bit archytectures are out of support"
|
||||
#endif
|
||||
|
||||
const extern Environment gEnvironment;
|
||||
const extern Environment gEnvironment;
|
||||
|
||||
typedef char int1;
|
||||
typedef unsigned char uint1;
|
||||
typedef short int2;
|
||||
typedef unsigned short uint2;
|
||||
typedef unsigned int uint4;
|
||||
typedef uint2 ufalni;
|
||||
typedef uint2 ufalni;
|
||||
typedef uint4 uhalni;
|
||||
typedef int int4;
|
||||
typedef int4 halni;
|
||||
|
|
|
|||
|
|
@ -8,24 +8,24 @@
|
|||
|
||||
namespace tp {
|
||||
|
||||
class ModuleManifest {
|
||||
public:
|
||||
typedef bool (*ModuleInit)(const ModuleManifest*);
|
||||
typedef void (*ModuleDeinit)(const ModuleManifest*);
|
||||
class ModuleManifest {
|
||||
public:
|
||||
typedef bool (*ModuleInit)(const ModuleManifest*);
|
||||
typedef void (*ModuleDeinit)(const ModuleManifest*);
|
||||
|
||||
ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies);
|
||||
[[nodiscard]] bool isInitialized() const;
|
||||
bool initialize();
|
||||
void deinitialize();
|
||||
[[nodiscard]] const char* getName() const;
|
||||
private:
|
||||
const char* mModuleName = nullptr;
|
||||
ModuleManifest** mDependencies; // NULL terminated
|
||||
bool mInitialized = false;
|
||||
ModuleInit mInit = nullptr;
|
||||
ModuleDeinit mDeinit = nullptr;
|
||||
uhalni mInitCount = 0;
|
||||
};
|
||||
ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies);
|
||||
[[nodiscard]] bool isInitialized() const;
|
||||
bool initialize();
|
||||
void deinitialize();
|
||||
[[nodiscard]] const char* getName() const;
|
||||
private:
|
||||
const char* mModuleName = nullptr;
|
||||
ModuleManifest** mDependencies; // NULL terminated
|
||||
bool mInitialized = false;
|
||||
ModuleInit mInit = nullptr;
|
||||
ModuleDeinit mDeinit = nullptr;
|
||||
uhalni mInitCount = 0;
|
||||
};
|
||||
|
||||
extern ModuleManifest gModuleBase;
|
||||
extern ModuleManifest gModuleBase;
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue