diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-05-15 20:39:51 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-05-15 20:39:51 -0700 |
commit | 225103289d779216781b2c256c602deca1f05b2a (patch) | |
tree | f0151c1ab610002a7aab79fb572032625da99bc2 /lib.c | |
parent | f43feacabc378cbbf31beea28f41f1cb9483f4b6 (diff) | |
download | txr-225103289d779216781b2c256c602deca1f05b2a.tar.gz txr-225103289d779216781b2c256c602deca1f05b2a.tar.bz2 txr-225103289d779216781b2c256c602deca1f05b2a.zip |
less table robust against type renumbering.
* lib.c (less_tab_init): The type_prec table initialization
will become incorrect if new type enums are added other than
at the end. Let's switch to assignments. Anything not
mentioned is zero.
* lib.h: Add more advice to comment about extending type_t:
consider all places where MAX_TYPE is used.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 33 |
1 files changed, 14 insertions, 19 deletions
@@ -4406,25 +4406,20 @@ static enum less_handling less_tab[MAXTYPE+1][MAXTYPE+1]; static void less_tab_init(void) { int l, r; - static int type_prec[MAXTYPE+1] = { - 4, /* NIL */ - 1, /* NUM */ - 1, /* CHR */ - 3, /* LIT */ - 5, /* CONS */ - 3, /* STR */ - 4, /* SYM */ - 0, /* PKG */ - 0, /* FUN */ - 6, /* VEC */ - 5, /* LCONS */ - 3, /* LSTR */ - 0, /* COBJ */ - 0, /* ENV */ - 1, /* BGNUM */ - 1, /* FLNUM */ - 2, /* RNG */ - }; + static int type_prec[MAXTYPE+1]; + + type_prec[NIL] = 4; + type_prec[NUM] = 1; + type_prec[CHR] = 1; + type_prec[LIT] = 3; + type_prec[CONS] = 5; + type_prec[STR] = 3; + type_prec[SYM] = 4; + type_prec[LCONS] = 5; + type_prec[LSTR] = 3; + type_prec[BGNUM] = 1; + type_prec[FLNUM] = 1; + type_prec[RNG] = 2; for (l = 0; l <= MAXTYPE; l++) for (r = 0; r <= MAXTYPE; r++) { |