63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <memory>
|
|
|
|
typedef int8_t i8;
|
|
typedef uint8_t u8;
|
|
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 float f32;
|
|
typedef double f64;
|
|
/// anonymous pointer without specified freeMembers() func
|
|
typedef void* Pointer;
|
|
|
|
#define nameof(V) #V
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma comment(lib, "mincore_downlevel.lib") // Support OS older than SDK
|
|
#define _CRT_SECURE_NO_WARNINGS 1
|
|
#define EXPORT __declspec(dllexport)
|
|
#define CALL __cdecl
|
|
#elif defined(__GNUC__)
|
|
#define EXPORT __attribute__((visibility("default")))
|
|
#if __SIZEOF_POINTER__ == 4
|
|
#define CALL __attribute__((__cdecl__))
|
|
#else
|
|
#define CALL
|
|
#endif
|
|
#ifndef typeof
|
|
#define typeof(X) __typeof__(X)
|
|
#endif
|
|
#else
|
|
#pragma GCC error "unknown compiler"
|
|
#endif
|
|
|
|
#define __count_args( \
|
|
a0, a1, a2, a3, a4, a5, a6, a7 , \
|
|
a8, a9, a10,a11,a12,a13,a14,a15, \
|
|
a16,a17,a18,a19,a20,a21,a22,a23, \
|
|
a24,a25,a26,a27,a28,a29,a30,a31, \
|
|
a32,a33,a34,a35,a36,a37,a38,a39, \
|
|
a40,a41,a42,a43,a44,a45,a46,a47, \
|
|
a48,a49,a50,a51,a52,a53,a54,a55, \
|
|
a56,a57,a58,a59,a60,a61,a62,a63, \
|
|
a64,...) a64
|
|
// Macro for counting variadic arguments (max 64)
|
|
// (see usage in kprint.h)
|
|
#define count_args(ARGS...) __count_args( \
|
|
ARGS, \
|
|
64,63,62,61,60,59,58,57, \
|
|
56,55,54,53,52,51,50,49, \
|
|
48,47,46,45,44,43,42,41, \
|
|
40,39,38,37,36,35,34,33, \
|
|
32,31,30,29,28,27,26,25, \
|
|
24,23,22,21,20,19,18,17, \
|
|
16,15,14,13,12,11,10,9, \
|
|
8, 7, 6, 5, 4, 3, 2, 1, 0)
|