mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-25 13:11:00 +00:00
[qfcc] Implement #undef
That was pleasantly easy :)
This commit is contained in:
parent
5cab587207
commit
8341f48f9d
3 changed files with 13 additions and 1 deletions
|
@ -82,6 +82,7 @@ void rua_if (bool pass, void *scanner);
|
|||
void rua_else (bool pass, const char *tok, void *scanner);
|
||||
void rua_endif (void *scanner);
|
||||
bool rua_defined (const char *sym, void *scanner);
|
||||
void rua_undefine (const char *sym, void *scanner);
|
||||
|
||||
#include "tools/qfcc/source/pre-parse.h"
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ directive
|
|||
| DEFINE IDp <macro> { $$ = rua_start_macro ($2, scanner); }
|
||||
params ')' <macro> { $$ = $3; }
|
||||
body { rua_macro_finish ($body, scanner); }
|
||||
| UNDEF ID extra_warn
|
||||
| UNDEF ID extra_warn { rua_undefine ($2, scanner); }
|
||||
| ERROR text { error (0, "%s", $text->str); dstring_delete ($text); }
|
||||
| WARNING text { warning (0, "%s", $text->str); dstring_delete ($text); }
|
||||
| PRAGMA expand pragma_params { pragma_process (); }
|
||||
|
|
|
@ -1332,3 +1332,14 @@ rua_defined (const char *name, void *scanner)
|
|||
auto macro_tab = extra->macro_tab;
|
||||
return symtab_lookup (macro_tab, name);
|
||||
}
|
||||
|
||||
void
|
||||
rua_undefine (const char *name, void *scanner)
|
||||
{
|
||||
auto extra = qc_yyget_extra (scanner);
|
||||
auto macro_tab = extra->macro_tab;
|
||||
auto sym = symtab_lookup (macro_tab, name);
|
||||
if (sym) {
|
||||
symtab_removesymbol (macro_tab, sym);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue