147 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			147 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | #pragma once
 | ||
|  | 
 | ||
|  | /*! \file global.h
 | ||
|  |     \brief Provides basic functionality that's used all over the place. There's usually no need to manually include this. | ||
|  | */ | ||
|  | 
 | ||
|  | #include <stdbool.h>
 | ||
|  | #include <stdint.h>
 | ||
|  | 
 | ||
|  | #if defined(KINC_PPC)
 | ||
|  | #define KINC_BIG_ENDIAN
 | ||
|  | #else
 | ||
|  | #define KINC_LITTLE_ENDIAN
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if defined(KINC_PPC)
 | ||
|  | #define KINC_BIG_ENDIAN
 | ||
|  | #else
 | ||
|  | #define KINC_LITTLE_ENDIAN
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef _MSC_VER
 | ||
|  | #define KINC_INLINE static __forceinline
 | ||
|  | #else
 | ||
|  | #define KINC_INLINE static __attribute__((always_inline)) inline
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef _MSC_VER
 | ||
|  | #define KINC_MICROSOFT
 | ||
|  | #define KINC_MICROSOFT
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if defined(_WIN32)
 | ||
|  | 
 | ||
|  | #if defined(KINC_WINDOWSAPP)
 | ||
|  | 
 | ||
|  | #define KINC_WINDOWSAPP
 | ||
|  | 
 | ||
|  | #else
 | ||
|  | 
 | ||
|  | #ifndef KINC_CONSOLE
 | ||
|  | #define KINC_WINDOWS
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #elif defined(__APPLE__)
 | ||
|  | 
 | ||
|  | #include <TargetConditionals.h>
 | ||
|  | 
 | ||
|  | #if TARGET_OS_IPHONE
 | ||
|  | 
 | ||
|  | #if !defined(KINC_TVOS)
 | ||
|  | #define KINC_IOS
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define KINC_APPLE_SOC
 | ||
|  | 
 | ||
|  | #else
 | ||
|  | 
 | ||
|  | #define KINC_MACOS
 | ||
|  | 
 | ||
|  | #if defined(__arm64__)
 | ||
|  | #define KINC_APPLE_SOC
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define KINC_POSIX
 | ||
|  | 
 | ||
|  | #elif defined(__linux__)
 | ||
|  | 
 | ||
|  | #if !defined(KINC_ANDROID)
 | ||
|  | #define KINC_LINUX
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define KINC_POSIX
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef KINC_WINDOWS
 | ||
|  | #if defined(KINC_DYNAMIC)
 | ||
|  | #define KINC_FUNC __declspec(dllimport)
 | ||
|  | #elif defined(KINC_DYNAMIC_COMPILE)
 | ||
|  | #define KINC_FUNC __declspec(dllexport)
 | ||
|  | #else
 | ||
|  | #define KINC_FUNC
 | ||
|  | #endif
 | ||
|  | #else
 | ||
|  | #define KINC_FUNC
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | 
 | ||
|  | namespace Kore { | ||
|  | 	typedef unsigned char u8;   // 1 Byte
 | ||
|  | 	typedef unsigned short u16; // 2 Byte
 | ||
|  | 	typedef unsigned int u32;   // 4 Byte
 | ||
|  | 
 | ||
|  | #if defined(__LP64__) || defined(_LP64) || defined(_WIN64)
 | ||
|  | #define KINC_64
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef KINC_WINDOWS
 | ||
|  | 	typedef unsigned __int64 u64; // 8 Byte
 | ||
|  | #else
 | ||
|  | 	typedef unsigned long long u64; | ||
|  | #endif
 | ||
|  | 	typedef char s8;   // 1 Byte
 | ||
|  | 	typedef short s16; // 2 Byte
 | ||
|  | 	typedef int s32;   // 4 Byte
 | ||
|  | #ifdef KINC_WINDOWS
 | ||
|  | 	typedef __int64 s64; // 8 Byte
 | ||
|  | #else
 | ||
|  | 	typedef long long s64; | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 	typedef u32 uint; // 4 Byte
 | ||
|  | 	typedef s32 sint; // 4 Byte
 | ||
|  | 
 | ||
|  | #ifdef KINC_64
 | ||
|  | 	typedef s64 spint; | ||
|  | 	typedef u64 upint; | ||
|  | #else
 | ||
|  | 	typedef s32 spint; | ||
|  | 	typedef u32 upint; | ||
|  | #endif
 | ||
|  | } | ||
|  | 
 | ||
|  | // pseudo C++11
 | ||
|  | #if !defined(_MSC_VER) && __cplusplus <= 199711L
 | ||
|  | #define nullptr 0
 | ||
|  | #define override
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define Noexcept throw()
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | int kickstart(int argc, char **argv); | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 |