diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2021-04-30 11:51:43 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2021-04-30 11:51:43 +0300 |
commit | 200c22e0556cdaf381d758304e69807d1b0ceff7 (patch) | |
tree | eb0aec5dd80faba33ba05fae207fd1aef9ed0188 | |
parent | fbda8cdd8e8c5a324f1174b070aa0bdcffc5115d (diff) | |
download | egawk-200c22e0556cdaf381d758304e69807d1b0ceff7.tar.gz egawk-200c22e0556cdaf381d758304e69807d1b0ceff7.tar.bz2 egawk-200c22e0556cdaf381d758304e69807d1b0ceff7.zip |
Fixes to awk.h.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | awk.h | 34 |
2 files changed, 26 insertions, 15 deletions
@@ -1,3 +1,10 @@ +2021-04-30 Arnold D. Robbins <arnold@skeeve.com> + + * awk.h (boolval): Remove check for BOOL flag. It was incorrect. + Thanks to Andrew Schorr for the catch. + For Node_val, update the comment to describe the BOOL flag, and + move BOOL up to be alongside the flags for Node_val. + 2021-04-28 Arnold D. Robbins <arnold@skeeve.com> Make bools plain numbers that have bool flag instead of @@ -436,6 +436,10 @@ typedef struct exp_node { * is a hint to indicate that an integer array optimization may be * used when this value appears as a subscript. * + * The BOOL flag indicates that this number should be converted to True + * or False by extensions that interchange data with other languages, + * via JSON, XML or some other serialization mechanism. + * * We hope that the rest of the flags are self-explanatory. :-) */ MALLOC = 0x0001, /* stptr can be free'd, i.e. not a field node pointing into a shared buffer */ @@ -445,25 +449,25 @@ typedef struct exp_node { NUMBER = 0x0010, /* assigned as number */ USER_INPUT = 0x0020, /* user input: if NUMERIC then * a NUMBER */ - INTLSTR = 0x0040, /* use localized version */ - NUMINT = 0x0080, /* numeric value is an integer */ - INTIND = 0x0100, /* integral value is array index; + BOOL = 0x0040, /* this is a boolean value */ + INTLSTR = 0x0080, /* use localized version */ + NUMINT = 0x0100, /* numeric value is an integer */ + INTIND = 0x0200, /* integral value is array index; * lazy conversion to string. */ - WSTRCUR = 0x0200, /* wide str value is current */ - MPFN = 0x0400, /* arbitrary-precision floating-point number */ - MPZN = 0x0800, /* arbitrary-precision integer */ - NO_EXT_SET = 0x1000, /* extension cannot set a value for this variable */ - NULL_FIELD = 0x2000, /* this is the null field */ + WSTRCUR = 0x0400, /* wide str value is current */ + MPFN = 0x0800, /* arbitrary-precision floating-point number */ + MPZN = 0x01000, /* arbitrary-precision integer */ + NO_EXT_SET = 0x02000, /* extension cannot set a value for this variable */ + NULL_FIELD = 0x04000, /* this is the null field */ /* type = Node_var_array */ - ARRAYMAXED = 0x4000, /* array is at max size */ - HALFHAT = 0x8000, /* half-capacity Hashed Array Tree; + ARRAYMAXED = 0x08000, /* array is at max size */ + HALFHAT = 0x010000, /* half-capacity Hashed Array Tree; * See cint_array.c */ - XARRAY = 0x10000, - NUMCONSTSTR = 0x20000, /* have string value for numeric constant */ - REGEX = 0x40000, /* this is a typed regex */ - BOOL = 0x80000, /* this is a boolean value */ + XARRAY = 0x020000, + NUMCONSTSTR = 0x040000, /* have string value for numeric constant */ + REGEX = 0x080000, /* this is a typed regex */ } flags; long valref; } NODE; @@ -1998,7 +2002,7 @@ static inline bool boolval(NODE *t) { (void) fixtype(t); - if ((t->flags & (BOOL|NUMBER)) != 0) + if ((t->flags & NUMBER) != 0) return ! is_zero(t); return (t->stlen > 0); } |