diff options
Diffstat (limited to 'src/Globals.h')
-rw-r--r-- | src/Globals.h | 84 |
1 files changed, 52 insertions, 32 deletions
diff --git a/src/Globals.h b/src/Globals.h index 192969fa5..cdfea9e5a 100644 --- a/src/Globals.h +++ b/src/Globals.h @@ -75,39 +75,8 @@ #endif -#include <stddef.h> -// Integral types with predefined sizes: -typedef signed long long Int64; -typedef signed int Int32; -typedef signed short Int16; -typedef signed char Int8; - -typedef unsigned long long UInt64; -typedef unsigned int UInt32; -typedef unsigned short UInt16; -typedef unsigned char UInt8; - -typedef unsigned char Byte; -typedef Byte ColourID; - - -template <typename T, size_t Size> -class SizeChecker -{ - static_assert(sizeof(T) == Size, "Check the size of integral types"); -}; - -template class SizeChecker<Int64, 8>; -template class SizeChecker<Int32, 4>; -template class SizeChecker<Int16, 2>; -template class SizeChecker<Int8, 1>; - -template class SizeChecker<UInt64, 8>; -template class SizeChecker<UInt32, 4>; -template class SizeChecker<UInt16, 2>; -template class SizeChecker<UInt8, 1>; // A macro to disallow the copy constructor and operator = functions // This should be used in the declarations for any class that shouldn't allow copying itself @@ -130,6 +99,7 @@ template class SizeChecker<UInt8, 1>; + // OS-dependent stuff: #ifdef _WIN32 @@ -161,6 +131,7 @@ template class SizeChecker<UInt8, 1>; #include <cstdio> #include <cmath> #include <cstdarg> +#include <cstddef> @@ -188,10 +159,43 @@ template class SizeChecker<UInt8, 1>; #include <unordered_map> #include <unordered_set> #include <vector> +#include <variant> + +// Integral types with predefined sizes: +typedef signed long long Int64; +typedef signed int Int32; +typedef signed short Int16; +typedef signed char Int8; + +typedef unsigned long long UInt64; +typedef unsigned int UInt32; +typedef unsigned short UInt16; +typedef unsigned char UInt8; + +typedef unsigned char Byte; +typedef Byte ColourID; + + +template <typename T, size_t Size> +class SizeChecker +{ + static_assert(sizeof(T) == Size, "Check the size of integral types"); +}; + +template class SizeChecker<Int64, 8>; +template class SizeChecker<Int32, 4>; +template class SizeChecker<Int16, 2>; +template class SizeChecker<Int8, 1>; + +template class SizeChecker<UInt64, 8>; +template class SizeChecker<UInt32, 4>; +template class SizeChecker<UInt16, 2>; +template class SizeChecker<UInt8, 1>; + // Common headers (part 1, without macros): #include "fmt.h" #include "StringUtils.h" @@ -301,6 +305,20 @@ template class SizeChecker<UInt8, 1>; + +namespace cpp20 +{ + template <class T> + std::enable_if_t<std::is_array_v<T> && (std::extent_v<T> == 0), std::unique_ptr<T>> make_unique_for_overwrite(std::size_t a_Size) + { + return std::unique_ptr<T>(new std::remove_extent_t<T>[a_Size]); + } +} + + + + + /** Clamp X to the specified range. */ template <typename T> T Clamp(T a_Value, T a_Min, T a_Max) @@ -334,6 +352,9 @@ typename std::enable_if<std::is_arithmetic<T>::value, C>::type CeilC(T a_Value) using cTickTime = std::chrono::duration<int, std::ratio_multiply<std::chrono::milliseconds::period, std::ratio<50>>>; using cTickTimeLong = std::chrono::duration<Int64, cTickTime::period>; +using ContiguousByteBuffer = std::basic_string<std::byte>; +using ContiguousByteBufferView = std::basic_string_view<std::byte>; + #ifndef TOLUA_TEMPLATE_BIND #define TOLUA_TEMPLATE_BIND(x) #endif @@ -355,4 +376,3 @@ auto ToUnsigned(T a_Val) // Common headers (part 2, with macros): #include "Vector3.h" - |