2525// WARNING! *_var functions may break the flag_name() functionality
2626
2727char * flag_name (void * val );
28+ void flag_add_alias (void * val , const char * alias );
2829bool * flag_bool_null (const char * name , bool def , const char * desc , ...);
2930#define flag_bool (name , def , desc ) flag_bool_null(name, def, desc, NULL)
3031#define flag_bool_aliases (name , def , desc , ...) \
@@ -86,7 +87,7 @@ typedef enum {
8687typedef struct {
8788 Flag_Type type ;
8889 char * name ;
89- char * aliases [ALIAS_CAP ];
90+ const char * aliases [ALIAS_CAP ];
9091 size_t alias_count ;
9192 char * desc ;
9293 Flag_Value val ;
@@ -121,10 +122,11 @@ Flag *flag_new(Flag_Type type, const char *name, const char *desc, va_list alias
121122 // NOTE: I won't touch them I promise Kappa
122123 flag -> name = (char * ) name ;
123124 flag -> desc = (char * ) desc ;
124- char * alias = va_arg (aliases , char * );
125+ const char * alias = va_arg (aliases , const char * );
125126 while (alias != NULL ) {
127+ assert (flag -> alias_count <= ALIAS_CAP );
126128 flag -> aliases [flag -> alias_count ++ ] = alias ;
127- alias = va_arg (aliases , char * );
129+ alias = va_arg (aliases , const char * );
128130 }
129131 return flag ;
130132}
@@ -135,6 +137,13 @@ char *flag_name(void *val)
135137 return flag -> name ;
136138}
137139
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+
138147bool * flag_bool_null (const char * name , bool def , const char * desc , ...)
139148{
140149 va_list aliases ;
0 commit comments