#pragma once #if defined(WIN32) || defined(_WIN64) #define OS_WIN 1 #else #define OS_WIN 0 #endif #include // 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 #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, *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 #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"