mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-08 02:12:17 +00:00
[qfcc] Add a silent spirv enum lookup function
Or mostly silent, since the core and enumeration symbols are expected to be value, but the enumerant itself does not cause a diagnostic if not found (needed for checking image dimension and format).
This commit is contained in:
parent
1c20316c9a
commit
28604add29
2 changed files with 18 additions and 4 deletions
|
@ -100,6 +100,8 @@ const plitem_t *spirv_operand_kind (const char *set, const char *kind);
|
|||
uint32_t spirv_instruction_opcode (const char *set, const expr_t *opcode);
|
||||
|
||||
bool spirv_setup_intrinsic_symtab (symtab_t *symtab);
|
||||
bool spirv_enum_val_silent (const char *enum_name, const char *enumerant,
|
||||
uint32_t *val);
|
||||
uint32_t spirv_enum_val (const char *enum_name, const char *enumerant);
|
||||
|
||||
#endif//__spirv_grammar_h
|
||||
|
|
|
@ -538,8 +538,9 @@ spirv_setup_intrinsic_symtab (symtab_t *symtab)
|
|||
return true;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
spirv_enum_val (const char *enum_name, const char *enumerant)
|
||||
bool
|
||||
spirv_enum_val_silent (const char *enum_name, const char *enumerant,
|
||||
uint32_t *val)
|
||||
{
|
||||
const char *set = "core";
|
||||
auto grammar = find_grammar (set);
|
||||
|
@ -555,8 +556,19 @@ spirv_enum_val (const char *enum_name, const char *enumerant)
|
|||
}
|
||||
auto enum_val = symtab_lookup (enum_enum->namespace, enumerant);
|
||||
if (!enum_val) {
|
||||
error (0, "Builtin %s not found", enumerant);
|
||||
return false;
|
||||
}
|
||||
*val = enum_val->value->uint_val;
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
spirv_enum_val (const char *enum_name, const char *enumerant)
|
||||
{
|
||||
uint32_t val = 0;
|
||||
if (!spirv_enum_val_silent (enum_name, enumerant, &val)) {
|
||||
error (0, "%s not found", enumerant);
|
||||
return 0;
|
||||
}
|
||||
return enum_val->value->uint_val;
|
||||
return val;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue