diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gawkapi.h | 42 |
2 files changed, 31 insertions, 19 deletions
@@ -1,3 +1,11 @@ +2016-12-04 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * gawkapi.h (r_make_string_type): New inline function to create strings + of any type, currently AWK_STRING or AWK_REGEX. + (r_make_string): Now a wrapper around r_make_string_type. + (make_regex): Convert from an inline function to a macro that + calls r_make_string_type. + 2016-11-30 Arnold D. Robbins <arnold@skeeve.com> * dfa.c: Sync with fixes in GNULIB. @@ -827,21 +827,22 @@ typedef struct gawk_api { /* Constructor functions */ -/* r_make_string --- make a string value in result from the passed-in string */ +/* r_make_string_type --- make a string or regexp value in result from the passed-in string */ static inline awk_value_t * -r_make_string(const gawk_api_t *api, /* needed for emalloc */ - awk_ext_id_t *ext_id, /* ditto */ - const char *string, - size_t length, - awk_bool_t duplicate, - awk_value_t *result) +r_make_string_type(const gawk_api_t *api, /* needed for emalloc */ + awk_ext_id_t *ext_id, /* ditto */ + const char *string, + size_t length, + awk_bool_t duplicate, + awk_value_t *result, + awk_valtype_t val_type) { char *cp = NULL; memset(result, 0, sizeof(*result)); - result->val_type = AWK_STRING; + result->val_type = val_type; result->str_value.len = length; if (duplicate) { @@ -856,8 +857,22 @@ r_make_string(const gawk_api_t *api, /* needed for emalloc */ return result; } +/* r_make_string --- make a string value in result from the passed-in string */ + +static inline awk_value_t * +r_make_string(const gawk_api_t *api, /* needed for emalloc */ + awk_ext_id_t *ext_id, /* ditto */ + const char *string, + size_t length, + awk_bool_t duplicate, + awk_value_t *result) +{ + return r_make_string_type(api, ext_id, string, length, duplicate, result, AWK_STRING); +} + #define make_const_string(str, len, result) r_make_string(api, ext_id, str, len, 1, result) #define make_malloced_string(str, len, result) r_make_string(api, ext_id, str, len, 0, result) +#define make_regex(str, len, result) r_make_string_type(api, ext_id, str, len, 1, result, AWK_REGEX) /* make_null_string --- make a null string value */ @@ -883,17 +898,6 @@ make_number(double num, awk_value_t *result) return result; } -/* make_regex --- make a regex value in result */ - -static inline awk_value_t * -make_regex(const char *string, size_t length, awk_value_t *result) -{ - make_const_string(str, len, result); - result->val_type = AWK_REGEX; - - return result; -} - /* * Each extension must define a function with this prototype: |