diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2019-01-14 22:39:00 -0500 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2019-01-14 22:39:00 -0500 |
commit | 69b4c6e0b70f92e829848e21c4d8983fac904f30 (patch) | |
tree | 155ddd4656d270a286b226aaaa798974716c8735 /awk.h | |
parent | 99e184df5e808dd4de24b3e41c724bf9b00b9bb4 (diff) | |
download | egawk-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.h | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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; |