newtx/sdk/base/plat_types.h

196 lines
5.5 KiB
C

#pragma once
#if defined(WIN32) || defined(_WIN64)
#define OS_WIN 1
#else
#define OS_WIN 0
#endif
#include <math.h> // for fabs
#define SIZE_KB(n) ((long)(n) * 1024)
#define SIZE_MB(n) SIZE_KB((long)(n) * 1024)
#define SIZE_GB(n) SIZE_MB((long)(n) * 1024)
#define USEC_2_NS(us) ((long)(us) * 1000)
#define MSEC_2_US(ms) ((long)(ms) * 1000)
#define SEC_2_MS(s) ((long)(s) * 1000)
#define MSEC_2_NS(ms) USEC_2_NS(MSEC_2_US(ms))
#define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s))
#define SEC_2_NS(s) USEC_2_NS(SEC_2_US(s))
#define MM_PER_INCH 25.4f
#define IS_DOUBLE_EQUAL(a, b) fabs((a) - (b)) < .000001
#define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align))
#define ALIGN_INT(v) ALIGN_TO(v, sizeof(int))
#define CLEAN_ARRAY(a) memset(a, 0, sizeof(a))
#define BMP_LINE_BYTES(bits) (((bits) + 31) / 32 * 4)
#define RETURN_ENUM_STR(v, e) \
if(v == e) \
return #e;
////////////////////////////////////////////////////////////////////////////
// console definitions
enum console_color
{
COLOR_CHAR_BLACK = 0x30,
COLOR_CHAR_RED,
COLOR_CHAR_GREEN,
COLOR_CHAR_YELLOW,
COLOR_CHAR_BLUE,
COLOR_CHAR_MAGENTA,
COLOR_CHAR_CYAN,
COLOR_CHAR_WHITE,
COLOR_BKG_NONE = 0x3f,
COLOR_BKG_BLACK = 0x40,
COLOR_BKG_RED,
COLOR_BKG_GREEN,
COLOR_BKG_YELLOW,
COLOR_BKG_BLUE,
COLOR_BKG_MAGENTA,
COLOR_BKG_CYAN,
COLOR_BKG_WHITE,
};
enum console_display_mode
{
MODE_DEFAULT = 0,
MODE_HILIGHT,
MODE_DIM,
MODE_UNDER_LINE = 4,
MODE_BLINK,
MODE_REVERSE = 7,
MODE_HIDDEN,
MODE_NON_BOLD = 22,
MODE_NON_BLINK = 25,
MODE_NON_REVERSE = 27,
};
#if !OS_WIN // migrate codes from windows to linux ...
#include <unistd.h>
#include <stdint.h>
#include <sys/types.h>
#include <dlfcn.h>
#include <semaphore.h>
#pragma pack(push)
#pragma pack(1)
typedef struct BITMAPFILEHEADER
{
u_int16_t bfType;
u_int32_t bfSize;
u_int16_t bfReserved1;
u_int16_t bfReserved2;
u_int32_t bfOffBits;
}BITMAPFILEHEADER, *LPBITMAPFILEHEADER;
typedef struct BITMAPINFOHEADER
{
u_int32_t biSize;
u_int32_t biWidth;
u_int32_t biHeight;
u_int16_t biPlanes;
u_int16_t biBitCount;
u_int32_t biCompression;
u_int32_t biSizeImage;
u_int32_t biXPelsPerMeter;
u_int32_t biYPelsPerMeter;
u_int32_t biClrUsed;
u_int32_t biClrImportant;
}BITMAPINFOHEADER, *LPBITMAPINFOHEADER;
typedef struct _size
{
u_int32_t cx;
u_int32_t cy;
}SIZE, *LPSIZE;
typedef struct _point
{
u_int32_t x;
u_int32_t y;
}POINT, *LPPOINT;
#pragma pack(pop)
#define BI_RGB 0
#define MAKEWORD(a, b) (((a) & 0x0ff) | (((b) & 0x0ff) << 8))
#define MAKELONG(a, b) (((a) & 0x0ffff) | (((b) & 0x0ffff) << 16))
#define _countof(a) (sizeof(a) / sizeof((a)[0]))
typedef long LONG;
typedef void* HANDLE;
typedef void* HWND;
typedef void* HMODULE;
typedef void* LPVOID;
typedef void* FARPROC;
typedef unsigned int DWORD;
typedef unsigned short WORD;
typedef unsigned short UINT16;
typedef unsigned char BYTE;
typedef int BOOL;
#define TRUE 1
#define FALSE 0
#define MAX_PATH 256
#define huge
#define FAR
#define NEAR
#define LOWORD(v) ((v) & 0x0ffff)
#define HIWORD(v) (((v) >> 16) & 0x0ffff)
#define PASCAL __attribute__((stdcall))
#define _countof(a) (sizeof(a) / sizeof(a[0]))
#define LOAD_WITH_ALTERED_SEARCH_PATH RTLD_NOW
#define FreeLibrary dlclose
#define GetProcAddress dlsym
#define GetPrivateProfileIntW GetPrivateProfileIntA
#define lstrlenA strlen
#define lstrlenW strlen
#define DLL_EXTESION "so"
#define PATH_SEPARATOR "/"
#define STRICMP strcasecmp
#define MKDIR(a, b) mkdir(a, b)
#define STDCALL
#define ERROR_CANCELLED 1223
#define USB_TIMEOUT_INFINITE 0
#define FSEEK fseek
#define FTELL ftell
#define INVALID_HANDLE_VALUE ((HANDLE)(-1))
extern DWORD GetLastError(void);
extern DWORD GetPrivateProfileIntA(const char* app, const char* key, DWORD def, const char* file);
extern DWORD GetPrivateProfileStringA(const char* app, const char* key, const char* init, char* buf, size_t len, const char* file);
extern void Sleep(DWORD milliseconds);
extern int GetModuleFileNameA(HMODULE module, char* buf, size_t len); // NOTE: parameter 'module' is consinder as a part of the module file name
extern uint64_t GetCurrentProcessId(void);
extern uint64_t GetCurrentThreadId(void);
extern uint64_t GetCurrentThread(void);
#else
#include <Windows.h>
#define bzero(a, l) memset(a, 0, l)
#define DLL_EXTESION "dll"
#define PATH_SEPARATOR "\\"
#define STRICMP stricmp
#define MKDIR(a, b) mkdir(a)
#define STDCALL __stdcall
#define sem_t HANDLE
#define USB_TIMEOUT_INFINITE -1
#define FSEEK _fseeki64
#define FTELL _ftelli64
#define pid_t int
#define pthread_t HANDLE
#define _GLIBCXX_TXN_SAFE_DYN
#define _GLIBCXX_USE_NOEXCEPT
#endif
#include "words.h"