Fix warnings in android build, fix font rendering issue, fix issue 357588: wrong...
[pdfium.git] / core / include / fxcrt / fx_system.h
index f72be0f..9f43360 100644 (file)
-// Copyright 2014 PDFium Authors. All rights reserved.\r
-// Use of this source code is governed by a BSD-style license that can be\r
-// found in the LICENSE file.\r
\r
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
-\r
-#ifndef _FX_SYSTEM_H_\r
-#define _FX_SYSTEM_H_\r
-#define _FX_WIN32_DESKTOP_             1\r
-#define _FX_LINUX_DESKTOP_             4\r
-#define _FX_MACOSX_                            7\r
-#define _FX_ANDROID_                   12\r
-#define _FXM_PLATFORM_WINDOWS_         1\r
-#define _FXM_PLATFORM_LINUX_           2\r
-#define _FXM_PLATFORM_APPLE_           3\r
-#define _FXM_PLATFORM_ANDROID_         4\r
-#ifndef _FX_OS_\r
-#if defined(__ANDROID__)\r
-#define _FX_OS_ _FX_ANDROID_\r
-#define _FXM_PLATFORM_ _FXM_PLATFORM_ANDROID_\r
-#elif defined(_WIN32) || defined(_WIN64)\r
-#define _FX_OS_ _FX_WIN32_DESKTOP_\r
-#define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_\r
-#elif defined(__linux__)\r
-#define _FX_OS_ _FX_LINUX_DESKTOP_\r
-#define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_\r
-#elif defined(__APPLE__)\r
-#define _FX_OS_ _FX_MACOSX_\r
-#define _FXM_PLATFORM_ _FXM_PLATFORM_APPLE_\r
-#endif\r
-#endif\r
-#if !defined(_FX_OS_) || _FX_OS_ == 0\r
-#error Sorry, can not figure out what OS you are targeting to. Please specify _FX_OS_ macro.\r
-#endif\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_\r
-#define _CRT_SECURE_NO_WARNINGS\r
-#include <windows.h>\r
-#endif\r
-#define _FX_W32_               1\r
-#define _FX_W64_               2\r
-#ifndef _FX_WORDSIZE_\r
-#if defined(_WIN64) || defined(__arm64) || defined(__arm64__) || defined(_M_AMD64) || defined(_M_X64) || defined(_M_IA64) || defined(__powerpc64__) || defined(__x86_64__) || __WORDSIZE == 64\r
-#define _FX_WORDSIZE_  _FX_W64_\r
-#else\r
-#define _FX_WORDSIZE_  _FX_W32_\r
-#endif\r
-#endif\r
-#include <stddef.h>\r
-#include <stdarg.h>\r
-#include <setjmp.h>\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <assert.h>\r
-#include <wchar.h>\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_\r
-#include <libkern/OSAtomic.h>\r
-#if _FX_OS_ == _FX_MACOSX_\r
-#include <Carbon/Carbon.h>\r
-#elif _FX_OS_ == _FX_IOS_\r
-#include <CoreText/CoreText.h>\r
-#include <CoreGraphics/CoreGraphics.h>\r
-#endif\r
-#endif\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-typedef void*                                  FX_LPVOID;\r
-typedef void const*                            FX_LPCVOID;\r
-typedef void*                                  FX_POSITION;\r
-typedef signed char                            FX_INT8;\r
-typedef unsigned char                  FX_UINT8;\r
-typedef unsigned char                  FX_BYTE;\r
-typedef unsigned char*                 FX_LPBYTE;\r
-typedef unsigned char const*   FX_LPCBYTE;\r
-typedef short                                  FX_INT16;\r
-typedef unsigned short                 FX_UINT16;\r
-typedef short                                  FX_SHORT;\r
-typedef unsigned short                 FX_WORD;\r
-typedef unsigned short*                        FX_LPWORD;\r
-typedef unsigned short const*  FX_LPCWORD;\r
-typedef int                                            FX_INT32;\r
-typedef float                                  FX_FLOAT;\r
-typedef int                                            FX_BOOL;\r
-typedef int                                            FX_ERR;\r
-#define FX_SUCCEEDED(Status)   ((FX_ERR)(Status) >= 0)\r
-#define FX_FAILED(Status)              ((FX_ERR)(Status) < 0)\r
-typedef char                                   FX_CHAR;\r
-typedef char*                                  FX_LPSTR;\r
-typedef char const*                            FX_LPCSTR;\r
-typedef unsigned int           FX_DWORD;\r
-typedef unsigned int*          FX_LPDWORD;\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_\r
-typedef __int64                                FX_INT64;\r
-typedef unsigned __int64       FX_UINT64;\r
-#else\r
-typedef long long int          FX_INT64;\r
-typedef unsigned long long     FX_UINT64;\r
-#endif\r
-#if _FX_WORDSIZE_ == _FX_W64_\r
-typedef FX_INT64                       FX_INTPTR;\r
-typedef FX_UINT64                      FX_UINTPTR;\r
-#else\r
-typedef int                                    FX_INTPTR;\r
-typedef unsigned int           FX_UINTPTR;\r
-#endif\r
-typedef wchar_t                                        FX_WCHAR;\r
-typedef wchar_t*                               FX_LPWSTR;\r
-typedef wchar_t const*                 FX_LPCWSTR;\r
-typedef FX_DWORD                               FX_UINT32;\r
-typedef FX_UINT64                              FX_QWORD;\r
-#define FX_DEFINEHANDLE(name)  typedef struct _##name {FX_LPVOID pData;} * name;\r
-#if defined(DEBUG) && !defined(_DEBUG)\r
-#define _DEBUG\r
-#endif\r
-#ifndef TRUE\r
-\r
-#define TRUE   1\r
-#endif\r
-#ifndef FALSE\r
-\r
-#define FALSE  0\r
-#endif\r
-#ifndef NULL\r
-\r
-#define NULL   0\r
-#endif\r
-#define FXSYS_assert assert\r
-#ifndef ASSERT\r
-#ifdef _DEBUG\r
-#define ASSERT FXSYS_assert\r
-#else\r
-\r
-#define ASSERT(a)\r
-#endif\r
-#endif\r
-#define FX_MAX(a, b) (((a) > (b)) ? (a) : (b))\r
-#define FX_MIN(a, b) (((a) < (b)) ? (a) : (b))\r
-#define FX_PI  3.1415926535897932384626433832795f\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_\r
-#define FXSYS_snprintf _snprintf\r
-#else\r
-#define FXSYS_snprintf snprintf\r
-#endif\r
-#define FXSYS_sprintf  sprintf\r
-#define FXSYS_vsprintf vsprintf\r
-#define FXSYS_strchr   strchr\r
-#define FXSYS_strlen   strlen\r
-#define FXSYS_strncmp  strncmp\r
-#define FXSYS_strcmp   strcmp\r
-#define FXSYS_strcpy   strcpy\r
-#define FXSYS_strncpy  strncpy\r
-#define FXSYS_strstr   strstr\r
-#define FXSYS_FILE             FILE\r
-#define FXSYS_fopen            fopen\r
-#define FXSYS_fclose   fclose\r
-#define FXSYS_SEEK_END SEEK_END\r
-#define FXSYS_SEEK_SET SEEK_SET\r
-#define FXSYS_fseek            fseek\r
-#define FXSYS_ftell            ftell\r
-#define FXSYS_fread            fread\r
-#define FXSYS_fwrite   fwrite\r
-#define FXSYS_fprintf  fprintf\r
-#define FXSYS_fflush   fflush\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_\r
-#ifdef _NATIVE_WCHAR_T_DEFINED\r
-#define FXSYS_wfopen(f, m) _wfopen((const wchar_t*)(f), (const wchar_t*)(m))\r
-#else\r
-#define FXSYS_wfopen _wfopen\r
-#endif\r
-#else\r
-FXSYS_FILE* FXSYS_wfopen(FX_LPCWSTR filename, FX_LPCWSTR mode);\r
-#endif\r
-\r
-#define FXSYS_wcslen   wcslen\r
-#define FXSYS_wcscmp   wcscmp\r
-#define FXSYS_wcschr   wcschr\r
-#define FXSYS_wcsstr   wcsstr\r
-#define FXSYS_wcsncmp  wcsncmp\r
-#define FXSYS_vswprintf        vswprintf\r
-#define FXSYS_mbstowcs mbstowcs\r
-#define FXSYS_wcstombs wcstombs\r
-#define FXSYS_memcmp   memcmp\r
-#define FXSYS_memcpy   memcpy\r
-#define FXSYS_memmove  memmove\r
-#define FXSYS_memset   memset\r
-#define FXSYS_memchr   memchr\r
-#define FXSYS_qsort            qsort\r
-#define FXSYS_bsearch  bsearch\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_\r
-#define FXSYS_GetACP GetACP\r
-#define FXSYS_itoa _itoa\r
-#define FXSYS_strlwr _strlwr\r
-#define FXSYS_strupr _strupr\r
-#define FXSYS_stricmp _stricmp\r
-#ifdef _NATIVE_WCHAR_T_DEFINED\r
-#define FXSYS_wcsicmp(str1, str2) _wcsicmp((wchar_t*)(str1), (wchar_t*)(str2))\r
-#define FXSYS_WideCharToMultiByte(p1, p2, p3, p4, p5, p6, p7, p8) WideCharToMultiByte(p1, p2, (const wchar_t*)(p3), p4, p5, p6, p7, p8)\r
-#define FXSYS_MultiByteToWideChar(p1, p2, p3, p4, p5, p6) MultiByteToWideChar(p1, p2, p3, p4, (wchar_t*)(p5), p6)\r
-#define FXSYS_wcslwr(str) _wcslwr((wchar_t*)(str))\r
-#define FXSYS_wcsupr(str) _wcsupr((wchar_t*)(str))\r
-#else\r
-#define FXSYS_wcsicmp _wcsicmp\r
-#define FXSYS_WideCharToMultiByte WideCharToMultiByte\r
-#define FXSYS_MultiByteToWideChar MultiByteToWideChar\r
-#define FXSYS_wcslwr _wcslwr\r
-#define FXSYS_wcsupr _wcsupr\r
-#endif\r
-#define FXSYS_GetFullPathName GetFullPathName\r
-#define FXSYS_GetModuleFileName GetModuleFileName\r
-#else\r
-int                    FXSYS_GetACP(void);\r
-char*          FXSYS_itoa(int value, char* string, int radix);\r
-int                    FXSYS_WideCharToMultiByte(FX_DWORD codepage, FX_DWORD dwFlags, const wchar_t* wstr, int wlen,\r
-                                      char* buf, int buflen, const char* default_str, int* pUseDefault);\r
-int                    FXSYS_MultiByteToWideChar(FX_DWORD codepage, FX_DWORD dwFlags, const char* bstr, int blen,\r
-                                      wchar_t* buf, int buflen);\r
-FX_DWORD       FXSYS_GetFullPathName(const char* filename, FX_DWORD buflen, char* buf, char** filepart);\r
-FX_DWORD       FXSYS_GetModuleFileName(void* hModule, char* buf, FX_DWORD bufsize);\r
-char*          FXSYS_strlwr(char* str);\r
-char*          FXSYS_strupr(char* str);\r
-int                    FXSYS_stricmp(const char*, const char*);\r
-int                    FXSYS_wcsicmp(const wchar_t *string1, const wchar_t *string2);\r
-wchar_t*       FXSYS_wcslwr(wchar_t* str);\r
-wchar_t*       FXSYS_wcsupr(wchar_t* str);\r
-#endif\r
-#define FXSYS_memcpy32         FXSYS_memcpy\r
-#define FXSYS_memcmp32         FXSYS_memcmp\r
-#define FXSYS_memset32         FXSYS_memset\r
-#define FXSYS_memset8          FXSYS_memset\r
-#define FXSYS_memmove32                FXSYS_memmove\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-#include <math.h>\r
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_\r
-#define FXSYS_pow(a, b)                (FX_FLOAT)powf(a, b)\r
-#else\r
-#define FXSYS_pow(a, b)                (FX_FLOAT)pow(a, b)\r
-#endif\r
-#define FXSYS_sqrt(a)          (FX_FLOAT)sqrt(a)\r
-#define FXSYS_fabs(a)          (FX_FLOAT)fabs(a)\r
-#define FXSYS_atan2(a, b)      (FX_FLOAT)atan2(a, b)\r
-#define FXSYS_ceil(a)          (FX_FLOAT)ceil(a)\r
-#define FXSYS_floor(a)         (FX_FLOAT)floor(a)\r
-#define FXSYS_cos(a)           (FX_FLOAT)cos(a)\r
-#define FXSYS_acos(a)          (FX_FLOAT)acos(a)\r
-#define FXSYS_sin(a)           (FX_FLOAT)sin(a)\r
-#define FXSYS_log(a)           (FX_FLOAT)log(a)\r
-#define FXSYS_log10(a)         (FX_FLOAT)log10(a)\r
-#define FXSYS_fmod(a, b)       (FX_FLOAT)fmod(a, b)\r
-#define FXSYS_abs                      abs\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-#define _FX_LSB_FIRST_\r
-#define FXDWORD_FROM_LSBFIRST(i)       (i)\r
-#define FXDWORD_FROM_MSBFIRST(i)       (((FX_BYTE)(i) << 24) | ((FX_BYTE)((i) >> 8) << 16) | ((FX_BYTE)((i) >> 16) << 8) | (FX_BYTE)((i) >> 24))\r
-#define FXDWORD_GET_LSBFIRST(p)                ((((FX_LPBYTE)(p))[3] << 24) | (((FX_LPBYTE)(p))[2] << 16) | (((FX_LPBYTE)(p))[1] << 8) | (((FX_LPBYTE)(p))[0]))\r
-#define FXDWORD_GET_MSBFIRST(p) ((((FX_LPBYTE)(p))[0] << 24) | (((FX_LPBYTE)(p))[1] << 16) | (((FX_LPBYTE)(p))[2] << 8) | (((FX_LPBYTE)(p))[3]))\r
-#define FXSYS_HIBYTE(word)     ((FX_BYTE)((word) >> 8))\r
-#define FXSYS_LOBYTE(word)     ((FX_BYTE)(word))\r
-#define FXSYS_HIWORD(dword)    ((FX_WORD)((dword) >> 16))\r
-#define FXSYS_LOWORD(dword)    ((FX_WORD)(dword))\r
-FX_INT32       FXSYS_atoi(FX_LPCSTR str);\r
-FX_INT32       FXSYS_wtoi(FX_LPCWSTR str);\r
-FX_INT64       FXSYS_atoi64(FX_LPCSTR str);\r
-FX_INT64       FXSYS_wtoi64(FX_LPCWSTR str);\r
-FX_LPCSTR      FXSYS_i64toa(FX_INT64 value, FX_LPSTR str, int radix);\r
-FX_LPCWSTR     FXSYS_i64tow(FX_INT64 value, FX_LPWSTR str, int radix);\r
-int                    FXSYS_round(FX_FLOAT f);\r
-#define                FXSYS_Mul(a, b) ((a) * (b))\r
-#define                FXSYS_Div(a, b) ((a) / (b))\r
-#define                FXSYS_MulDiv(a, b, c) ((a) * (b) / (c))\r
-#define                FXSYS_sqrt2(a, b) (FX_FLOAT)FXSYS_sqrt((a)*(a) + (b)*(b))\r
-#ifdef __cplusplus\r
-};\r
-#endif\r
-#endif\r
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef _FX_SYSTEM_H_
+#define _FX_SYSTEM_H_
+#define _FX_WIN32_DESKTOP_             1
+#define _FX_LINUX_DESKTOP_             4
+#define _FX_MACOSX_                            7
+#define _FX_ANDROID_                   12
+#define _FXM_PLATFORM_WINDOWS_         1
+#define _FXM_PLATFORM_LINUX_           2
+#define _FXM_PLATFORM_APPLE_           3
+#define _FXM_PLATFORM_ANDROID_         4
+#ifndef _FX_OS_
+#if defined(__ANDROID__)
+#define _FX_OS_ _FX_ANDROID_
+#define _FXM_PLATFORM_ _FXM_PLATFORM_ANDROID_
+#elif defined(_WIN32) || defined(_WIN64)
+#define _FX_OS_ _FX_WIN32_DESKTOP_
+#define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_
+#elif defined(__linux__)
+#define _FX_OS_ _FX_LINUX_DESKTOP_
+#define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_
+#elif defined(__APPLE__)
+#define _FX_OS_ _FX_MACOSX_
+#define _FXM_PLATFORM_ _FXM_PLATFORM_APPLE_
+#endif
+#endif
+#if !defined(_FX_OS_) || _FX_OS_ == 0
+#error Sorry, can not figure out what OS you are targeting to. Please specify _FX_OS_ macro.
+#endif
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+#define _CRT_SECURE_NO_WARNINGS
+#include <windows.h>
+#endif
+#define _FX_W32_               1
+#define _FX_W64_               2
+#ifndef _FX_WORDSIZE_
+#if defined(_WIN64) || defined(__arm64) || defined(__arm64__) || defined(_M_AMD64) || defined(_M_X64) || defined(_M_IA64) || defined(__powerpc64__) || defined(__x86_64__) || __WORDSIZE == 64 || defined(__LP64__)
+#define _FX_WORDSIZE_  _FX_W64_
+#else
+#define _FX_WORDSIZE_  _FX_W32_
+#endif
+#endif
+#include <stddef.h>
+#include <stdarg.h>
+#include <setjmp.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <wchar.h>
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+#include <libkern/OSAtomic.h>
+#if _FX_OS_ == _FX_MACOSX_
+#include <Carbon/Carbon.h>
+#elif _FX_OS_ == _FX_IOS_
+#include <CoreText/CoreText.h>
+#include <CoreGraphics/CoreGraphics.h>
+#endif
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef void*                                  FX_LPVOID;
+typedef void const*                            FX_LPCVOID;
+typedef void*                                  FX_POSITION;
+typedef signed char                            FX_INT8;
+typedef unsigned char                  FX_UINT8;
+typedef unsigned char                  FX_BYTE;
+typedef unsigned char*                 FX_LPBYTE;
+typedef unsigned char const*   FX_LPCBYTE;
+typedef short                                  FX_INT16;
+typedef unsigned short                 FX_UINT16;
+typedef short                                  FX_SHORT;
+typedef unsigned short                 FX_WORD;
+typedef unsigned short*                        FX_LPWORD;
+typedef unsigned short const*  FX_LPCWORD;
+typedef int                                            FX_INT32;
+typedef float                                  FX_FLOAT;
+typedef int                                            FX_BOOL;
+typedef int                                            FX_ERR;
+#define FX_SUCCEEDED(Status)   ((FX_ERR)(Status) >= 0)
+#define FX_FAILED(Status)              ((FX_ERR)(Status) < 0)
+typedef char                                   FX_CHAR;
+typedef char*                                  FX_LPSTR;
+typedef char const*                            FX_LPCSTR;
+typedef unsigned int           FX_DWORD;
+typedef unsigned int*          FX_LPDWORD;
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+typedef __int64                                FX_INT64;
+typedef unsigned __int64       FX_UINT64;
+#else
+typedef long long int          FX_INT64;
+typedef unsigned long long     FX_UINT64;
+#endif
+#if _FX_WORDSIZE_ == _FX_W64_
+typedef FX_INT64                       FX_INTPTR;
+typedef FX_UINT64                      FX_UINTPTR;
+#else
+typedef int                                    FX_INTPTR;
+typedef unsigned int           FX_UINTPTR;
+#endif
+typedef wchar_t                                        FX_WCHAR;
+typedef wchar_t*                               FX_LPWSTR;
+typedef wchar_t const*                 FX_LPCWSTR;
+typedef FX_DWORD                               FX_UINT32;
+typedef FX_UINT64                              FX_QWORD;
+#define FX_DEFINEHANDLE(name)  typedef struct _##name {FX_LPVOID pData;} * name;
+#if defined(DEBUG) && !defined(_DEBUG)
+#define _DEBUG
+#endif
+#ifndef TRUE
+
+#define TRUE   1
+#endif
+#ifndef FALSE
+
+#define FALSE  0
+#endif
+#ifndef NULL
+
+#define NULL   0
+#endif
+#define FXSYS_assert assert
+#ifndef ASSERT
+#ifdef _DEBUG
+#define ASSERT FXSYS_assert
+#else
+
+#define ASSERT(a)
+#endif
+#endif
+#define FX_MAX(a, b) (((a) > (b)) ? (a) : (b))
+#define FX_MIN(a, b) (((a) < (b)) ? (a) : (b))
+#define FX_PI  3.1415926535897932384626433832795f
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+#define FXSYS_snprintf _snprintf
+#else
+#define FXSYS_snprintf snprintf
+#endif
+#define FXSYS_sprintf  sprintf
+#define FXSYS_vsprintf vsprintf
+#define FXSYS_strchr   strchr
+#define FXSYS_strlen   strlen
+#define FXSYS_strncmp  strncmp
+#define FXSYS_strcmp   strcmp
+#define FXSYS_strcpy   strcpy
+#define FXSYS_strncpy  strncpy
+#define FXSYS_strstr   strstr
+#define FXSYS_FILE             FILE
+#define FXSYS_fopen            fopen
+#define FXSYS_fclose   fclose
+#define FXSYS_SEEK_END SEEK_END
+#define FXSYS_SEEK_SET SEEK_SET
+#define FXSYS_fseek            fseek
+#define FXSYS_ftell            ftell
+#define FXSYS_fread            fread
+#define FXSYS_fwrite   fwrite
+#define FXSYS_fprintf  fprintf
+#define FXSYS_fflush   fflush
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+#ifdef _NATIVE_WCHAR_T_DEFINED
+#define FXSYS_wfopen(f, m) _wfopen((const wchar_t*)(f), (const wchar_t*)(m))
+#else
+#define FXSYS_wfopen _wfopen
+#endif
+#else
+FXSYS_FILE* FXSYS_wfopen(FX_LPCWSTR filename, FX_LPCWSTR mode);
+#endif
+
+#define FXSYS_wcslen   wcslen
+#define FXSYS_wcscmp   wcscmp
+#define FXSYS_wcschr   wcschr
+#define FXSYS_wcsstr   wcsstr
+#define FXSYS_wcsncmp  wcsncmp
+#define FXSYS_vswprintf        vswprintf
+#define FXSYS_mbstowcs mbstowcs
+#define FXSYS_wcstombs wcstombs
+#define FXSYS_memcmp   memcmp
+#define FXSYS_memcpy   memcpy
+#define FXSYS_memmove  memmove
+#define FXSYS_memset   memset
+#define FXSYS_memchr   memchr
+#define FXSYS_qsort            qsort
+#define FXSYS_bsearch  bsearch
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+#define FXSYS_GetACP GetACP
+#define FXSYS_itoa _itoa
+#define FXSYS_strlwr _strlwr
+#define FXSYS_strupr _strupr
+#define FXSYS_stricmp _stricmp
+#ifdef _NATIVE_WCHAR_T_DEFINED
+#define FXSYS_wcsicmp(str1, str2) _wcsicmp((wchar_t*)(str1), (wchar_t*)(str2))
+#define FXSYS_WideCharToMultiByte(p1, p2, p3, p4, p5, p6, p7, p8) WideCharToMultiByte(p1, p2, (const wchar_t*)(p3), p4, p5, p6, p7, p8)
+#define FXSYS_MultiByteToWideChar(p1, p2, p3, p4, p5, p6) MultiByteToWideChar(p1, p2, p3, p4, (wchar_t*)(p5), p6)
+#define FXSYS_wcslwr(str) _wcslwr((wchar_t*)(str))
+#define FXSYS_wcsupr(str) _wcsupr((wchar_t*)(str))
+#else
+#define FXSYS_wcsicmp _wcsicmp
+#define FXSYS_WideCharToMultiByte WideCharToMultiByte
+#define FXSYS_MultiByteToWideChar MultiByteToWideChar
+#define FXSYS_wcslwr _wcslwr
+#define FXSYS_wcsupr _wcsupr
+#endif
+#define FXSYS_GetFullPathName GetFullPathName
+#define FXSYS_GetModuleFileName GetModuleFileName
+#else
+int                    FXSYS_GetACP(void);
+char*          FXSYS_itoa(int value, char* string, int radix);
+int                    FXSYS_WideCharToMultiByte(FX_DWORD codepage, FX_DWORD dwFlags, const wchar_t* wstr, int wlen,
+                                      char* buf, int buflen, const char* default_str, int* pUseDefault);
+int                    FXSYS_MultiByteToWideChar(FX_DWORD codepage, FX_DWORD dwFlags, const char* bstr, int blen,
+                                      wchar_t* buf, int buflen);
+FX_DWORD       FXSYS_GetFullPathName(const char* filename, FX_DWORD buflen, char* buf, char** filepart);
+FX_DWORD       FXSYS_GetModuleFileName(void* hModule, char* buf, FX_DWORD bufsize);
+char*          FXSYS_strlwr(char* str);
+char*          FXSYS_strupr(char* str);
+int                    FXSYS_stricmp(const char*, const char*);
+int                    FXSYS_wcsicmp(const wchar_t *string1, const wchar_t *string2);
+wchar_t*       FXSYS_wcslwr(wchar_t* str);
+wchar_t*       FXSYS_wcsupr(wchar_t* str);
+#endif
+#define FXSYS_memcpy32         FXSYS_memcpy
+#define FXSYS_memcmp32         FXSYS_memcmp
+#define FXSYS_memset32         FXSYS_memset
+#define FXSYS_memset8          FXSYS_memset
+#define FXSYS_memmove32                FXSYS_memmove
+#ifdef __cplusplus
+}
+#endif
+#include <math.h>
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+#define FXSYS_pow(a, b)                (FX_FLOAT)powf(a, b)
+#else
+#define FXSYS_pow(a, b)                (FX_FLOAT)pow(a, b)
+#endif
+#define FXSYS_sqrt(a)          (FX_FLOAT)sqrt(a)
+#define FXSYS_fabs(a)          (FX_FLOAT)fabs(a)
+#define FXSYS_atan2(a, b)      (FX_FLOAT)atan2(a, b)
+#define FXSYS_ceil(a)          (FX_FLOAT)ceil(a)
+#define FXSYS_floor(a)         (FX_FLOAT)floor(a)
+#define FXSYS_cos(a)           (FX_FLOAT)cos(a)
+#define FXSYS_acos(a)          (FX_FLOAT)acos(a)
+#define FXSYS_sin(a)           (FX_FLOAT)sin(a)
+#define FXSYS_log(a)           (FX_FLOAT)log(a)
+#define FXSYS_log10(a)         (FX_FLOAT)log10(a)
+#define FXSYS_fmod(a, b)       (FX_FLOAT)fmod(a, b)
+#define FXSYS_abs                      abs
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _FX_LSB_FIRST_
+#define FXDWORD_FROM_LSBFIRST(i)       (i)
+#define FXDWORD_FROM_MSBFIRST(i)       (((FX_BYTE)(i) << 24) | ((FX_BYTE)((i) >> 8) << 16) | ((FX_BYTE)((i) >> 16) << 8) | (FX_BYTE)((i) >> 24))
+#define FXDWORD_GET_LSBFIRST(p)                ((((FX_LPBYTE)(p))[3] << 24) | (((FX_LPBYTE)(p))[2] << 16) | (((FX_LPBYTE)(p))[1] << 8) | (((FX_LPBYTE)(p))[0]))
+#define FXDWORD_GET_MSBFIRST(p) ((((FX_LPBYTE)(p))[0] << 24) | (((FX_LPBYTE)(p))[1] << 16) | (((FX_LPBYTE)(p))[2] << 8) | (((FX_LPBYTE)(p))[3]))
+#define FXSYS_HIBYTE(word)     ((FX_BYTE)((word) >> 8))
+#define FXSYS_LOBYTE(word)     ((FX_BYTE)(word))
+#define FXSYS_HIWORD(dword)    ((FX_WORD)((dword) >> 16))
+#define FXSYS_LOWORD(dword)    ((FX_WORD)(dword))
+FX_INT32       FXSYS_atoi(FX_LPCSTR str);
+FX_INT32       FXSYS_wtoi(FX_LPCWSTR str);
+FX_INT64       FXSYS_atoi64(FX_LPCSTR str);
+FX_INT64       FXSYS_wtoi64(FX_LPCWSTR str);
+FX_LPCSTR      FXSYS_i64toa(FX_INT64 value, FX_LPSTR str, int radix);
+FX_LPCWSTR     FXSYS_i64tow(FX_INT64 value, FX_LPWSTR str, int radix);
+int                    FXSYS_round(FX_FLOAT f);
+#define                FXSYS_Mul(a, b) ((a) * (b))
+#define                FXSYS_Div(a, b) ((a) / (b))
+#define                FXSYS_MulDiv(a, b, c) ((a) * (b) / (c))
+#define                FXSYS_sqrt2(a, b) (FX_FLOAT)FXSYS_sqrt((a)*(a) + (b)*(b))
+#ifdef __cplusplus
+};
+#endif
+#endif