aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--gawkapi.c22
-rw-r--r--gawkapi.h2
3 files changed, 21 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 36821238..e4843cb8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/gawkapi.c b/gawkapi.c
index 929c36b8..e8a9c312 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -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:
diff --git a/gawkapi.h b/gawkapi.h
index 69233604..9967aa26 100644
--- a/gawkapi.h
+++ b/gawkapi.h
@@ -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 {