gawk: Symbol table by name
16.4.10.1 Variable Access and Update by Name
............................................
The following routines provide the ability to access and update global
'awk'-level variables by name. In compiler terminology, identifiers of
different kinds are termed "symbols", thus the "sym" in the routines'
names. The data structure that stores information about symbols is
termed a "symbol table". The functions are as follows:
'awk_bool_t sym_lookup(const char *name,'
' awk_valtype_t wanted,'
' awk_value_t *result);'
Fill in the 'awk_value_t' structure pointed to by 'result' with the
value of the variable named by the string 'name', which is a
regular C string. 'wanted' indicates the type of value expected.
Return true if the actual type matches 'wanted', and false
otherwise. In the latter case, 'result->val_type' indicates the
actual type (Table 16.1 table-value-types-returned.).
'awk_bool_t sym_update(const char *name, awk_value_t *value);'
Update the variable named by the string 'name', which is a regular
C string. The variable is added to 'gawk''s symbol table if it is
not there. Return true if everything worked, and false otherwise.
Changing types (scalar to array or vice versa) of an existing
variable is _not_ allowed, nor may this routine be used to update
an array. This routine cannot be used to update any of the
predefined variables (such as 'ARGC' or 'NF').
An extension can look up the value of 'gawk''s special variables.
However, with the exception of the 'PROCINFO' array, an extension cannot
change any of those variables.