diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | gawkapi.c | 22 | ||||
-rw-r--r-- | gawkapi.h | 2 |
3 files changed, 21 insertions, 9 deletions
@@ -1,3 +1,9 @@ +2021-03-30 Arnold D. Robbins <arnold@skeeve.com> + + * gawk_api.h (gawk_api_minor_version): Increase to 2. + * gawk_api.c (+assign_bool): New function. + (node_to_awk_value): Finish updating for bool types and values. + 2021-03-22 Arnold D. Robbins <arnold@skeeve.com> * gawkapi.h (make_bool): New inline function. @@ -535,6 +535,16 @@ assign_regex(NODE *node, awk_value_t *val) val->val_type = AWK_REGEX; } +/* assign_bool --- return a bool node */ + +static inline void +assign_bool(NODE *node, awk_value_t *val) +{ + assert((node->flags & BOOL) != 0); + val->val_type = AWK_BOOL; + val->bool_value = get_number_si(node) != 0 ? awk_true : awk_false; +} + /* node_to_awk_value --- convert a node into a value for an extension */ static awk_bool_t @@ -572,18 +582,15 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) switch (wanted) { case AWK_BOOL: if ((node->flags & BOOL) != 0) { - val->val_type = AWK_BOOL; - val->bool_value = (get_number_si(node) ? awk_true : awk_false); + assign_bool(node, val); ret = awk_true; - } else { + } else ret = awk_false; - } break; + case AWK_NUMBER: if ((node->flags & REGEX) != 0) val->val_type = AWK_REGEX; - else if ((node->flags & BOOL) != 0) - val->val_type = AWK_BOOL; else { (void) force_number(node); assign_number(node, val); @@ -693,8 +700,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted) /* return true and actual type for request of undefined */ switch (fixtype(node)->flags & (STRING|NUMBER|USER_INPUT|REGEX|BOOL)) { case BOOL: - val->val_type = AWK_BOOL; - val->bool_value = (get_number_si(node) ? awk_true : awk_false); + assign_bool(node, val); ret = awk_true; break; case STRING: @@ -297,7 +297,7 @@ typedef struct awk_two_way_processor { } awk_two_way_processor_t; #define gawk_api_major_version 3 -#define gawk_api_minor_version 1 +#define gawk_api_minor_version 2 /* Current version of the API. */ enum { |