26 #define TTK_STD_CXX __cplusplus
29 #if defined _MSC_VER && _MSC_VER >= 1800
31 # define TTK_STD_CXX 201103L
35 #if defined _MSC_VER && _MSC_VER >= 1910
37 # define TTK_STD_CXX 201402L
41 #if defined _MSC_VER && _MSC_VER >= 1920
43 # define TTK_STD_CXX 201703L
47 #if defined _MSC_VER && _MSC_VER >= 1930
49 # define TTK_STD_CXX 202002L
53 #if TTK_STD_CXX >= 202602L // c++2c
54 # define TTK_HAS_CXX11 1
55 # define TTK_HAS_CXX14 1
56 # define TTK_HAS_CXX17 1
57 # define TTK_HAS_CXX20 1
58 # define TTK_HAS_CXX23 1
59 # define TTK_HAS_CXX26 1
60 #elif TTK_STD_CXX >= 202302L // c++2b
61 # define TTK_HAS_CXX11 1
62 # define TTK_HAS_CXX14 1
63 # define TTK_HAS_CXX17 1
64 # define TTK_HAS_CXX20 1
65 # define TTK_HAS_CXX23 1
66 # define TTK_HAS_CXX26 0
67 #elif TTK_STD_CXX >= 202002L // c++2a
68 # define TTK_HAS_CXX11 1
69 # define TTK_HAS_CXX14 1
70 # define TTK_HAS_CXX17 1
71 # define TTK_HAS_CXX20 1
72 # define TTK_HAS_CXX23 0
73 # define TTK_HAS_CXX26 0
74 #elif TTK_STD_CXX >= 201703L // c++1z
75 # define TTK_HAS_CXX11 1
76 # define TTK_HAS_CXX14 1
77 # define TTK_HAS_CXX17 1
78 # define TTK_HAS_CXX20 0
79 # define TTK_HAS_CXX23 0
80 # define TTK_HAS_CXX26 0
81 #elif TTK_STD_CXX >= 201402L // c++1y
82 # define TTK_HAS_CXX11 1
83 # define TTK_HAS_CXX14 1
84 # define TTK_HAS_CXX17 0
85 # define TTK_HAS_CXX20 0
86 # define TTK_HAS_CXX23 0
87 # define TTK_HAS_CXX26 0
88 #elif TTK_STD_CXX >= 201103L // c++1x
89 # define TTK_HAS_CXX11 1
90 # define TTK_HAS_CXX14 0
91 # define TTK_HAS_CXX17 0
92 # define TTK_HAS_CXX20 0
93 # define TTK_HAS_CXX23 0
94 # define TTK_HAS_CXX26 0
96 # define TTK_HAS_CXX11 0
97 # define TTK_HAS_CXX14 0
98 # define TTK_HAS_CXX17 0
99 # define TTK_HAS_CXX20 0
100 # define TTK_HAS_CXX23 0
101 # define TTK_HAS_CXX26 0
126 # pragma GCC diagnostic ignored "-Wswitch"
127 # pragma GCC diagnostic ignored "-Wparentheses"
128 # pragma GCC diagnostic ignored "-Wunused-result"
129 # pragma GCC diagnostic ignored "-Wunused-function"
139 # define TTKConstCast(x, y) (const_cast<x>(y))
141 # define TTKConstCast(x, y) ((x)(y))
145 # define TTKDynamicCast(x, y) (dynamic_cast<x>(y))
147 # define TTKDynamicCast(x, y) ((x)(y))
151 # define TTKReinterpretCast(x, y) (reinterpret_cast<x>(y))
153 # define TTKReinterpretCast(x, y) ((x)(y))
157 # define TTKStaticCast(x, y) (static_cast<x>(y))
159 # define TTKStaticCast(x, y) ((x)(y))
164 #define TTK_CAT(a, b) a ## b
167 # define TTK_STR_CAT(...) TTK_PP_OVERLOAD(__TTK_STR_CAT__, __VA_ARGS__)(__VA_ARGS__)
169 # define TTK_STR_CAT(...) TTK_PP_CAT(TTK_PP_OVERLOAD(__TTK_STR_CAT__, __VA_ARGS__)(__VA_ARGS__), TTK_PP_EMPTY())
171 #define __TTK_STR_CAT__1(a) a
172 #define __TTK_STR_CAT__2(a, b) a b
173 #define __TTK_STR_CAT__3(a, b, c) a b c
174 #define __TTK_STR_CAT__4(a, b, c, d) a b c d
175 #define __TTK_STR_CAT__5(a, b, c, d, e) a b c d e
176 #define __TTK_STR_CAT__6(a, b, c, d, e, f) a b c d e f
178 #define TTK_STR_QUOTES(s) ("\"" + s + "\"")
182 #define TTK_PP_OVERLOAD(prefix, ...) TTK_PP_CAT(prefix, TTK_PP_VARIADIC_SIZE(__VA_ARGS__))
183 #define TTK_PP_CAT(a, b) TTK_CAT(a, b)
184 #define TTK_PP_EMPTY()
186 # define TTK_PP_VARIADIC_SIZE(...) TTK_PP_CAT(TTK_PP_VARIADIC_SIZE_I(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, ), )
188 # define TTK_PP_VARIADIC_SIZE(...) TTK_PP_VARIADIC_SIZE_I(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, )
190 #define TTK_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, size, ...) size
194 #define TTK_DOTDOT ".."
195 #define TTK_SPACE " "
196 #define TTK_SEPARATOR "/"
197 #define TTK_WSEPARATOR "\\"
198 #define TTK_LINEFEED "\n"
199 #define TTK_WLINEFEED "\r\n"
200 #define TTK_PARENT_DIR TTK_STR_CAT(TTK_DOTDOT, TTK_SEPARATOR)
202 #define TTK_SPLITER "*|||*"
203 #define TTK_DEFAULT_STR "-"
204 #define TTK_NAN_STR "NaN"
205 #define TTK_NULL_STR "null"
207 #define URL_PREFIX "://"
208 #define HTTP_PROTOCOL_PREFIX "http"
209 #define HTTPS_PROTOCOL_PREFIX "https"
211 #define HTTP_PROTOCOL TTK_STR_CAT(HTTP_PROTOCOL_PREFIX, URL_PREFIX)
212 #define HTTPS_PROTOCOL TTK_STR_CAT(HTTPS_PROTOCOL_PREFIX, URL_PREFIX)
215 #define SHL_FILE_SUFFIX "sh"
216 #define EXE_FILE_SUFFIX "exe"
217 #define COM_FILE_SUFFIX "com"
219 #define SHL_FILE TTK_STR_CAT(TTK_DOT, SHL_FILE_SUFFIX)
220 #define EXE_FILE TTK_STR_CAT(TTK_DOT, EXE_FILE_SUFFIX)
221 #define COM_FILE TTK_STR_CAT(TTK_DOT, COM_FILE_SUFFIX)
225 #define TTK_TIME_INIT "00:00"
226 #define TTK_HOUR_FORMAT "hh"
227 #define TTK_SECOND_FORMAT "mm"
228 #define TTK_TIMEM_FORMAT "hh:mm"
229 #define TTK_TIMES_FORMAT "hh:mm:ss"
230 #define TTK_TIMEZ_FORMAT "hh:mm:ss:zzz"
231 #define TTK_YEAR_FORMAT "yyyy"
232 #define TTK_MONTH_FORMAT "MM"
233 #define TTK_DAY_FORMAT "dd"
234 #define TTK_WEEK_FORMAT "dddd"
235 #define TTK_DATE_FORMAT "yyyy-MM-dd"
236 #define TTK_DATE2_FORMAT "yyyy.MM.dd"
237 #define TTK_DATE_TIMEM_FORMAT "yyyy-MM-dd hh:mm"
238 #define TTK_DATE_TIMES_FORMAT "yyyy-MM-dd hh:mm:ss"
239 #define TTK_DATE_TIMEZ_FORMAT "yyyy-MM-dd hh:mm:ss:zzz"
243 #define TTK_ITEM_SIZE_3XS 5
244 #define TTK_ITEM_SIZE_2XS 10
245 #define TTK_ITEM_SIZE_XS 18
246 #define TTK_ITEM_SIZE_S 25
247 #define TTK_ITEM_SIZE_M 30
248 #define TTK_ITEM_SIZE_L 40
249 #define TTK_ITEM_SIZE_XL 50
250 #define TTK_ITEM_SIZE_2XL 60
251 #define TTK_ITEM_SIZE_3XL 75
252 #define TTK_ITEM_SIZE_4XL 90
253 #define TTK_ITEM_SIZE_5XL 105
257 #define TTK_NONE_LEVEL -3
258 #define TTK_LOW_LEVEL -2
259 #define TTK_NORMAL_LEVEL -1
260 #define TTK_HIGH_LEVEL 999
264 #define TTK_LOW_BUFFER 256
265 #define TTK_NORMAL_BUFFER 512
266 #define TTK_HIGH_BUFFER 1024
273 #define TTK_DN_US2NS 1000
276 #define TTK_DN_MS2US 1000
277 #define TTK_DN_MS2NS (TTK_DN_MS2US * TTK_DN_US2NS)
278 #define TTK_DN_ONCE (50 * TTK_DN_MS)
281 #define TTK_DN_S2MS 1000
282 #define TTK_DN_S2US (TTK_DN_S2MS * TTK_DN_MS2US)
283 #define TTK_DN_S2NS (TTK_DN_S2US * TTK_DN_US2NS)
286 #define TTK_DN_M2S 60
287 #define TTK_DN_M2MS (TTK_DN_M2S * TTK_DN_S2MS)
288 #define TTK_DN_M2US TTKInt64(TTK_DN_M2MS * TTK_DN_MS2US)
289 #define TTK_DN_M2NS TTKInt64(TTK_DN_M2US * TTK_DN_US2NS)
292 #define TTK_DN_H2M 60
293 #define TTK_DN_H2S (TTK_DN_H2M * TTK_DN_M2S)
294 #define TTK_DN_H2MS (TTK_DN_H2S * TTK_DN_S2MS)
295 #define TTK_DN_H2US TTKInt64(TTK_DN_H2MS * TTK_DN_MS2US)
296 #define TTK_DN_H2NS TTKInt64(TTK_DN_H2US * TTK_DN_US2NS)
299 #define TTK_DN_D2H 24
300 #define TTK_DN_D2M (TTK_DN_D2H * TTK_DN_H2M)
301 #define TTK_DN_D2S (TTK_DN_D2M * TTK_DN_M2S)
302 #define TTK_DN_D2MS TTKInt64(TTK_DN_D2S * TTK_DN_S2MS)
303 #define TTK_DN_D2US TTKInt64(TTK_DN_D2MS * TTK_DN_MS2US)
304 #define TTK_DN_D2NS TTKInt64(TTK_DN_D2US * TTK_DN_US2NS)
311 #define TTK_SN_B2BT 8
314 #define TTK_SN_KB2B 1024
315 #define TTK_SN_KB2BS (TTK_SN_KB2B * TTK_SN_B2BT)
318 #define TTK_SN_MB2KB 1024
319 #define TTK_SN_MB2B (TTK_SN_MB2KB * TTK_SN_KB2B)
320 #define TTK_SN_MB2BT (TTK_SN_MB2B * TTK_SN_B2BT)
323 #define TTK_SN_GB2MB 1024
324 #define TTK_SN_GB2KB (TTK_SN_GB2MB * TTK_SN_MB2KB)
325 #define TTK_SN_GB2B TTKInt64(TTK_SN_GB2KB * TTK_SN_KB2B)
326 #define TTK_SN_GB2BT TTKInt64(TTK_SN_GB2B * TTK_SN_B2BT)
329 #define TTK_SN_TB2GB 1024
330 #define TTK_SN_TB2MB (TTK_SN_TB2GB * TTK_SN_GB2MB)
331 #define TTK_SN_TB2KB TTKInt64(TTK_SN_TB2MB * TTK_SN_MB2KB)
332 #define TTK_SN_TB2B TTKInt64(TTK_SN_TB2KB * TTK_SN_KB2B)
333 #define TTK_SN_TB2BT TTKInt64(TTK_SN_TB2B * TTK_SN_B2BT)
342 #define TTK_AN_120 120
343 #define TTK_AN_180 180
344 #define TTK_AN_270 270
345 #define TTK_AN_360 360
353 #define TTK_BN_128 128
354 #define TTK_BN_192 192
355 #define TTK_BN_250 250
356 #define TTK_BN_320 320
357 #define TTK_BN_500 500
358 #define TTK_BN_750 750
359 #define TTK_BN_1000 1000
364 #define TTK_RN_MAX 100
366 #endif // TTKGLOBAL_H
unsigned long long TTKUInt64
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque