#pragma once #if defined(WIN32) || defined(_WIN64) #define OS_WIN 1 #else #define OS_WIN 0 #endif #define SIZE_KB(n) ((n) * 1024) #define SIZE_MB(n) SIZE_KB(n * 1024) #define SIZE_GB(n) SIZE_MB(n * 1024) #define SEC_2_MS(s) ((s) * 1000) #define MSEC_2_US(ms) ((ms) * 1000) #define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s)) #define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align)) #define ALIGN_INT(v) ALIGN_TO(v, sizeof(int)) #define RETURN_ENUM_STR(v, e) \ if(v == e) \ return #e; #if !OS_WIN // migrate codes from windows to linux ... #include #include #include #include #include #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; 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; }BITMAPINFODEADER; #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); #else #include #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 #endif