aboutsummaryrefslogtreecommitdiffstats
path: root/awk.h
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2019-01-14 22:39:00 -0500
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2019-01-14 22:39:00 -0500
commit69b4c6e0b70f92e829848e21c4d8983fac904f30 (patch)
tree155ddd4656d270a286b226aaaa798974716c8735 /awk.h
parent99e184df5e808dd4de24b3e41c724bf9b00b9bb4 (diff)
downloadegawk-69b4c6e0b70f92e829848e21c4d8983fac904f30.tar.gz
egawk-69b4c6e0b70f92e829848e21c4d8983fac904f30.tar.bz2
egawk-69b4c6e0b70f92e829848e21c4d8983fac904f30.zip
Add assoc_set inline function for setting array elements.
Diffstat (limited to 'awk.h')
-rw-r--r--awk.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/awk.h b/awk.h
index bac788b3..9b5d359c 100644
--- a/awk.h
+++ b/awk.h
@@ -1362,6 +1362,21 @@ extern int fatal_tag_valid;
/* assoc_remove --- remove an index from symbol[] */
#define assoc_remove(a, s) ((a)->aremove(a, s) != NULL)
+/* assoc_set -- set an element in an array */
+
+static inline void
+assoc_set(NODE *array, NODE *sub, NODE *value)
+{
+
+ NODE **lhs = assoc_lookup(array, sub);
+ unref(*lhs);
+ *lhs = value;
+ if (array->astore != NULL)
+ (*array->astore)(array, sub);
+ unref(sub);
+}
+
+
/* ------------- Function prototypes or defs (as appropriate) ------------- */
/* array.c */
typedef enum { SORTED_IN = 1, ASORT, ASORTI } sort_context_t;