gawk: Constructor Functions
16.4.4 Constructor Functions
----------------------------
The API provides a number of "constructor" functions for creating string
and numeric values, as well as a number of convenience macros. This
node presents them all as function prototypes, in the way that extension
code would use them:
'static inline awk_value_t *'
'make_const_string(const char *string, size_t length, awk_value_t *result);'
This function creates a string value in the 'awk_value_t' variable
pointed to by 'result'. It expects 'string' to be a C string
constant (or other string data), and automatically creates a _copy_
of the data for storage in 'result'. It returns 'result'.
'static inline awk_value_t *'
'make_malloced_string(const char *string, size_t length, awk_value_t *result);'
This function creates a string value in the 'awk_value_t' variable
pointed to by 'result'. It expects 'string' to be a 'char *' value
pointing to data previously obtained from 'gawk_malloc()',
'gawk_calloc()', or 'gawk_realloc()'. The idea here is that the
data is passed directly to 'gawk', which assumes responsibility for
it. It returns 'result'.
'static inline awk_value_t *'
'make_null_string(awk_value_t *result);'
This specialized function creates a null string (the "undefined"
value) in the 'awk_value_t' variable pointed to by 'result'. It
returns 'result'.
'static inline awk_value_t *'
'make_number(double num, awk_value_t *result);'
This function simply creates a numeric value in the 'awk_value_t'
variable pointed to by 'result'.
'static inline awk_value_t *'
'make_number_mpz(void *mpz, awk_value_t *result);'
This function creates a GMP number value in 'result'. The 'mpz'
must be from a call to 'get_mpz_ptr()' (and thus be of real
underlying type 'mpz_ptr'). 'gawk' takes ownership of this memory.
'static inline awk_value_t *'
'make_number_mpfr(void *mpfr, awk_value_t *result);'
This function creates an MPFR number value in 'result'. The 'mpfr'
must be from a call to 'get_mpfr_ptr()'. (and thus be of real
underlying type 'mpfr_ptr') 'gawk' takes ownership of this memory.
'static inline awk_value_t *'
'make_const_user_input(const char *string, size_t length, awk_value_t *result);'
This function is identical to 'make_const_string()', but the string
is flagged as user input that should be treated as a strnum value
if the contents of the string are numeric.
'static inline awk_value_t *'
'make_malloced_user_input(const char *string, size_t length, awk_value_t *result);'
This function is identical to 'make_malloced_string()', but the
string is flagged as user input that should be treated as a strnum
value if the contents of the string are numeric.
'static inline awk_value_t *'
'make_const_regex(const char *string, size_t length, awk_value_t *result);'
This function creates a strongly typed regexp value by allocating a
copy of the string. 'string' is the regular expression of length
'len'.
'static inline awk_value_t *'
'make_malloced_regex(const char *string, size_t length, awk_value_t *result);'
This function creates a strongly typed regexp value. 'string' is
the regular expression of length 'len'. It expects 'string' to be
a 'char *' value pointing to data previously obtained from
'gawk_malloc()', 'gawk_calloc()', or 'gawk_realloc()'.