X_COMMON_VERSION_MAJOR
#define X_COMMON_VERSION_MAJOR 1
STDX - Common Part of the STDX General Purpose C Library by marciovmf License: MIT https://github.com/marciovmf/stdx
Provides portable macros and types for different taks such as os detection, architecture detection, compiler detection, bit manipulation, dll export/import macros, assertions and more.
#define X_COMMON_VERSION_MAJOR 1
#define X_COMMON_VERSION_MINOR 0
#define X_COMMON_VERSION_PATCH 0
#define X_COMMON_VERSION(X_COMMON_VERSION_MAJOR *10000+X_COMMON_VERSION_MINOR *100+X_COMMON_VERSION_PATCH)
#define X_COMPILER_NAME "GCC"
#define X_COMPILER_VERSION __VERSION__
#define X_COMPILER_NAME "Microsoft Visual C/C++ Compiler"
#define X_COMPILER_VERSION _MSC_FULL_VER
#define X_COMPILER_NAME "Clang"
#define X_COMPILER_VERSION __clang_version__
#define X_COMPILER_NAME "Unknown"
#define X_COMPILER_VERSION "Unknown"
#define X_INLINE __inline
#define X_FORCEINLINE __forceinline
#define X_NOINLINE __declspec(noinline)
#define X_NORETURN __declspec(noreturn)
#define X_ALIGN(n) __declspec(align(n))
#define X_INLINE inline
#define X_FORCEINLINE inline __attribute__((always_inline))
#define X_NOINLINE __attribute__((noinline))
#define X_NORETURN __attribute__((noreturn))
#define X_ALIGN(n) __attribute__((aligned(n)))
#define X_ALIGN(n)
#define X_LIKELY(x) __builtin_expect(!!(x), 1)
#define X_UNLIKELY(x) __builtin_expect(!!(x), 0)
#define X_LIKELY(x) (x)
#define X_UNLIKELY(x) (x)
#define X_ARCH_X64 1
#define X_ARCH_X86 1
#define X_ARCH_ARM64 1
#define X_ARCH_ARM32 1
#define X_ARCH_UNKNOWN 1
#define X_OS_WINDOWS 1
#define X_PLAT_EXPORT __declspec(dllexport)
#define X_PLAT_IMPORT __declspec(dllimport)
#define PLAT_EXPORT __attribute__((visibility("default")))
#define X_STATIC_ASSERT(cond, msg) typedef char static_assert_##msg[(cond)?1:-1]
#define X_ASSERT(expr) \
do{\
if(!(expr)){\
fprintf(stderr, "Assertion failed: %s, file %s, line %d\n", #expr, __FILE__, __LINE__);\
abort();\
}\
}while(0)
#define X_ASSERT(expr) ((void)0)
#define X_BIG_ENDIAN 1
#define X_LITTLE_ENDIAN 1
#define X_PATH_SEPARATOR '\\'
#define X_PATH_SEPARATOR_ALTERNATIVE '/'
#define X_PATH_SEPARATOR '/'
#define X_PATH_SEPARATOR_ALTERNATIVE '\\'
#define X_BIT_SET(var, bit) ((var)|=(1U<<(bit)))
#define X_BIT_CLEAR(var, bit) ((var) &=~(1U<<(bit)))
#define X_BIT_TOGGLE(var, bit) ((var)^=(1U<<(bit)))
#define X_BIT_CHECK(var, bit) (((var) &(1U<<(bit)))!=0)
#define X_UNUSED(x) (void)(x)
#define X_VALUE_PTR(type, val) ((const void *) &(type){(val)})
#define X_VALUE_TYPE_PTR(type, val) ((const type *) &(type){(val)})
typedef struct XPtr_t XPtr;
struct XPtr_t{
int error;
void *ptr;
};
#define X_PTR_OK(p) ((XPtr){.error=0, .ptr=(p)})
#define X_PTR_ERR(e) ((XPtr){.error=(e), .ptr=0})
#define X_PTR_IS_ERR(r) ((r).error!=0)
#define X_PTR_IS_OK(r) ((r).error==0)
#define X_PTR_GET_PTR(r) ((r).is_error?NULL:(r).ptr)
#define X_PTR_GET_ERR(r) ((r).error)
#define X_PTR_CAST(r, T) ((r).is_error?NULL:(T)(r).ptr)
#define _CRT_SECURE_NO_WARNINGS 1
typedef int8_t i8;
typedef uint8_t u8;
typedef uint8_t byte;
typedef int16_t i16;
typedef uint16_t u16;
typedef int32_t i32;
typedef uint32_t u32;
typedef int64_t i64;
typedef uint64_t u64;
typedef struct XSize_t{
i32 w, h;
}XSize;
typedef struct XPoint_t{
i32 x, y;
}XPoint;
#define X_ARRAY_COUNT(a) (sizeof(a)/sizeof((a)[0]))