TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
ttkglobal.h
Go to the documentation of this file.
1 #ifndef TTKGLOBAL_H
2 #define TTKGLOBAL_H
3 
4 /***************************************************************************
5  * This file is part of the TTK Library Module project
6  * Copyright (C) 2015 - 2024 Greedysky Studio
7 
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12 
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Lesser General Public License for more details.
17 
18  * You should have received a copy of the GNU Lesser General Public License along
19  * with this program; If not, see <http://www.gnu.org/licenses/>.
20  ***************************************************************************/
21 
22 #include <string>
23 
24 // Normal definition
25 #undef TTK_STD_CXX
26 #define TTK_STD_CXX __cplusplus
27 
28 // VS2013 - 2015
29 #if defined _MSC_VER && _MSC_VER >= 1800
30 # undef TTK_STD_CXX
31 # define TTK_STD_CXX 201103L
32 #endif
33 
34 // VS2017
35 #if defined _MSC_VER && _MSC_VER >= 1910
36 # undef TTK_STD_CXX
37 # define TTK_STD_CXX 201402L
38 #endif
39 
40 // VS2019
41 #if defined _MSC_VER && _MSC_VER >= 1920
42 # undef TTK_STD_CXX
43 # define TTK_STD_CXX 201703L
44 #endif
45 
46 // VS2022
47 #if defined _MSC_VER && _MSC_VER >= 1930
48 # undef TTK_STD_CXX
49 # define TTK_STD_CXX 202002L
50 #endif
51 
52 
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
95 #else
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
102 #endif
103 
104 
105 // C style format
106 using TTKInt8 = signed char; /* 8 bit signed */
107 using TTKUInt8 = unsigned char; /* 8 bit unsigned */
108 using TTKInt16 = short; /* 16 bit signed */
109 using TTKUInt16 = unsigned short; /* 16 bit unsigned */
110 using TTKInt32 = int; /* 32 bit signed */
111 using TTKUInt32 = unsigned int; /* 32 bit unsigned */
112 using TTKInt64 = long long; /* 64 bit signed */
113 using TTKUInt64 = unsigned long long; /* 64 bit unsigned */
114 
115 using TTKReal = double; /* real */
116 using TTKDouble = double; /* double */
117 using TTKFloat = float; /* float */
118 using TTKBool = bool; /* bool */
119 
120 // C++ style format
121 using TTKString = std::string; /* string */
122 using TTKWString = std::wstring; /* wstring */
123 
124 
125 #ifdef __GNUC__
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"
130 #endif
131 
132 
133 #if TTK_HAS_CXX11
134 # define TTK_CAST
135 #endif
136 
137 // cast
138 #ifdef TTK_CAST
139 # define TTKConstCast(x, y) (const_cast<x>(y))
140 #else
141 # define TTKConstCast(x, y) ((x)(y))
142 #endif
143 
144 #ifdef TTK_CAST
145 # define TTKDynamicCast(x, y) (dynamic_cast<x>(y))
146 #else
147 # define TTKDynamicCast(x, y) ((x)(y))
148 #endif
149 
150 #ifdef TTK_CAST
151 # define TTKReinterpretCast(x, y) (reinterpret_cast<x>(y))
152 #else
153 # define TTKReinterpretCast(x, y) ((x)(y))
154 #endif
155 
156 #ifdef TTK_CAST
157 # define TTKStaticCast(x, y) (static_cast<x>(y))
158 #else
159 # define TTKStaticCast(x, y) ((x)(y))
160 #endif
161 
162 
163 // marco cat
164 #define TTK_CAT(a, b) a##b
165 // marco str cat
166 #ifndef _MSC_VER
167 # define TTK_STR_CAT(...) TTK_PP_OVERLOAD(__TTK_STR_CAT__, __VA_ARGS__)(__VA_ARGS__)
168 #else
169 # define TTK_STR_CAT(...) TTK_PP_CAT(TTK_PP_OVERLOAD(__TTK_STR_CAT__, __VA_ARGS__)(__VA_ARGS__), TTK_PP_EMPTY())
170 #endif
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
177 // marco str quotes
178 #define TTK_STR_QUOTES(s) ("\"" + s + "\"")
179 
180 
181 // marco preprocessor overload
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()
185 #ifdef _MSC_VER
186 # define TTK_PP_VARIADIC_SIZE(...) TTK_PP_CAT(TTK_PP_VARIADIC_SIZE_I(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1,),)
187 #else
188 # define TTK_PP_VARIADIC_SIZE(...) TTK_PP_VARIADIC_SIZE_I(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1,)
189 #endif
190 #define TTK_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, size, ...) size
191 
192 
193 #define TTK_DOT "."
194 #define TTK_DOTDOT ".."
195 #define TTK_SEPARATOR "/"
196 #define TTK_RSEPARATOR "\\"
197 #define TTK_PARENT_DIR TTK_STR_CAT(TTK_DOTDOT, TTK_SEPARATOR)
198 
199 #define TTK_SPLITER "*|||*"
200 #define TTK_DEFAULT_STR "-"
201 #define TTK_NAN_STR "NaN"
202 #define TTK_NULL_STR "null"
203 
204 #define URL_PREFIX "://"
205 #define HTTP_PROTOCOL_PREFIX "http"
206 #define HTTPS_PROTOCOL_PREFIX "https"
207 
208 #define HTTP_PROTOCOL TTK_STR_CAT(HTTP_PROTOCOL_PREFIX, URL_PREFIX)
209 #define HTTPS_PROTOCOL TTK_STR_CAT(HTTPS_PROTOCOL_PREFIX, URL_PREFIX)
210 
211 
212 #define SHL_FILE_SUFFIX "sh"
213 #define EXE_FILE_SUFFIX "exe"
214 #define COM_FILE_SUFFIX "com"
215 
216 #define SHL_FILE TTK_STR_CAT(TTK_DOT, SHL_FILE_SUFFIX)
217 #define EXE_FILE TTK_STR_CAT(TTK_DOT, EXE_FILE_SUFFIX)
218 #define COM_FILE TTK_STR_CAT(TTK_DOT, COM_FILE_SUFFIX)
219 
220 
221 // ttk date time format define
222 #define TTK_TIME_INIT "00:00"
223 #define TTK_HOUR_FORMAT "hh"
224 #define TTK_SECOND_FORMAT "mm"
225 #define TTK_TIME_FORMAT "hh:mm"
226 #define TTK_TIMEZ_FORMAT "hh:mm:ss"
227 #define TTK_YEAR_FORMAT "yyyy"
228 #define TTK_MONTH_FORMAT "MM"
229 #define TTK_DAY_FORMAT "dd"
230 #define TTK_WEEK_FORMAT "dddd"
231 #define TTK_DATE_FORMAT "yyyy-MM-dd"
232 #define TTK_DATE2_FORMAT "yyyy.MM.dd"
233 #define TTK_DATE_TIME_FORMAT "yyyy-MM-dd hh:mm"
234 #define TTK_DATE_TIMEZ_FORMAT "yyyy-MM-dd hh:mm:ss"
235 
236 
237 // ttk item size define
238 #define TTK_ITEM_SIZE_3XS 5
239 #define TTK_ITEM_SIZE_2XS 10
240 #define TTK_ITEM_SIZE_XS 18
241 #define TTK_ITEM_SIZE_S 25
242 #define TTK_ITEM_SIZE_M 30
243 #define TTK_ITEM_SIZE_L 40
244 #define TTK_ITEM_SIZE_XL 50
245 #define TTK_ITEM_SIZE_2XL 60
246 #define TTK_ITEM_SIZE_3XL 75
247 #define TTK_ITEM_SIZE_4XL 90
248 #define TTK_ITEM_SIZE_5XL 105
249 
250 
251 // ttk level define
252 #define TTK_NONE_LEVEL -3
253 #define TTK_LOW_LEVEL -2
254 #define TTK_NORMAL_LEVEL -1
255 #define TTK_HIGH_LEVEL 999
256 
257 
258 // ttk buffer define
259 #define TTK_LOW_BUFFER 256
260 #define TTK_NORMAL_BUFFER 512
261 #define TTK_HIGH_BUFFER 1024
262 
263 
264 // ttk date time number define
265 #define TTK_DN_NS 1
266 
267 #define TTK_DN_US 1
268 #define TTK_DN_US2NS 1000
269 
270 #define TTK_DN_MS 1
271 #define TTK_DN_MS2US 1000
272 #define TTK_DN_MS2NS (TTK_DN_MS2US * TTK_DN_US2NS)
273 #define TTK_DN_ONCE (50 * TTK_DN_MS)
274 
275 #define TTK_DN_S 1
276 #define TTK_DN_S2MS 1000
277 #define TTK_DN_S2US (TTK_DN_S2MS * TTK_DN_MS2US)
278 #define TTK_DN_S2NS (TTK_DN_S2US * TTK_DN_US2NS)
279 
280 #define TTK_DN_M 1
281 #define TTK_DN_M2S 60
282 #define TTK_DN_M2MS (TTK_DN_M2S * TTK_DN_S2MS)
283 #define TTK_DN_M2US TTKInt64(TTK_DN_M2MS * TTK_DN_MS2US)
284 #define TTK_DN_M2NS TTKInt64(TTK_DN_M2US * TTK_DN_US2NS)
285 
286 #define TTK_DN_H 1
287 #define TTK_DN_H2M 60
288 #define TTK_DN_H2S (TTK_DN_H2M * TTK_DN_M2S)
289 #define TTK_DN_H2MS (TTK_DN_H2S * TTK_DN_S2MS)
290 #define TTK_DN_H2US TTKInt64(TTK_DN_H2MS * TTK_DN_MS2US)
291 #define TTK_DN_H2NS TTKInt64(TTK_DN_H2US * TTK_DN_US2NS)
292 
293 #define TTK_DN_D 1
294 #define TTK_DN_D2H 24
295 #define TTK_DN_D2M (TTK_DN_D2H * TTK_DN_H2M)
296 #define TTK_DN_D2S (TTK_DN_D2M * TTK_DN_M2S)
297 #define TTK_DN_D2MS TTKInt64(TTK_DN_D2S * TTK_DN_S2MS)
298 #define TTK_DN_D2US TTKInt64(TTK_DN_D2MS * TTK_DN_MS2US)
299 #define TTK_DN_D2NS TTKInt64(TTK_DN_D2US * TTK_DN_US2NS)
300 
301 
302 // ttk size number define
303 #define TTK_SN_BT 1
304 
305 #define TTK_SN_B 1
306 #define TTK_SN_B2BT 8
307 
308 #define TTK_SN_KB 1
309 #define TTK_SN_KB2B 1024
310 #define TTK_SN_KB2BS (TTK_SN_KB2B * TTK_SN_B2BT)
311 
312 #define TTK_SN_MB 1
313 #define TTK_SN_MB2KB 1024
314 #define TTK_SN_MB2B (TTK_SN_MB2KB * TTK_SN_KB2B)
315 #define TTK_SN_MB2BT (TTK_SN_MB2B * TTK_SN_B2BT)
316 
317 #define TTK_SN_GB 1
318 #define TTK_SN_GB2MB 1024
319 #define TTK_SN_GB2KB (TTK_SN_GB2MB * TTK_SN_MB2KB)
320 #define TTK_SN_GB2B TTKInt64(TTK_SN_GB2KB * TTK_SN_KB2B)
321 #define TTK_SN_GB2BT TTKInt64(TTK_SN_GB2B * TTK_SN_B2BT)
322 
323 #define TTK_SN_TB 1
324 #define TTK_SN_TB2GB 1024
325 #define TTK_SN_TB2MB (TTK_SN_TB2GB * TTK_SN_GB2MB)
326 #define TTK_SN_TB2KB TTKInt64(TTK_SN_TB2MB * TTK_SN_MB2KB)
327 #define TTK_SN_TB2B TTKInt64(TTK_SN_TB2KB * TTK_SN_KB2B)
328 #define TTK_SN_TB2BT TTKInt64(TTK_SN_TB2B * TTK_SN_B2BT)
329 
330 
331 // ttk angle number define
332 #define TTK_AN_0 0
333 #define TTK_AN_30 30
334 #define TTK_AN_45 45
335 #define TTK_AN_60 60
336 #define TTK_AN_90 90
337 #define TTK_AN_120 120
338 #define TTK_AN_180 180
339 #define TTK_AN_270 270
340 #define TTK_AN_360 360
341 
342 
343 // ttk bitrate number define
344 #define TTK_BN_0 0
345 #define TTK_BN_32 32
346 #define TTK_BN_64 64
347 #define TTK_BN_96 96
348 #define TTK_BN_128 128
349 #define TTK_BN_192 192
350 #define TTK_BN_250 250
351 #define TTK_BN_320 320
352 #define TTK_BN_500 500
353 #define TTK_BN_750 750
354 #define TTK_BN_1000 1000
355 
356 
357 // ttk range number define
358 #define TTK_RN_MIN 0
359 #define TTK_RN_MAX 100
360 
361 #endif // TTKGLOBAL_H
double TTKReal
Definition: ttkglobal.h:115
unsigned long long TTKUInt64
Definition: ttkglobal.h:113
std::wstring TTKWString
Definition: ttkglobal.h:122
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
unsigned char TTKUInt8
Definition: ttkglobal.h:107
signed char TTKInt8
Definition: ttkglobal.h:106
double TTKDouble
Definition: ttkglobal.h:116
unsigned int TTKUInt32
Definition: ttkglobal.h:111
std::string TTKString
Definition: ttkglobal.h:121
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
unsigned short TTKUInt16
Definition: ttkglobal.h:109
short TTKInt16
Definition: ttkglobal.h:108
int TTKInt32
Definition: ttkglobal.h:110
float TTKFloat
Definition: ttkglobal.h:117
long long TTKInt64
Definition: ttkglobal.h:112
bool TTKBool
Definition: ttkglobal.h:118