3.8 Enumerations and Masks
Although the constructors below are describes as procedures, they are implemented as syntax, so that error messages can report a type name where the syntactic context implies one.
Takes a list of symbols and generates an enumeration type. The
enumeration maps between a symbol in the given symbols list and
corresponding integers, counting from 0.
The list symbols can also set the values of symbols by putting '= and an exact integer after the symbol. For example, the list '(x y = 10 z) maps 'x to 0, 'y to 10, and 'z to 11.
The basetype argument specifies the base type to use.
Similar to _enum, but the resulting mapping translates a list
of symbols to a number and back, using bitwise-ior. A single
symbol is equivalent to a list containing just the symbol. The
default basetype is _uint, since high bits are often
used for flags.