mirror of
https://github.com/RevCurtisP/C02.git
synced 2025-02-19 19:31:04 +00:00
Allow skipping of sequences in ENUM and BITMASK
This commit is contained in:
parent
dd4debeaaf
commit
c9a4f76d49
15
src/dclrtn.c
15
src/dclrtn.c
@ -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(','));
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user