1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-06-07 15:50:17 +00:00

Allow skipping of sequences in ENUM and BITMASK

This commit is contained in:
Curtis F Kaylor 2019-05-03 18:49:46 -04:00
parent dd4debeaaf
commit c9a4f76d49
2 changed files with 13 additions and 5 deletions

View File

@ -84,12 +84,17 @@ void penum(int m, int bitmsk) {
if (m != MTNONE) ERROR("Illegal Modifier %d in Enum Definition", m, EXIT_FAILURE)
expect('{');
do {
getwrd(); //get defined identifier
DEBUG("Enumerating '%s'\n", word)
if (enmval > 0xFF) ERROR("Maximum ENUM or BITMASK value exceeded\n", 0, EXIT_FAILURE)
strncpy(defnam, word, VARLEN);
sprintf(value, "%d", enmval);
addcon(enmval);
if (look('*'))
DEBUG("Skipping sequence %d\n", enmval)
else {
getwrd(); //get defined identifier
DEBUG("Enumerating '%s'", word)
DEBUG(" as %d\n", enmval);
strncpy(defnam, word, VARLEN);
sprintf(value, "%d", enmval);
addcon(enmval);
}
if (bitmsk) enmval = enmval << 1;
else enmval++;
} while (look(','));

View File

@ -10,7 +10,10 @@
enum {SOLO};
enum {ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN};
enum {*, FIRST, SECOND, THIRD};
bitmask {BLUE, GREEN, RED, BRIGHT, INVERT, BLINK, FLIP, BKGRND};
bitmask {RD, RTS, DTR, RI, CD, *, CTS, DSR};
bitmask {HNDSHK, *, *, *, DUPLEX};
const char b = {#TRUE, #FALSE};
char c, i;