2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23#ifndef GIMBAL_STRING_VIEW_H
24#define GIMBAL_STRING_VIEW_H
26#include "../core/gimbal_ctx.h"
27#include "../algorithms/gimbal_hash.h"
28#include "../preprocessor/gimbal_compiler.h"
29#include "../preprocessor/gimbal_macro_utils.h"
38#define GBL_STRV(...) GblStringView_fromString
(__VA_ARGS__)
42#define GBL_STRING_VIEW_CSTR_ALLOCA(view) GblStringView_toCString(view, (char*)GBL_ALLOCA(view.length + 1
), view.length + 1
)
44#define GBL_SELF_TYPE GblStringView
49
50
51
52
53
54
55
56
60 size_t nullTerminated : 1,
61 size_t length :
sizeof(size_t) * 8 - 1
66
67
68
69
79
80
81
82
94
95
96
97
109
110
111
112
124
125
126
127
163
164
165
166
188
189
190
191
225#define GblStringView_fromString(...)
226 GblStringView_fromStringDefault_
(__VA_ARGS__)
227#define GblStringView_fromStringDefault_(...)
228 GblStringView_fromStringDefault__
(__VA_ARGS__, 0
)
229#define GblStringView_fromStringDefault__(string, length, ...)
230 (GblStringView_fromString
)(string, length)
232#define GblStringView_compare(...)
233 GblStringView_compareDefault_
(__VA_ARGS__)
234#define GblStringView_compareDefault_(...)
235 GblStringView_compareDefault__
(__VA_ARGS__, 0
)
236#define GblStringView_compareDefault__(view, string, length, ...)
237 (GblStringView_compare
)(view, string, length)
239#define GblStringView_compareIgnoreCase(...)
240 GblStringView_compareIgnoreCaseDefault_
(__VA_ARGS__)
241#define GblStringView_compareIgnoreCaseDefault_(...)
242 GblStringView_compareIgnoreCaseDefault__
(__VA_ARGS__, 0
)
243#define GblStringView_compareIgnoreCaseDefault__(view, string, length, ...)
244 (GblStringView_compareIgnoreCase
)(view, string, length)
246#define GblStringView_equals(...)
247 GblStringView_equalsDefault_
(__VA_ARGS__)
248#define GblStringView_equalsDefault_(...)
249 GblStringView_equalsDefault__
(__VA_ARGS__, 0
)
250#define GblStringView_equalsDefault__(view, string, length, ...)
251 (GblStringView_equals
)(view, string, length)
253#define GblStringView_equalsIgnoreCase(...)
254 GblStringView_equalsIgnoreCaseDefault_
(__VA_ARGS__)
255#define GblStringView_equalsIgnoreCaseDefault_(...)
256 GblStringView_equalsIgnoreCaseDefault__
(__VA_ARGS__, 0
)
257#define GblStringView_equalsIgnoreCaseDefault__(view, string, length, ...)
258 (GblStringView_equalsIgnoreCase
)(view, string, length)
260#define GblStringView_contains(...)
261 GblStringView_containsDefault_
(__VA_ARGS__)
262#define GblStringView_containsDefault_(...)
263 GblStringView_containsDefault__
(__VA_ARGS__, 0
)
264#define GblStringView_containsDefault__(view, string, length, ...)
265 (GblStringView_contains
)(view, string, length)
267#define GblStringView_containsIgnoreCase(...)
268 GblStringView_containsIgnoreCaseDefault_
(__VA_ARGS__)
269#define GblStringView_containsIgnoreCaseDefault_(...)
270 GblStringView_containsIgnoreCaseDefault__
(__VA_ARGS__, 0
)
271#define GblStringView_containsIgnoreCaseDefault__(view, string, length, ...)
272 (GblStringView_containsIgnoreCase
)(view, string, length)
274#define GblStringView_count(...)
275 GblStringView_countDefault_
(__VA_ARGS__)
276#define GblStringView_countDefault_(...)
277 GblStringView_countDefault__
(__VA_ARGS__, 0
)
278#define GblStringView_countDefault__(view, string, length, ...)
279 (GblStringView_count
)(view, string, length)
281#define GblStringView_startsWith(...)
282 GblStringView_startsWithDefault_
(__VA_ARGS__)
283#define GblStringView_startsWithDefault_(...)
284 GblStringView_startsWithDefault__
(__VA_ARGS__, 0
)
285#define GblStringView_startsWithDefault__(view, string, length, ...)
286 (GblStringView_startsWith
)(view, string, length)
288#define GblStringView_startsWithIgnoreCase(...)
289 GblStringView_startsWithIgnoreCaseDefault_
(__VA_ARGS__)
290#define GblStringView_startsWithIgnoreCaseDefault_(...)
291 GblStringView_startsWithIgnoreCaseDefault__
(__VA_ARGS__, 0
)
292#define GblStringView_startsWithIgnoreCaseDefault__(view, string, length, ...)
293 (GblStringView_startsWithIgnoreCase
)(view, string, length)
295#define GblStringView_endsWith(...)
296 GblStringView_endsWithDefault_
(__VA_ARGS__)
297#define GblStringView_endsWithDefault_(...)
298 GblStringView_endsWithDefault__
(__VA_ARGS__, 0
)
299#define GblStringView_endsWithDefault__(view, string, length, ...)
300 (GblStringView_endsWith
)(view, string, length)
302#define GblStringView_endsWithIgnoreCase(...)
303 GblStringView_endsWithIgnoreCaseDefault_
(__VA_ARGS__)
304#define GblStringView_endsWithIgnoreCaseDefault_(...)
305 GblStringView_endsWithIgnoreCaseDefault__
(__VA_ARGS__, 0
)
306#define GblStringView_endsWithIgnoreCaseDefault__(view, string, length, ...)
307 (GblStringView_endsWithIgnoreCase
)(view, string, length)
309#define GblStringView_find(...)
310 GblStringView_findDefault_
(__VA_ARGS__)
311#define GblStringView_findDefault_(...)
312 GblStringView_findDefault__
(__VA_ARGS__, 0
, 0
)
313#define GblStringView_findDefault__(view, string, length, offset, ...)
314 (GblStringView_find
)(view, string, length, offset)
316#define GblStringView_findIgnoreCase(...)
317 GblStringView_findIgnoreCaseDefault_
(__VA_ARGS__)
318#define GblStringView_findIgnoreCaseDefault_(...)
319 GblStringView_findIgnoreCaseDefault__
(__VA_ARGS__, 0
, 0
)
320#define GblStringView_findIgnoreCaseDefault__(view, string, length, offset, ...)
321 (GblStringView_findIgnoreCase
)(view, string, length, offset)
323#define GblStringView_rfind(...)
325#define GblStringView_rfind_2(view, str)
326 GblStringView_rfind_3
(view, str, 0
)
327#define GblStringView_rfind_3(view, str, len)
329#define GblStringView_rfind_4(view, str, len, offset)
330 (GblStringView_rfind
)(view, str, len, offset)
332#define GblStringView_rfindIgnoreCase(...)
334#define GblStringView_rfindIgnoreCase_2(view, str)
335 GblStringView_rfindIgnoreCase_3
(view, str, 0
)
336#define GblStringView_rfindIgnoreCase_3(view, str, len)
338#define GblStringView_rfindIgnoreCase_4(view, str, len, offset)
339 (GblStringView_rfindIgnoreCase
)(view, str, len, offset)
341#define GblStringView_findFirstOf(...)
342 GblStringView_findFirstOfDefault_
(__VA_ARGS__)
343#define GblStringView_findFirstOfDefault_(...)
344 GblStringView_findFirstOfDefault__
(__VA_ARGS__, 0
, 0
)
345#define GblStringView_findFirstOfDefault__(view, string, length, offset, ...)
346 (GblStringView_findFirstOf
)(view, string, length, offset)
348#define GblStringView_findFirstNotOf(...)
349 GblStringView_findFirstNotOfDefault_
(__VA_ARGS__)
350#define GblStringView_findFirstNotOfDefault_(...)
351 GblStringView_findFirstNotOfDefault__
(__VA_ARGS__, 0
, 0
)
352#define GblStringView_findFirstNotOfDefault__(view, string, length, offset, ...)
353 (GblStringView_findFirstNotOf
)(view, string, length, offset)
355#define GblStringView_findLastOf(...)
357#define GblStringView_findLastOf_2(view, str)
358 GblStringView_findLastOf_3
(view, str, 0
)
359#define GblStringView_findLastOf_3(view, str, len)
361#define GblStringView_findLastOf_4(view, str, len, offset)
362 (GblStringView_findLastOf
)(view, str, len, offset)
364#define GblStringView_findLastNotOf(...)
366#define GblStringView_findLastNotOf_2(view, str)
367 GblStringView_findLastNotOf_3
(view, str, 0
)
368#define GblStringView_findLastNotOf_3(view, str, len)
370#define GblStringView_findLastNotOf_4(view, str, len, offset)
371 (GblStringView_findLastNotOf
)(view, str, len, offset)
373#define GblStringView_toBool(...)
374 GblStringView_toBoolDefault_
(__VA_ARGS__)
375#define GblStringView_toBoolDefault_(...)
376 GblStringView_toBoolDefault__
(__VA_ARGS__, NULL
)
377#define GblStringView_toBoolDefault__(self, success, ...)
378 ((GblStringView_toBool
)(self, success))
380#define GblStringView_toChar(...)
381 GblStringView_toCharDefault_
(__VA_ARGS__)
382#define GblStringView_toCharDefault_(...)
383 GblStringView_toCharDefault__
(__VA_ARGS__, NULL
)
384#define GblStringView_toCharDefault__(self, success, ...)
385 ((GblStringView_toChar
)(self, success))
387#define GblStringView_toUint8(...)
388 GblStringView_toUint8Default_
(__VA_ARGS__)
389#define GblStringView_toUint8Default_(...)
390 GblStringView_toUint8Default__
(__VA_ARGS__, NULL
)
391#define GblStringView_toUint8Default__(self, success, ...)
392 ((GblStringView_toUint8
)(self, success))
394#define GblStringView_toUint16(...)
395 GblStringView_toUint16Default_
(__VA_ARGS__)
396#define GblStringView_toUint16Default_(...)
397 GblStringView_toUint16Default__
(__VA_ARGS__, NULL
)
398#define GblStringView_toUint16Default__(self, success, ...)
399 ((GblStringView_toUint16
)(self, success))
401#define GblStringView_toInt16(...)
402 GblStringView_toInt16Default_
(__VA_ARGS__)
403#define GblStringView_toInt16Default_(...)
404 GblStringView_toInt16Default__
(__VA_ARGS__, NULL
)
405#define GblStringView_toInt16Default__(self, success, ...)
406 ((GblStringView_toInt16
)(self, success))
408#define GblStringView_toUint32(...)
409 GblStringView_toUint32Default_
(__VA_ARGS__)
410#define GblStringView_toUint32Default_(...)
411 GblStringView_toUint32Default__
(__VA_ARGS__, NULL
)
412#define GblStringView_toUint32Default__(self, success, ...)
413 ((GblStringView_toUint32
)(self, success))
415#define GblStringView_toInt32(...)
416 GblStringView_toInt32Default_
(__VA_ARGS__)
417#define GblStringView_toInt32Default_(...)
418 GblStringView_toInt32Default__
(__VA_ARGS__, NULL
)
419#define GblStringView_toInt32Default__(self, success, ...)
420 ((GblStringView_toInt32
)(self, success))
422#define GblStringView_toUint64(...)
423 GblStringView_toUint64Default_
(__VA_ARGS__)
424#define GblStringView_toUint64Default_(...)
425 GblStringView_toUint64Default__
(__VA_ARGS__, NULL
)
426#define GblStringView_toUint64Default__(self, success, ...)
427 ((GblStringView_toUint64
)(self, success))
429#define GblStringView_toInt64(...)
430 GblStringView_toInt64Default_
(__VA_ARGS__)
431#define GblStringView_toInt64Default_(...)
432 GblStringView_toInt64Default__
(__VA_ARGS__, NULL
)
433#define GblStringView_toInt64Default__(self, success, ...)
434 ((GblStringView_toInt64
)(self, success))
436#define GblStringView_toFloat(...)
437 GblStringView_toFloatDefault_
(__VA_ARGS__)
438#define GblStringView_toFloatDefault_(...)
439 GblStringView_toFloatDefault__
(__VA_ARGS__, NULL
)
440#define GblStringView_toFloatDefault__(self, success, ...)
441 ((GblStringView_toFloat
)(self, success))
443#define GblStringView_toDouble(...)
444 GblStringView_toDoubleDefault_
(__VA_ARGS__)
445#define GblStringView_toDoubleDefault_(...)
446 GblStringView_toDoubleDefault__
(__VA_ARGS__, NULL
)
447#define GblStringView_toDoubleDefault__(self, success, ...)
448 ((GblStringView_toDouble
)(self, success))
450#define GblStringView_toPointer(...)
451 GblStringView_toPointerDefault_
(__VA_ARGS__)
452#define GblStringView_toPointerDefault_(...)
453 GblStringView_toPointerDefault__
(__VA_ARGS__, NULL
)
454#define GblStringView_toPointerDefault__(self, success, ...)
455 ((GblStringView_toPointer
)(self, success))
#define GBL_VA_OVERLOAD_CALL_ARGC(BASE,...)
#define GBL_BIT_FIELDS(...)
Used to declare an endian-independent group of bitfields.
#define GBL_STRING_VIEW_NPOS
Constant value used to signify the last position or an invalid position in a GblStringView.
#define GBL_STRING_VIEW_CSTR_ALLOCA(view)
Convenience macro for creating a NULL-terminated C string from a GblStringView on the stack,...
uint32_t GblHash
Type representing a calculated numeric hash across the codebase.
uint8_t GblBool
Basic boolean type, standardized to sizeof(char)
uintptr_t GblQuark
Uniquely identifiable interned string type.
Immutable substring type.
const char * pData
Start address of the string being viewed.