25
25
// WARNING! *_var functions may break the flag_name() functionality
26
26
27
27
char * flag_name (void * val );
28
+ void flag_add_alias (void * val , const char * alias );
28
29
bool * flag_bool_null (const char * name , bool def , const char * desc , ...);
29
30
#define flag_bool (name , def , desc ) flag_bool_null(name, def, desc, NULL)
30
31
#define flag_bool_aliases (name , def , desc , ...) \
@@ -86,7 +87,7 @@ typedef enum {
86
87
typedef struct {
87
88
Flag_Type type ;
88
89
char * name ;
89
- char * aliases [ALIAS_CAP ];
90
+ const char * aliases [ALIAS_CAP ];
90
91
size_t alias_count ;
91
92
char * desc ;
92
93
Flag_Value val ;
@@ -121,10 +122,11 @@ Flag *flag_new(Flag_Type type, const char *name, const char *desc, va_list alias
121
122
// NOTE: I won't touch them I promise Kappa
122
123
flag -> name = (char * ) name ;
123
124
flag -> desc = (char * ) desc ;
124
- char * alias = va_arg (aliases , char * );
125
+ const char * alias = va_arg (aliases , const char * );
125
126
while (alias != NULL ) {
127
+ assert (flag -> alias_count <= ALIAS_CAP );
126
128
flag -> aliases [flag -> alias_count ++ ] = alias ;
127
- alias = va_arg (aliases , char * );
129
+ alias = va_arg (aliases , const char * );
128
130
}
129
131
return flag ;
130
132
}
@@ -135,6 +137,13 @@ char *flag_name(void *val)
135
137
return flag -> name ;
136
138
}
137
139
140
+ void flag_add_alias (void * val , const char * alias )
141
+ {
142
+ Flag * flag = (Flag * ) ((char * ) val - offsetof(Flag , val ));
143
+ assert (flag -> alias_count + 1 <= ALIAS_CAP );
144
+ flag -> aliases [flag -> alias_count ++ ] = alias ;
145
+ }
146
+
138
147
bool * flag_bool_null (const char * name , bool def , const char * desc , ...)
139
148
{
140
149
va_list aliases ;
0 commit comments