fixup _Generic macro usage

distinct macros failed (didn't realize). Was able to get proper setup with _Generic_L2 pattern
This commit is contained in:
2025-02-12 00:19:04 -05:00
parent 90836817e9
commit d80a6b61da
16 changed files with 188 additions and 178 deletions
+4 -1
View File
@@ -90,7 +90,10 @@
"timeapi.h": "c",
"stdlib.h": "c",
"metadesk_deps.h": "c",
"stdbool.h": "c"
"stdbool.h": "c",
"map": "c",
"unordered_map": "c",
"stdint.h": "c"
},
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#713fb8",
+4 -1
View File
@@ -16,6 +16,9 @@ Macros:
- md_enum_underlying(type)=type
# WhitespaceSensitiveMacros: [
# ]
IfMacros:
- _Generic_L2
- _Generic_L3
# TypenameMacros: [Array, Hashtable]
SkipMacroDefinitionBody: false
@@ -99,7 +102,7 @@ BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakStringLiterals: true
ColumnLimit: 180
ColumnLimit: 160
CompactNamespaces: true
+29 -29
View File
@@ -9,33 +9,33 @@
#if defined( COMPILER_MSVC )
# if _MSC_VER < 1300
typedef distinct(unsigned char, U8);
typedef distinct(signed char, S8);
typedef distinct(unsigned short, U16);
typedef distinct(signed short, S16);
typedef distinct(unsigned int, U32);
typedef distinct(signed int, S32);
typedef unsigned char, U8;
typedef signed char, S8;
typedef unsigned short, U16;
typedef signed short, S16;
typedef unsigned int, U32;
typedef signed int, S32;
# else
typedef distinct(unsigned __int8, U8);
typedef distinct(signed __int8, S8);
typedef distinct(unsigned __int16, U16);
typedef distinct(signed __int16, S16);
typedef distinct(unsigned __int32, U32);
typedef distinct(signed __int32, S32);
typedef unsigned __int8 U8;
typedef signed __int8 S8;
typedef unsigned __int16 U16;
typedef signed __int16 S16;
typedef unsigned __int32 U32;
typedef signed __int32 S32;
# endif
typedef distinct(unsigned __int64, U64);
typedef distinct(signed __int64, S64);
typedef unsigned __int64 U64;
typedef signed __int64 S64;
#else
# include <stdint.h>
typedef distinct(uint8_t, U8);
typedef distinct(int8_t, S8);
typedef distinct(uint16_t, U16);
typedef distinct(int16_t, S16);
typedef distinct(uint32_t, U32);
typedef distinct(int32_t, S32);
typedef distinct(uint64_t, U64);
typedef distinct(int64_t, S64);
typedef uint8_t, U8;
typedef int8_t, S8;
typedef uint16_t, U16;
typedef int16_t, S16;
typedef uint32_t, U32;
typedef int32_t, S32;
typedef uint64_t, U64;
typedef int64_t, S64;
#endif
typedef struct U128 U128;
@@ -53,8 +53,8 @@ static_assert( sizeof( U16 ) == 2, "sizeof(U16) != 2" );
static_assert( sizeof( U32 ) == 4, "sizeof(U32) != 4" );
static_assert( sizeof( U64 ) == 8, "sizeof(U64) != 8" );
typedef distinct(size_t, USIZE);
typedef distinct(ptrdiff_t, SSIZE);
typedef size_t USIZE;
typedef ptrdiff_t SSIZE;
static_assert( sizeof( USIZE ) == sizeof( SSIZE ), "sizeof(USIZE) != sizeof(SSIZE)" );
@@ -84,15 +84,15 @@ typedef intptr_t SPTR;
static_assert( sizeof( UPTR ) == sizeof( SPTR ), "sizeof(UPTR) != sizeof(SPTR)" );
typedef distinct(float, F32);
typedef distinct(double, F64);
typedef float F32;
typedef double F64;
static_assert( sizeof( F32 ) == 4, "sizeof(F32) != 4" );
static_assert( sizeof( F64 ) == 8, "sizeof(F64) != 8" );
typedef distinct(S8, B8);
typedef distinct(S16, B16);
typedef distinct(S32, B32);
typedef S8 B8;
typedef S16 B16;
typedef S32 B32;
typedef void VoidProc(void);
distinct_register_selector(VoidProc);
+4 -4
View File
@@ -61,15 +61,15 @@ MD_API CmdLine cmd_line_from_string_list__ainfo(AllocatorInfo ainfo, String
_Generic(allocator, \
Arena*: cmd_line_insert_opt__arena, \
AllocatorInfo: cmd_line_insert_opt__ainfo, \
default: assert_generic_selection_fail \
) resolved_function_call(allocator, cmd_line, string, values)
default: assert_generic_sel_fail \
) generic_call(allocator, cmd_line, string, values)
#define cmd_line_from_string_list(allocator, arguments) \
_Generic(allocator, \
Arena*: cmd_line_from_string_list__arena, \
AllocatorInfo: cmd_line_from_string_list__ainfo, \
default: assert_generic_selection_fail \
) resolved_function_call(allocator, arguments)
default: assert_generic_sel_fail \
) generic_call(allocator, arguments)
inline U64
cmd_line_hash_from_string(String8 string) {
+36 -37
View File
@@ -34,8 +34,8 @@
#define generic_sel_entry_comma_delimiter select_arg_3 // Use the arg expansion macro to select arg 3 which should have the comma delimiter ','.
#endif
#ifndef resolved_function_call
#define resolved_function_call // Just used to indicate where the call "occurs"
#ifndef generic_call
#define generic_call // Just used to indicate where the call "occurs"
#endif
// ----------------------------------------------------------------------------------------------------------------------------------
@@ -54,7 +54,7 @@ typedef struct UNRESOLVED_GENERIC_SELECTION UNRESOLVED_GENERIC_SELECTION;
struct UNRESOLVED_GENERIC_SELECTION {
void* _THE_VOID_SLOT_;
};
UNRESOLVED_GENERIC_SELECTION const assert_generic_selection_fail = {0};
UNRESOLVED_GENERIC_SELECTION const assert_generic_sel_fail = {0};
// Which will provide the message: error: called object type 'struct NO_RESOLVED_GENERIC_SELECTION' is not a function or function pointer
// ----------------------------------------------------------------------------------------------------------------------------------
@@ -65,8 +65,8 @@ UNRESOLVED_GENERIC_SELECTION const assert_generic_selection_fail = {0};
/* Extendibility slots: */ \
if_generic_selector_defined_include_slot( GENERIC_SLOT_1__function_sig ) \
if_generic_selector_defined_include_slot( GENERIC_SLOT_2__function_sig ) \
default: assert_generic_selection_fail \
) resolved_function_call( selector_arg )
default: assert_generic_sel_fail \
) generic_call( selector_arg )
// ----------------------------------------------------------------------------------------------------------------------------------
// Then each definiton of a function has an associated define:
@@ -99,8 +99,8 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435
if_generic_selector_defined_include_slot( GENERIC_SLOT_6__example_hash ) \
if_generic_selector_defined_include_slot( GENERIC_SLOT_7__example_hash ) \
if_generic_selector_defined_include_slot( GENERIC_SLOT_8__example_hash ) \
default: assert_generic_selection_fail \
) resolved_function_call( function_arguments )
default: assert_generic_sel_fail \
) generic_call( function_arguments )
// Additional Variations:
@@ -111,8 +111,8 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435
if_generic_selector_defined_include_slot( GENERIC_SLOT_2__function_sig ) \
/* ... */ \
if_generic_selector_defined_include_slot(GENERIC_SLOT_N__function_sig ) \
default: assert_generic_selection_fail \
) resolved_function_call( selector_arg, __VA_ARG__ )
default: assert_generic_sel_fail \
) generic_call( selector_arg, __VA_ARG__ )
// If the function does not take the arugment as a parameter:
#define function_generic_example_direct_type( selector_arg ) _Generic( \
@@ -121,8 +121,8 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435
if_generic_selector_defined_include_slot( GENERIC_SLOT_2__function_sig ) \
/* ... */ \
if_generic_selector_defined_include_slot(GENERIC_SLOT_N__function_sig ) \
default: assert_generic_selection_fail \
) resolved_function_call()
default: assert_generic_sel_fail \
) generic_call(selector_arg)
#ifndef type_to_expression
@@ -132,38 +132,37 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435
#endif
// _Generic also suffers from type compability flatting distinctions between typedef by resolving the selection to the underling type and qualifier.
// To resolve this these distinctions must be enforced using structs that enforce the typedef
// To resolve this these distinctions must be enforce by keeping "compatible" types in separate _Generic expressions:
#ifndef distinct_register_selector
// Will define the metadata struct for generic selection usage with the distinct_lookup function macro
// Generally does not need to be used unless getting an error similar to: "_Generic association compatible with previous association type"
#define distinct_register_selector(type) typedef struct { type* UNUSED__; } Distinct_Typedef_ ## type
#endif
#define example_with__l2(expr) _Generic( \
(expr), \
S64 : example_with_s64, \
default: assert_generic_sel_fail \
)
#define example_with(expr) \
_Generic((expr), \
SSIZE : example_with_SSIZEZ \
default : example_with_not_SSIZE(allocator, in) \
) generic_call(allocator, in)
#ifndef distinct_lookup
// This is used by a generic selector to lookup a unique struct typeid of a typedef if distinct_register_selector function macro was utilized
// Only necessary to use with _Generic if getting an error similar to: "_Generic association compatible with previous association type"
#define distinct_lookup(type) Distinct_Typedef_ ## type
#endif
// This can be made more concise with he following "layer" indicating _Generic macros
// Example: -------------------------------------------------------------------------------------------------------------------------
// Now this can work so long as typedef_generic_selector was used on the S64 && SSIZE typedefs
#define generic_example_do_something_with(selector_arg, in) _Generic( \
(selector_arg), \
distinct_lookup(S64) : do_something_with_s64, default: assert_generic_selection_fail, \
distinct_lookup(SSIZE): do_something_with_ssize, default: assert_generic_selection_fail, \
default : assert_generic_selection_fail \
) resolved_function_call(selector_arg)
// ----------------------------------------------------------------------------------------------------------------------------------
#define _Generic_L2(expr, ...) default: _Generic(expr, __VA_ARGS__)
#define _Generic_L3(expr, ...) default: _Generic(expr, __VA_ARGS__)
#ifndef distinct
// Can inlay with typedef and a distinct_register_selector. Usage: typedef distinct(int, SomeType);
// Generally does not need to be used unless getting an error similar to: "_Generic association compatible with previous association type"
// Use distinct_lookup, to resolve the distinct type for the generic selection entry.
#define distinct(underlying_type, type) underlying_type type; distinct_register_selector(type)
#endif
#define example_with_generic_layers(expr) \
_Generic( (expr), \
S64 : example_with_s64, \
_Generic_L2((expr), \
SSIZE: example_with_SSIZZE \
default: assert_generic_sel_fail \
), \
) generic_call(expr)
// Removing example definitions
#undef example_with
#undef example_with__l2
#undef example_with_generic_layers
#undef function_generic_example
#undef GENERIC_SLOT_1__example_hash
#undef GENERIC_SLOT_2__example_hash
+6
View File
@@ -179,3 +179,9 @@
} \
while(0);
#endif
#define ct_if(expr, then, else) _Generic( \
(&(char[1 + !!(EXPR)]){0}), \
char (*)[2]: (THEN), \
char (*)[1]: (ELSE) \
)
+2 -2
View File
@@ -972,8 +972,8 @@ void rng1s64_list_push__ainfo (AllocatorInfo ainfo, Rng1S64Lis
Rng1S64Array rng1s64_array_from_list_push__arena(Arena* arena, Rng1S64List* list);
Rng1S64Array rng1s64_array_from_list_push__ainfo(AllocatorInfo ainfo, Rng1S64List* list);
#define rng1s64_list_push(allocator, list, rng) _Generic(allocator, Arena*: rng1s64_list_push__arena, AllocatorInfo: rng1s64_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, rng)
#define rng1s64_array_from_list_push(allocator, list) _Generic(allocator, Arena*: rng1s64_array_from_list_push__arena, AllocatorInfo: rng1s64_array_from_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list)
#define rng1s64_list_push(allocator, list, rng) _Generic(allocator, Arena*: rng1s64_list_push__arena, AllocatorInfo: rng1s64_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, rng)
#define rng1s64_array_from_list_push(allocator, list) _Generic(allocator, Arena*: rng1s64_array_from_list_push__arena, AllocatorInfo: rng1s64_array_from_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list)
force_inline void rng1s64_list_push__arena (Arena* arena, Rng1S64List* list, Rng1S64 rng) { rng1s64_list_push__ainfo (arena_allocator(arena), list, rng); }
force_inline Rng1S64Array rng1s64_array_from_list_push__arena(Arena* arena, Rng1S64List* list) { return rng1s64_array_from_list_push__ainfo(arena_allocator(arena), list); }
+1 -1
View File
@@ -296,7 +296,7 @@ varena_allocator_proc(void* allocator_data, AllocatorMode mode, SSIZE requested_
{
case AllocatorMode_Alloc:
{
assert(requested_size != 0);
assert_msg(requested_size != 0, "requested_size is 0");
requested_size = align_pow2(requested_size, alignment);
+69 -68
View File
@@ -238,7 +238,7 @@ inline U64 cstring8_length (U8* c) { U8* p = c; for (; *p != 0; p += 1); retur
inline U64 cstring16_length(U16* c) { U16* p = c; for (; *p != 0; p += 1); return(p - c); }
inline U64 cstring32_length(U32* c) { U32* p = c; for (; *p != 0; p += 1); return(p - c); }
#define cstring_length(c) _Generic(c, U8: cstring8_length, U16: cstring16_length, U32: cstring32_length)(c)
#define cstring_length(c) _Generic(c, U8*: cstring8_length, U16*: cstring16_length, U32*: cstring32_length)(c)
////////////////////////////////
//~ rjf: String Constructors
@@ -322,10 +322,10 @@ MD_API String8 str8_copy__ainfo(AllocatorInfo ainfo, String8 s);
MD_API String8 str8fv__ainfo (AllocatorInfo ainfo, char* fmt, va_list args);
String8 str8f__ainfo (AllocatorInfo ainfo, char* fmt, ...);
#define str8_cat(allocator, s1, s2) _Generic(allocator, Arena*: str8_cat__arena, AllocatorInfo: str8_cat__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, s1, s2)
#define str8_copy(allocator, s) _Generic(allocator, Arena*: str8_copy__arena, AllocatorInfo: str8_copy__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, s)
#define str8fv(allocator, fmt, args) _Generic(allocator, Arena*: str8fv__arena, AllocatorInfo: str8fv__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, fmt, args)
#define str8f(allocator, fmt, ...) _Generic(allocator, Arena*: str8f__arena, AllocatorInfo: str8f__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, fmt, __VA_ARGS__)
#define str8_cat(allocator, s1, s2) _Generic(allocator, Arena*: str8_cat__arena, AllocatorInfo: str8_cat__ainfo, default: assert_generic_sel_fail) generic_call(allocator, s1, s2)
#define str8_copy(allocator, s) _Generic(allocator, Arena*: str8_copy__arena, AllocatorInfo: str8_copy__ainfo, default: assert_generic_sel_fail) generic_call(allocator, s)
#define str8fv(allocator, fmt, args) _Generic(allocator, Arena*: str8fv__arena, AllocatorInfo: str8fv__ainfo , default: assert_generic_sel_fail) generic_call(allocator, fmt, args)
#define str8f(allocator, fmt, ...) _Generic(allocator, Arena*: str8f__arena, AllocatorInfo: str8f__ainfo , default: assert_generic_sel_fail) generic_call(allocator, fmt, __VA_ARGS__)
force_inline String8 str8_cat__arena (Arena* arena, String8 s1, String8 s2) { return str8_cat__ainfo (arena_allocator(arena), s1, s2); }
force_inline String8 str8_copy__arena(Arena* arena, String8 s) { return str8_copy__ainfo(arena_allocator(arena), s); }
@@ -409,9 +409,9 @@ inline String8 upper_from_str8__ainfo (AllocatorInfo ainfo, String8 string)
inline String8 lower_from_str8__ainfo (AllocatorInfo ainfo, String8 string) { string = str8_copy(ainfo, string); for(U64 idx = 0; idx < string.size; idx += 1) { string.str[idx] = char_to_lower(string.str[idx]); } return string; }
inline String8 backslashed_from_str8__ainfo(AllocatorInfo ainfo, String8 string) { string = str8_copy(ainfo, string); for(U64 idx = 0; idx < string.size; idx += 1) { string.str[idx] = char_is_slash(string.str[idx]) ? '\\' : string.str[idx]; } return string; }
#define upper_from_str8(allocator, string) _Generic(allocator, Arena*: upper_from_str8__arena, AllocatorInfo: upper_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string)
#define lower_from_str8(allocator, string) _Generic(allocator, Arena*: lower_from_str8__arena, AllocatorInfo: lower_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string)
#define backslashed_from_str8(allocator, string) _Generic(allocator, Arena*: backslashed_from_str8__arena, AllocatorInfo: backslashed_from_str8__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, string)
#define upper_from_str8(allocator, string) _Generic(allocator, Arena*: upper_from_str8__arena, AllocatorInfo: upper_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string)
#define lower_from_str8(allocator, string) _Generic(allocator, Arena*: lower_from_str8__arena, AllocatorInfo: lower_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string)
#define backslashed_from_str8(allocator, string) _Generic(allocator, Arena*: backslashed_from_str8__arena, AllocatorInfo: backslashed_from_str8__ainfo , default: assert_generic_sel_fail) generic_call(allocator, string)
////////////////////////////////
//~ rjf: String Matching
@@ -461,12 +461,12 @@ MD_API String8 str8_from_s64__ainfo (AllocatorInfo ainfo, S64 u64, U32 ra
String8 str8_from_bits_u32__ainfo(AllocatorInfo ainfo, U32 x);
String8 str8_from_bits_u64__ainfo(AllocatorInfo ainfo, U64 x);
#define str8_from_memory_size(allocator, z) _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, z)
#define str8_from_u64(allocator, u64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_u64__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, u64, radix, min_digits, digit_group_separator)
#define str8_from_s64(allocator, s64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, s64, radix, min_digits, digit_group_separator)
#define str8_from_memory_size(allocator, z) _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_sel_fail) generic_call(allocator, z)
#define str8_from_u64(allocator, u64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_u64__ainfo, default: assert_generic_sel_fail) generic_call(allocator, u64, radix, min_digits, digit_group_separator)
#define str8_from_s64(allocator, s64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo , default: assert_generic_sel_fail) generic_call(allocator, s64, radix, min_digits, digit_group_separator)
#define str8_from_bits_u32(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u32__arena, AllocatorInfo: str8_from_bits_u32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, x)
#define str8_from_bits_u64(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u64__arena, AllocatorInfo: str8_from_bits_u64__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, x)
#define str8_from_bits_u32(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u32__arena, AllocatorInfo: str8_from_bits_u32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, x)
#define str8_from_bits_u64(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u64__arena, AllocatorInfo: str8_from_bits_u64__ainfo, default: assert_generic_sel_fail) generic_call(allocator, x)
force_inline String8 str8_from_memory_size__arena(Arena* arena, SSIZE z) { return str8_from_memory_size__ainfo(arena_allocator(arena), z); }
force_inline String8 str8_from_u64__arena (Arena* arena, U64 u64, U32 radix, U8 min_digits, U8 digit_group_separator) { return str8_from_u64__ainfo (arena_allocator(arena), u64, radix, min_digits, digit_group_separator); }
@@ -663,12 +663,12 @@ String8Node* str8_list_push_front__ainfo (AllocatorInfo ainfo, String8List* list
String8Node* str8_list_pushf__ainfo (AllocatorInfo ainfo, String8List* list, char* fmt, ...);
String8Node* str8_list_push_frontf__ainfo(AllocatorInfo ainfo, String8List* list, char* fmt, ...);
#define str8_list_aligner(allocator, list, min, align) _Generic(allocator, Arena*: str8_list_aligner__arena, AllocatorInfo: str8_list_aligner__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, min, align)
#define str8_list_copy(allocator, list) _Generic(allocator, Arena*: str8_list_copy__arena, AllocatorInfo: str8_list_copy__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list)
#define str8_list_push(allocator, list, string) _Generic(allocator, Arena*: str8_list_push__arena, AllocatorInfo: str8_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, string)
#define str8_list_push_front(allocator, list, string) _Generic(allocator, Arena*: str8_list_push_front__arena, AllocatorInfo: str8_list_push_front__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, string)
#define str8_list_pushf(allocator, list, fmt, ...) _Generic(allocator, Arena*: str8_list_pushf__arena, AllocatorInfo: str8_list_pushf__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, fmt, __VA_ARGS__)
#define str8_list_push_frontf(allocaotr, list, fmt, ...) _Generic(allocator, Arena*: str8_list_push_frontf__arena, AllocatorInfo: str8_list_push_frontf__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, fmt, __VA_ARGS__)
#define str8_list_aligner(allocator, list, min, align) _Generic(allocator, Arena*: str8_list_aligner__arena, AllocatorInfo: str8_list_aligner__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, min, align)
#define str8_list_copy(allocator, list) _Generic(allocator, Arena*: str8_list_copy__arena, AllocatorInfo: str8_list_copy__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list)
#define str8_list_push(allocator, list, string) _Generic(allocator, Arena*: str8_list_push__arena, AllocatorInfo: str8_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, string)
#define str8_list_push_front(allocator, list, string) _Generic(allocator, Arena*: str8_list_push_front__arena, AllocatorInfo: str8_list_push_front__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, string)
#define str8_list_pushf(allocator, list, fmt, ...) _Generic(allocator, Arena*: str8_list_pushf__arena, AllocatorInfo: str8_list_pushf__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, fmt, __VA_ARGS__)
#define str8_list_push_frontf(allocaotr, list, fmt, ...) _Generic(allocator, Arena*: str8_list_push_frontf__arena, AllocatorInfo: str8_list_push_frontf__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, fmt, __VA_ARGS__)
force_inline String8Node* str8_list_ligner__arena (Arena* arena, String8List* list, U64 min, U64 align) { return str8_list_aligner__ainfo (arena_allocator(arena), list, min, align); }
force_inline String8List str8_list_copy__arena (Arena* arena, String8List* list) { return str8_list_copy__ainfo (arena_allocator(arena), list); }
@@ -745,10 +745,10 @@ MD_API String8 str8_list_join__ainfo (AllocatorInfo ainfo, String8List* lis
void str8_list_from_flags__arena(Arena* arena, String8List* list, U32 flags, String8* flag_string_table, U32 flag_string_count);
void str8_list_from_flags__ainfo(AllocatorInfo ainfo, String8List* list, U32 flags, String8* flag_string_table, U32 flag_string_count);
#define str8_split(allocator, string, split_chars, split_char_count, flags) _Generic(allocator, Arena*: str8_split__arena, AllocatorInfo: str8_split__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string, split_chars, split_char_count, flags)
#define str8_split_by_string_chars(allocator, string, split_chars, flags) _Generic(allocator, Arena*: str8_split_by_string_chars__arena, AllocatorInfo: str8_split_by_string_chars__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string, split_chars, flags)
#define str8_list_split_by_string_chars(allocator, list, split_chars, flags) _Generic(allocator, Arena*: str8_list_split_by_string_chars__arena, AllocatorInfo: str8_list_split_by_string_chars__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, split_chars, flags)
#define str8_list_join(allocator, list, params) _Generic(allocator, Arena*: str8_list_join__arena, AllocatorInfo: str8_list_join__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, params )
#define str8_split(allocator, string, split_chars, split_char_count, flags) _Generic(allocator, Arena*: str8_split__arena, AllocatorInfo: str8_split__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string, split_chars, split_char_count, flags)
#define str8_split_by_string_chars(allocator, string, split_chars, flags) _Generic(allocator, Arena*: str8_split_by_string_chars__arena, AllocatorInfo: str8_split_by_string_chars__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string, split_chars, flags)
#define str8_list_split_by_string_chars(allocator, list, split_chars, flags) _Generic(allocator, Arena*: str8_list_split_by_string_chars__arena, AllocatorInfo: str8_list_split_by_string_chars__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, split_chars, flags)
#define str8_list_join(allocator, list, params) _Generic(allocator, Arena*: str8_list_join__arena, AllocatorInfo: str8_list_join__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, params )
force_inline String8List str8_split__arena (Arena* arena, String8 string, U8* split_chars, U64 split_char_count, StringSplitFlags flags) { return str8_split__ainfo (arena_allocator(arena), string, split_chars, split_char_count, flags); }
force_inline String8List str8_split_by_string_chars__arena (Arena* arena, String8 string, String8 split_chars, StringSplitFlags flags) { return str8_split_by_string_chars__ainfo (arena_allocator(arena), string, split_chars, flags); }
@@ -785,8 +785,8 @@ str8_list_from_flags__ainfo(AllocatorInfo ainfo, String8List* list, U32 flags, S
////////////////////////////////
//~ rjf; String Arrays
#define str8_array_from_list(allocator, list) _Generic(allocator, Arena*: str8_array_from_list__arena, AllocatorInfo: str8_array_from_list__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list)
#define str8_array_reserve(allocator, count) _Generic(allocaotr, Arena*: str8_array_reserve__arena AllocatorInfo: str8_array_reserve__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, count)
#define str8_array_from_list(allocator, list) _Generic(allocator, Arena*: str8_array_from_list__arena, AllocatorInfo: str8_array_from_list__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list)
#define str8_array_reserve(allocator, count) _Generic(allocaotr, Arena*: str8_array_reserve__arena AllocatorInfo: str8_array_reserve__ainfo, default: assert_generic_sel_fail) generic_call(allocator, count)
inline String8Array
str8_array_from_list__ainfo(AllocatorInfo ainfo, String8List* list) {
@@ -822,14 +822,14 @@ MD_API String8 str8_skip_last_dot (String8 string);
force_inline String8List str8_split_path__arena(Arena* arena, String8 string) { String8List result = str8_split(arena, string, (U8*)"/\\", 2, 0); return(result); }
force_inline String8List str8_split_path__ainfo(AllocatorInfo ainfo, String8 string) { String8List result = str8_split(ainfo, string, (U8*)"/\\", 2, 0); return(result); }
#define str8_split_path(allocator, string) _Generic(allocator, Arena*: str8_split_path__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string)
#define str8_split_path(allocator, string) _Generic(allocator, Arena*: str8_split_path__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string)
MD_API PathStyle path_style_from_str8 (String8 string);
MD_API void str8_path_list_resolve_dots_in_place( String8List* path, PathStyle style);
MD_API String8 str8_path_list_join_by_style__arena (Arena* arena, String8List* path, PathStyle style);
MD_API String8 str8_path_list_join_by_style__ainfo (AllocatorInfo ainfo, String8List* path, PathStyle style);
#define str8_path_list_join_by_style(allocator, path, style) _Generic(allocator, Arena*: str8_path_list_join_by_style__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path, style)
#define str8_path_list_join_by_style(allocator, path, style) _Generic(allocator, Arena*: str8_path_list_join_by_style__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path, style)
force_inline String8 str8_path_list_join_by_style__arena(Arena* arena, String8List* path, PathStyle style) { return str8_path_list_join_by_style__ainfo(arena_allocator(arena), path, style); }
@@ -870,10 +870,10 @@ inline U32 utf8_from_utf32_single(U8* buffer, U32 character){ return(utf8_encode
////////////////////////////////
//~ rjf: Unicode String Conversions
#define str8_from_str16(allocator, string_in) _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in)
#define str16_from_str8(allocator, string_in) _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in)
#define str8_from_str32(allocator, string_in) _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in)
#define str32_from_str8(allocator, string_in) _Generic(allocator, Arena*: str32_from_str8__arena, AllocatorInfo: str32_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in)
#define str8_from_str16(allocator, string_in) _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in)
#define str16_from_str8(allocator, string_in) _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in)
#define str8_from_str32(allocator, string_in) _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in)
#define str32_from_str8(allocator, string_in) _Generic(allocator, Arena*: str32_from_str8__arena, AllocatorInfo: str32_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in)
MD_API String8 str8_from_str16__arena(Arena* arena, String16 in);
MD_API String16 str16_from_str8__arena(Arena* arena, String8 in);
@@ -1011,9 +1011,9 @@ MD_API String8 date_time_string__ainfo (AllocatorInfo ainfo, DateTime*
MD_API String8 file_name_date_time_string__ainfo(AllocatorInfo ainfo, DateTime* date_time);
MD_API String8 string_from_elapsed_time__ainfo (AllocatorInfo ainfo, DateTime date_time);
#define date_time_string(allocator, date_time) _Generic(allocator, Arena*: date_time_string__arena, AllocatorInfo: date_time_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, date_time)
#define file_name_date_time_string(allocator, date_time) _Generic(allocator, Arena*: file_name_date_time_string__arena, AllocatorInfo: file_name_date_time_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, date_time)
#define string_from_elapsed_time(allocator, date_time) _Generic(allocator, Arena*: string_from_elapsed_time__arena, AllocatorInfo: string_from_elapsed_time__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, date_time)
#define date_time_string(allocator, date_time) _Generic(allocator, Arena*: date_time_string__arena, AllocatorInfo: date_time_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, date_time)
#define file_name_date_time_string(allocator, date_time) _Generic(allocator, Arena*: file_name_date_time_string__arena, AllocatorInfo: file_name_date_time_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, date_time)
#define string_from_elapsed_time(allocator, date_time) _Generic(allocator, Arena*: string_from_elapsed_time__arena, AllocatorInfo: string_from_elapsed_time__ainfo, default: assert_generic_sel_fail) generic_call(allocator, date_time)
force_inline String8 push_date_time_string__arena (Arena* arena, DateTime* date_time) { return date_time_string__ainfo (arena_allocator(arena), date_time); }
force_inline String8 push_file_name_date_time_string__arena(Arena* arena, DateTime* date_time) { return file_name_date_time_string__ainfo(arena_allocator(arena), date_time); }
@@ -1060,7 +1060,7 @@ string_from_guid__ainfo(AllocatorInfo ainfo, Guid guid) {
return result;
}
#define string_from_guid(allocator, guid) _Generic(allocator, Arena*: string_from_guid__arena, AllocatorInfo: string_from_guid__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, guid)
#define string_from_guid(allocator, guid) _Generic(allocator, Arena*: string_from_guid__arena, AllocatorInfo: string_from_guid__ainfo, default: assert_generic_sel_fail) generic_call(allocator, guid)
inline Guid guid_from_string(String8 string) { Guid guid = {0}; try_guid_from_string(string, &guid); return guid; }
@@ -1072,7 +1072,7 @@ MD_API B32 try_guid_from_string(String8 string, Guid* guid_out);
String8 indented_from_string__arena(Arena* arena, String8 string);
MD_API String8 indented_from_string__ainfo(AllocatorInfo arena, String8 string);
#define indented_from_string(allocator, string) _Generic(allocator, Arena*: indented_from_string__arena, AllocatorInfo: indented_from_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string)
#define indented_from_string(allocator, string) _Generic(allocator, Arena*: indented_from_string__arena, AllocatorInfo: indented_from_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string)
force_inline String8 indented_from_string__arena(Arena* arena, String8 string) { return indented_from_string__ainfo(arena_allocator(arena), string); }
@@ -1084,8 +1084,8 @@ MD_API String8 escaped_from_raw_str8__ainfo(AllocatorInfo ainfo, String8 string)
String8 raw_from_escaped_str8__arena(Arena* arena, String8 string);
MD_API String8 raw_from_escaped_str8__ainfo(AllocatorInfo ainfo, String8 string);
#define escaped_from_raw_str8(allocator, string) _Generic(allocator, Arena*: escaped_from_raw_str8__arena, AllocatorInfo: escaped_from_raw_str8__ainfo(, default): assert_generic_selection_fail) resolved_function_call(allocator, string)
#define raw_from_escaped_str8(allocator, string) _Generic(allocator, Arena*: raw_from_escaped_str8__arena, AllocatorInfo: raw_from_escaped_str8__ainfo(, default): assert_generic_selection_fail) resolved_function_call(allocator, string)
#define escaped_from_raw_str8(allocator, string) _Generic(allocator, Arena*: escaped_from_raw_str8__arena, AllocatorInfo: escaped_from_raw_str8__ainfo(, default): assert_generic_sel_fail) generic_call(allocator, string)
#define raw_from_escaped_str8(allocator, string) _Generic(allocator, Arena*: raw_from_escaped_str8__arena, AllocatorInfo: raw_from_escaped_str8__ainfo(, default): assert_generic_sel_fail) generic_call(allocator, string)
force_inline String8 escaped_from_raw_str8__arena(Arena* arena, String8 string) { return escaped_from_raw_str8__ainfo(arena_allocator(arena), string); }
force_inline String8 raw_from_escaped_str8__arena(Arena* arena, String8 string) { return raw_from_escaped_str8__ainfo(arena_allocator(arena), string); }
@@ -1097,7 +1097,7 @@ force_inline String8 raw_from_escaped_str8__arena(Arena* arena, String8 string)
MD_API String8List wrapped_lines_from_string__ainfo(AllocatorInfo ainfo, String8 string, U64 first_line_max_width, U64 max_width, U64 wrap_indent);
#define wrapped_lines_from_string(allocator, string, first_line_max_width, max_width, wrap_indent) \
_Generic(allocator, Arena*: wrapped_lines_from_string__arena, AllocatorInfo: wrapped_lines_from_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string, first_line_max_width, max_width, wrap_indent)
_Generic(allocator, Arena*: wrapped_lines_from_string__arena, AllocatorInfo: wrapped_lines_from_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string, first_line_max_width, max_width, wrap_indent)
force_inline String8List wrapped_lines_from_string__arena(Arena* arena, String8 string, U64 first_line_max_width, U64 max_width, U64 wrap_indent) { return wrapped_lines_from_string__ainfo(arena_allocator(arena), string, first_line_max_width, max_width, wrap_indent); }
@@ -1107,7 +1107,7 @@ force_inline String8List wrapped_lines_from_string__arena(Arena* arena, String8
inline String8 hex_string_from_rgba_4f32__arena(Arena* arena, Vec4F32 rgba) { String8 hex_string = str8f(arena, "%02x%02x%02x%02x", (U8)(rgba.x * 255.f), (U8)(rgba.y * 255.f), (U8)(rgba.z * 255.f), (U8)(rgba.w * 255.f)); return hex_string; }
inline String8 hex_string_from_rgba_4f32__ainfo(AllocatorInfo ainfo, Vec4F32 rgba) { String8 hex_string = str8f(ainfo, "%02x%02x%02x%02x", (U8)(rgba.x * 255.f), (U8)(rgba.y * 255.f), (U8)(rgba.z * 255.f), (U8)(rgba.w * 255.f)); return hex_string; }
#define hex_string_from_rgba_4f32(allocator, rgba) _Generic(allocator, Arena*: hex_string_from_rgba_4f32__arena, AllocatorInfo: hex_string_from_rgba_4f32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, rgba)
#define hex_string_from_rgba_4f32(allocator, rgba) _Generic(allocator, Arena*: hex_string_from_rgba_4f32__arena, AllocatorInfo: hex_string_from_rgba_4f32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, rgba)
MD_API Vec4F32 rgba_from_hex_string_4f32(String8 hex_string);
@@ -1119,8 +1119,8 @@ MD_API FuzzyMatchRangeList fuzzy_match_find__ainfo (AllocatorInfo ainf
FuzzyMatchRangeList fuzzy_match_range_list_copy__arena(Arena* arena, FuzzyMatchRangeList* src);
MD_API FuzzyMatchRangeList fuzzy_match_range_list_copy__ainfo(AllocatorInfo ainfo, FuzzyMatchRangeList* src);
#define fuzzy_match_find(allocator, needle, haystack) _Generic(allocator, Arena*: fuzzy_match_find__arena, AllocatorInfo: fuzzy_match_find__ainfo) resolved_function_call(allocator, needle, haystack)
#define fuzzy_match_range_list_copy(allocator, src) _Generic(allocator, Arena*: fuzzy_match_range_list_copy__arena, AllocatorInfo: fuzzy_match_range_list_copy__ainfo) resolved_function_call(allocator, src)
#define fuzzy_match_find(allocator, needle, haystack) _Generic(allocator, Arena*: fuzzy_match_find__arena, AllocatorInfo: fuzzy_match_find__ainfo) generic_call(allocator, needle, haystack)
#define fuzzy_match_range_list_copy(allocator, src) _Generic(allocator, Arena*: fuzzy_match_range_list_copy__arena, AllocatorInfo: fuzzy_match_range_list_copy__ainfo) generic_call(allocator, src)
force_inline FuzzyMatchRangeList fuzzy_match_find__arena (Arena *arena, String8 needle, String8 haystack) { return fuzzy_match_find__ainfo (arena_allocator(arena), needle, haystack); }
force_inline FuzzyMatchRangeList fuzzy_match_range_list_copy__arena(Arena* arena, FuzzyMatchRangeList* src) { return fuzzy_match_range_list_copy__ainfo(arena_allocator(arena), src); }
@@ -1168,18 +1168,18 @@ MD_API void str8_serial_push_u32__ainfo (AllocatorInfo ainfo, String8Lis
void str8_serial_push_cstr__ainfo (AllocatorInfo ainfo, String8List* srl, String8 str);
void str8_serial_push_string__ainfo (AllocatorInfo ainfo, String8List* srl, String8 str);
#define str8_serial_begin(allocator, srl) _Generic(allocator, Arena*: str8_serial_begin__arena, AllocatorInfo: str8_serial_begin__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl)
#define str8_serial_end(allocator, srl) _Generic(allocator, Arena*: str8_serial_end__arena, AllocatorInfo: str8_serial_end__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl)
#define str8_serial_push_align(allocator, srl, align) _Generic(allocator, Arena*: str8_serial_push_align__arena, AllocatorInfo: str8_serial_push_align__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, align)
#define str8_serial_push_size(allocator, srl, size) _Generic(allocator, Arena*: str8_serial_push_size__arena, AllocatorInfo: str8_serial_push_size__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, size)
#define str8_serial_push_data(allocator, srl, data, usize) _Generic(allocator, Arena*: str8_serial_push_data__arena, AllocatorInfo: str8_serial_push_data__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, data, usize)
#define str8_serial_push_data_list(allocator, srl, first) _Generic(allocator, Arena*: str8_serial_push_data_list__arena, AllocatorInfo: str8_serial_push_data_list__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, first)
#define str8_serial_push_u64(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u64__arena, AllocatorInfo: str8_serial_push_u64__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x)
#define str8_serial_push_u32(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u32__arena, AllocatorInfo: str8_serial_push_u32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x)
#define str8_serial_push_u16(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u16__arena, AllocatorInfo: str8_serial_push_u16__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x)
#define str8_serial_push_u8(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u8__arena, AllocatorInfo: str8_serial_push_u8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x)
#define str8_serial_push_cstr(allocator, srl, str) _Generic(allocator, Arena*: str8_serial_push_cstr__arena, AllocatorInfo: str8_serial_push_cstr__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, str)
#define str8_serial_push_string(allocator, slr, str) _Generic(allocator, Arena*: str8_serial_push_string__arena, AllocatorInfo: str8_serial_push_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, str)
#define str8_serial_begin(allocator, srl) _Generic(allocator, Arena*: str8_serial_begin__arena, AllocatorInfo: str8_serial_begin__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl)
#define str8_serial_end(allocator, srl) _Generic(allocator, Arena*: str8_serial_end__arena, AllocatorInfo: str8_serial_end__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl)
#define str8_serial_push_align(allocator, srl, align) _Generic(allocator, Arena*: str8_serial_push_align__arena, AllocatorInfo: str8_serial_push_align__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, align)
#define str8_serial_push_size(allocator, srl, size) _Generic(allocator, Arena*: str8_serial_push_size__arena, AllocatorInfo: str8_serial_push_size__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, size)
#define str8_serial_push_data(allocator, srl, data, usize) _Generic(allocator, Arena*: str8_serial_push_data__arena, AllocatorInfo: str8_serial_push_data__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, data, usize)
#define str8_serial_push_data_list(allocator, srl, first) _Generic(allocator, Arena*: str8_serial_push_data_list__arena, AllocatorInfo: str8_serial_push_data_list__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, first)
#define str8_serial_push_u64(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u64__arena, AllocatorInfo: str8_serial_push_u64__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x)
#define str8_serial_push_u32(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u32__arena, AllocatorInfo: str8_serial_push_u32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x)
#define str8_serial_push_u16(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u16__arena, AllocatorInfo: str8_serial_push_u16__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x)
#define str8_serial_push_u8(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u8__arena, AllocatorInfo: str8_serial_push_u8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x)
#define str8_serial_push_cstr(allocator, srl, str) _Generic(allocator, Arena*: str8_serial_push_cstr__arena, AllocatorInfo: str8_serial_push_cstr__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, str)
#define str8_serial_push_string(allocator, slr, str) _Generic(allocator, Arena*: str8_serial_push_string__arena, AllocatorInfo: str8_serial_push_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, str)
force_inline U64 str8_serial_push_align__arena(Arena* arena, String8List* srl, U64 align) { return str8_serial_push_align__ainfo(arena_allocator(arena), srl, align); }
force_inline void* str8_serial_push_size__arena (Arena* arena, String8List* srl, U64 size) { return str8_serial_push_size__ainfo (arena_allocator(arena), srl, size); }
@@ -1270,18 +1270,19 @@ inline U64 str8_deserial_read_block (String8 string, U64 off, U64 size, String
////////////////////////////////
// Second-order Generic Selectors
#define str8_from(allocator, in) \
_Generic(in, \
String16 : _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_selection_fail), \
String32 : _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_selection_fail), \
distinct_lookup(U64) : _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_s64__ainfo, default: assert_generic_selection_fail), \
distinct_lookup(S64) : _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo, default: assert_generic_selection_fail), \
distinct_lookup(SSIZE): _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_selection_fail), \
default : assert_generic_selection_fail \
) resolved_function_call(allocator, in)
#define str8_from(allocator, in) \
_Generic((in), \
SSIZE : _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_sel_fail), \
_Generic_L2((in), \
String16: _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_sel_fail), \
String32: _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_sel_fail), \
U64 : _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_u64__ainfo, default: assert_generic_sel_fail), \
S64 : _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo, default: assert_generic_sel_fail), \
default : assert_generic_sel_fail) \
) generic_call(allocator, in)
#define str16_from(allocator, in) \
_Generic(in, \
String8: _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_selection_fail), \
default: assert_generic_selection_fail \
) resolved_function_call(allocator, in)
#define str16_from(allocator, in) \
_Generic(in, \
String8: _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_sel_fail), \
default: assert_generic_sel_fail \
) generic_call(allocator, in)
+2 -2
View File
@@ -55,8 +55,8 @@ _Generic(conflicts, \
int : scratch_begin__arena, \
Arena** : scratch_begin__arena, \
AllocatorInfo: scratch_begin__ainfo, \
default : assert_generic_selection_fail \
) resolved_function_call(conflicts, (Opt_ScratchBegin){__VA_ARGS__})
default : assert_generic_sel_fail \
) generic_call(conflicts, (Opt_ScratchBegin){__VA_ARGS__})
#define scratch_end(scratch) temp_end(scratch)
+12 -12
View File
@@ -281,8 +281,8 @@ MD_API void msg_list_push__ainfo (AllocatorInfo ainfo, MsgList* msgs, Node* node
void msg_list_pushf__arena(Arena* arena, MsgList* msgs, Node* node, MsgKind kind, char *fmt, ...);
void msg_list_pushf__ainfo(AllocatorInfo ainfo, MsgList* msgs, Node* node, MsgKind kind, char *fmt, ...);
#define msg_list_push(allocator, msgs, node, kind, string) _Generic(allocator, Arena*: msg_list_push__arena, AllocatorInfo: msg_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, msgs, node, kind, string)
#define msg_list_pushf(allocator, msgs, node, kind, string, fmt, ...) _Generic(allocator, Arena*: msg_list_pushf__arena, AllocatorInfo: msg_list_pushf__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, msgs, node, kind, fmt, __VA_ARGS__)
#define msg_list_push(allocator, msgs, node, kind, string) _Generic(allocator, Arena*: msg_list_push__arena, AllocatorInfo: msg_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, msgs, node, kind, string)
#define msg_list_pushf(allocator, msgs, node, kind, string, fmt, ...) _Generic(allocator, Arena*: msg_list_pushf__arena, AllocatorInfo: msg_list_pushf__ainfo, default: assert_generic_sel_fail) generic_call(allocator, msgs, node, kind, fmt, __VA_ARGS__)
MD_API void msg_list_concat_in_place(MsgList* dst, MsgList* to_push);
@@ -321,9 +321,9 @@ MD_API void token_chunk_list_push__ainfo (AllocatorInfo ainfo, Toke
MD_API TokenArray token_array_from_chunk_list__arena (Arena* arena, TokenChunkList* chunks);
MD_API TokenArray token_array_from_chunk_list__ainfo (AllocatorInfo ainfo, TokenChunkList* chunks);
#define string_list_from_token_flags(allocator, flags) _Generic(allocator, Arena*: string_list_from_token_flags__arena, AllocatorInfo: string_list_from_token_flags__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, flags)
#define token_chunk_list_push(allocator, list, cap, token) _Generic(allocator, Arena*: token_chunk_list_push__arena, AllocatorInfo: token_chunk_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, cap, token)
#define token_array_from_chunk_list(allocator, chunks) _Generic(allocator, Arena*: token_array_from_chunk_list__arena, AllocatorInfo: token_array_from_chunk_list__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, chunks)
#define string_list_from_token_flags(allocator, flags) _Generic(allocator, Arena*: string_list_from_token_flags__arena, AllocatorInfo: string_list_from_token_flags__ainfo, default: assert_generic_sel_fail) generic_call(allocator, flags)
#define token_chunk_list_push(allocator, list, cap, token) _Generic(allocator, Arena*: token_chunk_list_push__arena, AllocatorInfo: token_chunk_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, cap, token)
#define token_array_from_chunk_list(allocator, chunks) _Generic(allocator, Arena*: token_array_from_chunk_list__arena, AllocatorInfo: token_array_from_chunk_list__ainfo, default: assert_generic_sel_fail) generic_call(allocator, chunks)
force_inline String8List string_list_from_token_flags__arena(Arena* arena, TokenFlags flags) { return string_list_from_token_flags__ainfo(arena_allocator(arena), flags); }
force_inline void token_chunk_list_push__arena (Arena* arena, TokenChunkList* list, U64 cap, Token token) { token_chunk_list_push__ainfo(arena_allocator(arena), list, cap, token); }
@@ -380,7 +380,7 @@ MD_API NodeRec node_rec_depth_first(Node* node, Node* subtree_root, U64 child_of
Node* push_node__arena(Arena* arena, NodeKind kind, NodeFlags flags, String8 string, String8 raw_string, U64 src_offset);
Node* push_node__ainfo(AllocatorInfo ainfo, NodeKind kind, NodeFlags flags, String8 string, String8 raw_string, U64 src_offset);
#define push_node(allocator, kind, flags, string, raw_string, src_offset) _Generic(allocator, Arena*: push_node__arena, AllocatorInfo: push_node__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, kind, flags, string, raw_string, src_offset)
#define push_node(allocator, kind, flags, string, raw_string, src_offset) _Generic(allocator, Arena*: push_node__arena, AllocatorInfo: push_node__ainfo, default: assert_generic_sel_fail) generic_call(allocator, kind, flags, string, raw_string, src_offset)
void node_insert_tag (Node* parent, Node* prev_child, Node* node);
void node_insert_child(Node* parent, Node* prev_child, Node* node);
@@ -449,7 +449,7 @@ U64 tag_count_from_node (Node* node);
MD_API String8 string_from_children__arena(Arena* arena, Node* root);
String8 string_from_children__ainfo(AllocatorInfo ainfo, Node* root);
#define string_from_children(allocator, root) _Generic(allocator, Arena*: string_from_children__arena, AllocatorInfo: string_from_children__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, root)
#define string_from_children(allocator, root) _Generic(allocator, Arena*: string_from_children__arena, AllocatorInfo: string_from_children__ainfo, default: assert_generic_sel_fail) generic_call(allocator, root)
force_inline String8 string_from_children__arena(Arena* arena, Node* root) { return string_from_children__ainfo(arena_allocator(arena), root); }
@@ -561,7 +561,7 @@ MD_API B32 node_match(Node* a, Node* b, StringMatchFlags flags);
MD_API Node* tree_copy__arena(Arena* arena, Node* src_root);
MD_API Node* tree_copy__ainfo(AllocatorInfo ainfo, Node* src_root);
#define tree_copy(allocator, src_root) _Generic(allocator, Arena*: tree_copy__arena, AllocatorInfo: tree_copy__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, src_root)
#define tree_copy(allocator, src_root) _Generic(allocator, Arena*: tree_copy__arena, AllocatorInfo: tree_copy__ainfo, default: assert_generic_sel_fail) generic_call(allocator, src_root)
force_inline Node* tree_copy__arena(Arena* arena, Node* src_root) { return tree_copy__ainfo(arena_allocator(arena), src_root); }
@@ -571,7 +571,7 @@ force_inline Node* tree_copy__arena(Arena* arena, Node* src_root) { return tree_
MD_API TokenizeResult tokenize_from_text__arena(Arena* arena, String8 text);
MD_API TokenizeResult tokenize_from_text__ainfo(AllocatorInfo ainfo, String8 text);
#define tokenize_from_text(allocator, text) _Generic(allocator, Arena*: tokenize_from_text__arena, AllocatorInfo: tokenize_from_text__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, text)
#define tokenize_from_text(allocator, text) _Generic(allocator, Arena*: tokenize_from_text__arena, AllocatorInfo: tokenize_from_text__ainfo, default: assert_generic_sel_fail) generic_call(allocator, text)
force_inline TokenizeResult tokenize_from_text__arena(Arena* arena, String8 text) { return tokenize_from_text__ainfo(arena_allocator(arena), text); }
@@ -581,7 +581,7 @@ force_inline TokenizeResult tokenize_from_text__arena(Arena* arena, String8 text
MD_API ParseResult parse_from_text_tokens__arena(Arena* arena, String8 filename, String8 text, TokenArray tokens);
MD_API ParseResult parse_from_text_tokens__ainfo(AllocatorInfo ainfo, String8 filename, String8 text, TokenArray tokens);
#define parse_from_text_tokens(allocator, filename, text, tokens) _Generic(allocator, Arena*: parse_from_text_tokens__arena, AllocatorInfo: parse_from_text_tokens__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, filename, text, tokens)
#define parse_from_text_tokens(allocator, filename, text, tokens) _Generic(allocator, Arena*: parse_from_text_tokens__arena, AllocatorInfo: parse_from_text_tokens__ainfo, default: assert_generic_sel_fail) generic_call(allocator, filename, text, tokens)
force_inline ParseResult parse_from_text_tokens__arena(Arena* arena, String8 filename, String8 text, TokenArray tokens) { return parse_from_text_tokens__ainfo(arena_allocator(arena), filename, text, tokens); }
@@ -592,7 +592,7 @@ force_inline ParseResult parse_from_text_tokens__arena(Arena* arena, String8 fil
MD_API ParseResult parse_from_text__arena(Arena* arena, String8 filename, String8 text);
MD_API ParseResult parse_from_text__ainfo(AllocatorInfo ainfo, String8 filename, String8 text);
#define parse_from_text(allocator, filename, text) _Generic(allocator, Arena*: parse_from_text__arena, AllocatorInfo: parse_from_text__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, filename, text)
#define parse_from_text(allocator, filename, text) _Generic(allocator, Arena*: parse_from_text__arena, AllocatorInfo: parse_from_text__ainfo, default: assert_generic_sel_fail) generic_call(allocator, filename, text)
#define tree_from_string(allocator, string) (parse_from_text((allocator), str8_zero(), (string)).root)
force_inline ParseResult parse_from_text__arena(Arena* arena, String8 filename, String8 text) { return parse_from_text__ainfo(arena_allocator(arena), filename, text); }
@@ -603,6 +603,6 @@ force_inline ParseResult parse_from_text__arena(Arena* arena, String8 filename,
MD_API String8List debug_string_list_from_tree__arena(Arena* arena, Node* root);
MD_API String8List debug_string_list_from_tree__ainfo(AllocatorInfo ainfo, Node* root);
#define debug_string_list_from_tree(allocator, string) _Generic(allocator, Arena*: debug_string_list_from_tree__arena, AllocatorInfo: debug_string_list_from_tree__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string)
#define debug_string_list_from_tree(allocator, string) _Generic(allocator, Arena*: debug_string_list_from_tree__arena, AllocatorInfo: debug_string_list_from_tree__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string)
force_inline String8List debug_string_list_from_tree__arena(Arena* arena, Node* root) { return debug_string_list_from_tree__ainfo(arena_allocator(arena), root); }
+10 -10
View File
@@ -156,8 +156,8 @@ void os_handle_list_push__ainfo (AllocatorInfo ainfo, OS_HandleLi
OS_HandleArray os_handle_array_from_list__arena(Arena* arena, OS_HandleList* list);
OS_HandleArray os_handle_array_from_list__ainfo(AllocatorInfo ainfo, OS_HandleList* list);
#define os_handle_ist_push(arena, handles, handle) _Generic(allocator, Arena*: os_handle_list_push__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, handles, handle)
#define os_handle_array_from_list(allocator, list) _Generic(allocator, Arena*: os_handle_array_from_list__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list)
#define os_handle_ist_push(arena, handles, handle) _Generic(allocator, Arena*: os_handle_list_push__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, handles, handle)
#define os_handle_array_from_list(allocator, list) _Generic(allocator, Arena*: os_handle_array_from_list__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list)
force_inline void os_handle_list_push__arena (Arena* arena, OS_HandleList* handles, OS_Handle handle) { os_handle_list__push_ainfo (arena_allocator(arena), handles, handle); }
force_inline OS_HandleArray os_handle_array_from_list__arena(Arena* arena, OS_HandleList* list) { return os_handle_array_from_list__ainfo(arena_allocator(arena), list); }
@@ -199,7 +199,7 @@ os_string_list_from_argcv__ainfo(AllocatorInfo ainfo, int argc, char** argv) {
return result;
}
#define os_string_list_from_argcv(allocator, argc, argv) _Generic(allocator, Arena*: os_string_list_from_argcv__arena, AllocatorInfo: os_string_list_from_argcv__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, argc, argv)
#define os_string_list_from_argcv(allocator, argc, argv) _Generic(allocator, Arena*: os_string_list_from_argcv__arena, AllocatorInfo: os_string_list_from_argcv__ainfo, default: assert_generic_sel_fail) generic_call(allocator, argc, argv)
force_inline String8List os_string_list_from_argcv__arena(Arena* arena, int argc, char** argv) { return os_string_list_from_argcv__ainfo(arena_allocator(arena), argc, argv); }
@@ -221,7 +221,7 @@ MD_API FileProperties os_properties_from_file_path (String8 path);
MD_API String8 os_full_path_from_path__arena(Arena* arena, String8 path);
MD_API String8 os_full_path_from_path__ainfo(AllocatorInfo arena, String8 path);
#define os_full_path_from_path(allocator, path) _Generic(allocator, Arena*: os_full_path_from_path__arena, AllocatorInfo: os_full_path_from_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path)
#define os_full_path_from_path(allocator, path) _Generic(allocator, Arena*: os_full_path_from_path__arena, AllocatorInfo: os_full_path_from_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path)
force_inline String8 os_full_path_from_path__arena(Arena* arena, String8 path) { return os_full_path_from_path__ainfo(arena_allocator(arena), path); }
@@ -238,8 +238,8 @@ MD_API OS_FileIter* os_file_iter_begin__ainfo(AllocatorInfo ainfo, String8
MD_API B32 os_file_iter_next__ainfo (AllocatorInfo arena, OS_FileIter* iter, OS_FileInfo* info_out);
MD_API void os_file_iter_end ( OS_FileIter* iter);
#define os_file_iter_begin(allocator, path, flags) _Generic(allocator, Arena*: os_file_iter_begin__arena, AllocatorInfo: os_file_iter_begin__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path)
#define os_file_iter_next(allocator, iter, info_out) _Generic(allocator, Arena*: os_file_iter_next__arena, AllocatorInfo: os_file_iter_next__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path)
#define os_file_iter_begin(allocator, path, flags) _Generic(allocator, Arena*: os_file_iter_begin__arena, AllocatorInfo: os_file_iter_begin__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path)
#define os_file_iter_next(allocator, iter, info_out) _Generic(allocator, Arena*: os_file_iter_next__arena, AllocatorInfo: os_file_iter_next__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path)
force_inline OS_FileIter* os_file_iter_begin__arena(Arena* arena, String8 path, OS_FileIterFlags flags) { reutrn (); }
force_inline B32 os_file_iter_next__arena (Arena* arena, OS_FileIter* iter, OS_FileInfo* info_out) { reutrn (); }
@@ -261,8 +261,8 @@ MD_API B32 os_append_data_to_file_path (String8 path, String8 data)
MD_API String8 os_string_from_file_range__arena(Arena* arena, OS_Handle file, Rng1U64 range);
MD_API String8 os_string_from_file_range__ainfo(AllocatorInfo ainfo, OS_Handle file, Rng1U64 range);
#define os_data_from_file_path(allocator, path) _Generic(allocator, Arena*: os_data_from_file_path__arena, AllocatorInfo: os_data_from_file_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path)
#define os_string_from_file_range(allocator, file, range) _Generic(allocator, Arena*: os_string_from_file_range__arena, AllocatorInfo: os_string_from_file_range__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, file, range)
#define os_data_from_file_path(allocator, path) _Generic(allocator, Arena*: os_data_from_file_path__arena, AllocatorInfo: os_data_from_file_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path)
#define os_string_from_file_range(allocator, file, range) _Generic(allocator, Arena*: os_string_from_file_range__arena, AllocatorInfo: os_string_from_file_range__ainfo, default: assert_generic_sel_fail) generic_call(allocator, file, range)
force_inline String8 os_data_from_file_path__arena(Arena* arena, String8 path) { return os_data_from_file_path__ainfo(arena_allocator(arena), path); }
@@ -292,7 +292,7 @@ inline S64 os_file_id_compare(OS_FileID a, OS_FileID b) { S64 cmp = memory_compa
String8 os_string_from_guid__arena(Arena* arena, OS_Guid guid);
String8 os_string_from_guid__ainfo(AllocatorInfo ainfo, OS_Guid guid);
#define os_string_from_guid(allocator, guid) _Generic(allocator, Arena*: os_string_from_guid__arena, AllocatorInfo: os_string_from_guid__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, guid)
#define os_string_from_guid(allocator, guid) _Generic(allocator, Arena*: os_string_from_guid__arena, AllocatorInfo: os_string_from_guid__ainfo, default: assert_generic_sel_fail) generic_call(allocator, guid)
force_inline String8 os_string_from_guid__arena(Arena* arena, OS_Guid guid) { os_string_from_guid__ainfo(arena_allocator(arena), guid); }
@@ -325,7 +325,7 @@ MD_API OS_ProcessInfo* os_get_process_info(void);
String8 os_get_current_path__arena(Arena* arena);
String8 os_get_current_path__ainfo(AllocatorInfo arena);
#define os_get_current_path(allocator) _Generic(allocator, Arena*: os_get_current_path__arena, AllocatorInfo: os_get_current_path__ainfo) resolved_function_call(allocator)
#define os_get_current_path(allocator) _Generic(allocator, Arena*: os_get_current_path__arena, AllocatorInfo: os_get_current_path__ainfo) generic_call(allocator)
force_inline String8 os_get_current_path__arena(Arena* arena) { return os_get_current_path__ainfo(arena_allocator(arena)); }
+1 -1
View File
@@ -1,4 +1,4 @@
ifdef INTELLISENSE_DIRECTIVES
#ifdef INTELLISENSE_DIRECTIVES
# include "base/context_cracking.h"
# include "base/namespace.h"
#endif
+4 -4
View File
@@ -83,12 +83,12 @@ word COMMA_OPERATOR, MD_COMMA_OPERATOR
namespace select_arg_, md_select_arg_
namespace generic_sel_entry_, md_generic_sel_entry_
word resolved_function_call, md_resolved_function_call
word generic_call, md_generic_call
word if_generic_selector_defined_include_slot, md_if_generic_selector_defined_include_slot
word UNRESOLVED_GENERIC_SELECTION, MD_UNRESOLVED_GENERIC_SELECTION
word assert_generic_selection_fail, md_assert_generic_selection_fail
word UNRESOLVED_GENERIC_SELECTION, MD_UNRESOLVED_GENERIC_SELECTION
word assert_generic_sel_fail, md_assert_generic_sel_fail
namespace GENERIC_SLOT_1__, MD_GENERIC_SLOT_1__
namespace generic_example_hash_, md_generic_example_hash_
@@ -1115,7 +1115,7 @@ namespace MsgKind, MD_MsgKind
word Msg, MD_Msg
word MsgList, MD_MsgList
word TokenFlags, MD_MsgFlags
word TokenFlags, MD_TokenFlags
namespace TokenFlag_, MD_TokenFlag_
word TokenFlagGroups, MD_TokenFlagGroups
namespace TokenFlagGroup_, MD_TokenFlagGroup_
+1 -1
View File
@@ -272,7 +272,7 @@ int main()
preprocess_endif();
new_line();
print_section(r_tp_stb_sprintf_h, lit("STB snprintf Header"));
print_section(r_tp_stb_sprintf_header, lit("STB snprintf Header"));
print_fmt("%S", implementation_guard_end);
new_line();
+3 -5
View File
@@ -182,7 +182,7 @@ void register_library_macros()
((gen_Macro) { lit("generic_sel_entry_type"), MT_Expression, }),
((gen_Macro) { lit("generic_sel_entry_function"), MT_Expression, }),
((gen_Macro) { lit("generic_sel_entry_comma_delimiter"), MT_Expression, }),
((gen_Macro) { lit("resolved_function_call"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("generic_call"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("if_generic_selector_defined_include_slot"), MT_Expression, }),
((gen_Macro) { lit("function_generic_example"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("GENERIC_SLOT_1__example_hash"), MT_Expression, }),
@@ -191,10 +191,8 @@ void register_library_macros()
((gen_Macro) { lit("function_generic_example_varadic"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("function_generic_example_direct_type"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("type_to_expression"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("distinct_register_selector"), MT_Statement, MF_Functional }),
((gen_Macro) { lit("distinct_lookup"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("generic_example_do_something_with"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("distinct"), MT_Typename, MF_Functional })
((gen_Macro) { lit("_Generic_L2"), MT_Expression, MF_Functional }),
((gen_Macro) { lit("_Generic_L3"), MT_Expression, MF_Functional })
));
// base/profiling.h
gen_register_macros(args(