Module lege.enum
Allows the creation of enumerations.
Lege enums are immutable, meaning trying to add or change enum values after their creation is an error, and detect accesses to undefined enum values.
Values can have any underlying type, but their keys must be strings.
Usage:
local enum = require "lege.enum"
-- Define an enum
local Color = enum 'Color' {
-- Strings with numeric keys define enum values
"red",
"green",
"blue",
-- String keys allow you to define a different value
dark_orange = "red",
-- Values don't have to be strings, but keys do
black = 0,
}
print(Color) --> enum Color: 0xdeadbeaf
assert(Color.red == "red")
assert(Color.green == "green")
assert(Color.blue == "blue")
assert(Color.dark_orange == "red")
assert(Color.black == 0)
-- Trying to access an undefined enum value is an error
-- print(Color.white) --> Error: no value 'white' on enum 'Color'
-- Likewise trying to set a value is an error
-- Color.White = 255 --> Error: attempt to set value 'White' on enum 'Color'
Meta Methods
| __newindex | Raises an error caused by trying to modify an enum value. |
| __tostring | Convert an enum type to a human-readable string. |
Functions
| returns... () | |
| _enum_err_nf (self, key) | Raises an error caused by access to an undefined enum value. |
| enum_body (values) | Define an enum's values. |
| enum (name) | Create an enum type. |
Meta Methods
- __newindex
-
Raises an error caused by trying to modify an enum value.
param:
- __tostring
-
Convert an enum type to a human-readable string.
Currently we merely output the enum's name and address.
param:
- self enum The enum to convert to a string
Functions
- returns... ()
-
Returns:
-
A function enum for creating new enumeration types.
- _enum_err_nf (self, key)
-
Raises an error caused by access to an undefined enum value.
Parameters:
Raises:
An error indicating which value was undefined, and on which enum type - enum_body (values)
-
Define an enum's values.
A closure over an enum's name returned from enum which creates a new
metatable for the enum type, and allows you to define what
values the struct has.
Parameters:
- values table Values for the new struct type
Returns:
-
enum
The new enum type
- enum (name)
-
Create an enum type.
Parameters:
- name string The enum's type name (used when converting to string)
Returns:
-
A closure over name enum_body to allow you to specify the
enum's values