Index: core/include/fxcrt/fx_ext.h |
diff --git a/core/include/fxcrt/fx_ext.h b/core/include/fxcrt/fx_ext.h |
index c24955fb7cb0de19b294a822a85c4671d9995bfc..f13d37caf4f99e954449fc5c09e6a95333a54d76 100644 |
--- a/core/include/fxcrt/fx_ext.h |
+++ b/core/include/fxcrt/fx_ext.h |
@@ -7,11 +7,10 @@ |
#ifndef CORE_INCLUDE_FXCRT_FX_EXT_H_ |
#define CORE_INCLUDE_FXCRT_FX_EXT_H_ |
-#include "fx_system.h" |
+#include <cctype> |
+#include <cwctype> |
-#ifdef __cplusplus |
-extern "C" { |
-#endif |
+#include "fx_system.h" |
FX_FLOAT FXSYS_tan(FX_FLOAT a); |
FX_FLOAT FXSYS_logb(FX_FLOAT b, FX_FLOAT x); |
@@ -38,6 +37,25 @@ inline int32_t FXSYS_toupper(int32_t ch) { |
return ch < 'a' || ch > 'z' ? ch : (ch - 0x20); |
} |
+inline int FXSYS_toHexDigit(const FX_CHAR c) { |
+ if (!std::isxdigit(c)) |
+ return 0; |
+ char upchar = std::toupper(c); |
+ return upchar > '9' ? upchar - 'A' + 10 : upchar - '0'; |
+} |
+ |
+inline int FXSYS_toDecimalDigit(const FX_CHAR c) { |
+ if (!std::isdigit(c)) |
+ return 0; |
+ return c - '0'; |
+} |
+ |
+inline int FXSYS_toDecimalDigitWide(const FX_WCHAR c) { |
+ if (!std::iswdigit(c)) |
+ return 0; |
+ return c - L'0'; |
+} |
+ |
FX_DWORD FX_HashCode_String_GetA(const FX_CHAR* pStr, |
int32_t iLength, |
FX_BOOL bIgnoreCase = FALSE); |
@@ -45,13 +63,6 @@ FX_DWORD FX_HashCode_String_GetW(const FX_WCHAR* pStr, |
int32_t iLength, |
FX_BOOL bIgnoreCase = FALSE); |
-#ifdef __cplusplus |
-} |
-#endif |
-#ifdef __cplusplus |
-extern "C" { |
-#endif |
- |
void* FX_Random_MT_Start(FX_DWORD dwSeed); |
FX_DWORD FX_Random_MT_Generate(void* pContext); |
@@ -63,9 +74,7 @@ void FX_Random_GenerateBase(FX_DWORD* pBuffer, int32_t iCount); |
void FX_Random_GenerateMT(FX_DWORD* pBuffer, int32_t iCount); |
void FX_Random_GenerateCrypto(FX_DWORD* pBuffer, int32_t iCount); |
-#ifdef __cplusplus |
-} |
-#endif |
+ |
template <class baseType> |
class CFX_SSortTemplate { |
public: |