初始化工程 添加基础数据类型与宏

This commit is contained in:
2021-09-26 23:24:15 +08:00
commit dce84d24a4
10 changed files with 267 additions and 0 deletions

View File

@ -0,0 +1,3 @@
#pragma once
#include "CoreTypes.h"

View File

@ -0,0 +1,4 @@
#pragma once
#include "HAL/Platform.h"
#include "Misc/CoreDefines.h"

View File

@ -0,0 +1,122 @@
#pragma once
#include "Misc/CoreDefines.h"
#include <cstdint>
#include <cstdlib>
NS_REDCRAFT_BEGIN
// Function type macros.
#if PLATFORM_WINDOWS
#define VARARGS __cdecl
#define CDECL __cdecl
#define STDCALL __stdcall
#define FORCEINLINE __forceinline
#define FORCENOINLINE __declspec(noinline)
#define RESTRICT __restrict
#elif PLATFORM_LINUX
#define VARARGS
#define CDECL
#define STDCALL
#define FORCENOINLINE __attribute__((noinline))
#define RESTRICT __restrict
#if BUILD_DEBUG
#define FORCEINLINE inline
#else
#define FORCEINLINE inline __attribute__ ((always_inline))
#endif
#else
#define VARARGS
#define CDECL
#define STDCALL
#define FORCEINLINE
#define FORCENOINLINE
#define RESTRICT __restrict
#endif
// Alignment.
#if defined(__clang__)
#define GCC_PACK(n) __attribute__((packed,aligned(n)))
#define GCC_ALIGN(n) __attribute__((aligned(n)))
#if defined(_MSC_VER)
#define MS_ALIGN(n) __declspec(align(n))
#endif
#else
#define GCC_PACK(n)
#define GCC_ALIGN(n)
#define MS_ALIGN(n) __declspec(align(n))
#endif
// DLL export and import definitions
#if PLATFORM_WINDOWS
#define DLLEXPORT __declspec(dllexport)
#define DLLIMPORT __declspec(dllimport)
#elif PLATFORM_LINUX
#define DLLEXPORT __attribute__((visibility("default")))
#define DLLIMPORT __attribute__((visibility("default")))
#else
#define DLLEXPORT
#define DLLIMPORT
#endif
// Unsigned base types.
typedef std::uint8_t uint8;
typedef std::uint16_t uint16;
typedef std::uint32_t uint32;
typedef std::uint64_t uint64;
// Signed base types.
typedef std::int8_t int8;
typedef std::int16_t int16;
typedef std::int32_t int32;
typedef std::int64_t int64;
// Character types.
typedef char ANSICHAR;
typedef wchar_t WIDECHAR;
typedef WIDECHAR TCHAR;
// Pointer types
typedef std::uintptr_t uintptr_t;
typedef std::intptr_t intptr_t;
typedef std::size_t size_t;
typedef intptr_t ssize_t;
// Null types
typedef decltype(NULL) null_t;
typedef std::nullptr_t nullptr_t;
#if PLATFORM_LINUX
#define PLATFORM_TCHAR_IS_CHAR16 1
#else
#define PLATFORM_TCHAR_IS_CHAR16 0
#endif
// Define the TEXT macro.
#if PLATFORM_TCHAR_IS_CHAR16
#define TEXT_PASTE(x) u ## x
#else
#define TEXT_PASTE(x) L ## x
#endif
#define TEXT(x) TEXT_PASTE(x)
NS_REDCRAFT_END

View File

@ -0,0 +1,19 @@
#pragma once
#define NS_REDCRAFT RFur
#define NS_REDCRAFT_BEGIN namespace NS_REDCRAFT {
#define NS_REDCRAFT_END }
#define NS_REDCRAFT_USING using namespace NS_REDCRAFT;
#define NS_STD_BEGIN namespace std {
#define NS_STD_END }
#define NS_STD_USING using namespace std;
NS_REDCRAFT_BEGIN
enum { INDEX_NONE = -1 };
enum { UNICODE_BOM = 0xfeff };
enum EForceInit { ForceInit };
NS_REDCRAFT_END