@@ -27,9 +27,9 @@ SOFTWARE.
27
27
28
28
#include < ctools/cTools.h>
29
29
30
- #ifdef WIN32
30
+ #if defined(__WIN32__) || defined( WIN32) || defined(_WIN32) || defined(__WIN64__) || defined(WIN64) || defined(_WIN64) || defined(_MSC_VER)
31
31
#include < Windows.h>
32
- #elif defined(LINUX) or defined(APPLE)
32
+ #else
33
33
#endif
34
34
35
35
#include < cstdarg> // For va_start, etc.
@@ -49,6 +49,59 @@ SOFTWARE.
49
49
#include < cwchar>
50
50
#endif
51
51
52
+ std::string ct::UTF8Encode (const std::wstring& wstr) {
53
+ std::string res;
54
+ #if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(__WIN64__) || defined(WIN64) || defined(_WIN64) || defined(_MSC_VER)
55
+ if (!wstr.empty ()) {
56
+ int size_needed = WideCharToMultiByte (CP_UTF8, 0 , &wstr[0 ], (int )wstr.size (), NULL , 0 , NULL , NULL );
57
+ if (size_needed) {
58
+ res = std::string (size_needed, 0 );
59
+ WideCharToMultiByte (CP_UTF8, 0 , &wstr[0 ], (int )wstr.size (), &res[0 ], size_needed, NULL , NULL );
60
+ }
61
+ }
62
+ #else
63
+ // Suppress warnings from the compiler.
64
+ (void )wstr;
65
+ #endif // _IGFD_WIN_
66
+ return res;
67
+ }
68
+
69
+ // Convert an UTF8 string to a wide Unicode String
70
+ std::wstring ct::UTF8Decode (const std::string& str) {
71
+ std::wstring res;
72
+ #if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(__WIN64__) || defined(WIN64) || defined(_WIN64) || defined(_MSC_VER)
73
+ if (!str.empty ()) {
74
+ int size_needed = MultiByteToWideChar (CP_UTF8, 0 , &str[0 ], (int )str.size (), NULL , 0 );
75
+ if (size_needed) {
76
+ res = std::wstring (size_needed, 0 );
77
+ MultiByteToWideChar (CP_UTF8, 0 , &str[0 ], (int )str.size (), &res[0 ], size_needed);
78
+ }
79
+ }
80
+ #else
81
+ // Suppress warnings from the compiler.
82
+ (void )str;
83
+ #endif // _IGFD_WIN_
84
+ return res;
85
+ }
86
+
87
+ int64_t ct::EncodeId (const std::string& vArr) {
88
+ if (vArr.empty () || vArr.size () != 8U ) {
89
+ return 0 ;
90
+ }
91
+ return vArr[0 ] | //
92
+ (vArr[1 ] << 8 ) | //
93
+ (vArr[2 ] << 16 ) | //
94
+ (vArr[3 ] << 24 ) | //
95
+ ((int64_t )(vArr[4 ]) << 32 ) | //
96
+ ((int64_t )(vArr[5 ]) << 40 ) | //
97
+ ((int64_t )(vArr[6 ]) << 48 ) | //
98
+ ((int64_t )(vArr[7 ]) << 56 );
99
+ }
100
+
101
+ bool ct::IsIdEqualTo (const int64_t & vId, char vArr[8 ]) {
102
+ return (EncodeId (vArr) == vId);
103
+ }
104
+
52
105
::std::string ct::toStr (const char * fmt, ...) {
53
106
va_list args;
54
107
va_start (args, fmt);
0 commit comments