53 lines
1.1 KiB
Markdown
53 lines
1.1 KiB
Markdown
## Aurora Enum
|
|
|
|
[TODO]
|
|
|
|
## Example
|
|
### Include
|
|
```c++
|
|
#define AUE_OUT_OF_ECOSYSTEM // Applications in the Aurora ecosystem do not need this line
|
|
#include <AuroraForEach.hpp>
|
|
#include <AuroraEnum.hpp>
|
|
```
|
|
|
|
### Example
|
|
```c++
|
|
#define AUE_DEFINE(name, enumerations)
|
|
|
|
AUE_DEFINE(EMyTestEnum, (
|
|
eValueA,
|
|
eValueB,
|
|
eValueC,
|
|
eValueD
|
|
));
|
|
|
|
static void TestAUE()
|
|
{
|
|
EMyTestEnum referenceValue = EMyTestEnum::eValueB;
|
|
|
|
// Convert the index to a string safely O(1)
|
|
const AuString &string = EMyTestEnumToString(referenceValue);
|
|
|
|
// Lookup O(n)
|
|
EMyTestEnum backAgain = EMyTestEnumFromString(string);
|
|
|
|
// Lookup using a hash table
|
|
EMyTestEnum fromHashTable = EMyTestEnumFromHashString(string);
|
|
|
|
// Assert
|
|
SysAssert(backAgain == referenceValue);
|
|
SysAssert(fromHashTable == referenceValue);
|
|
|
|
// And iteration for fun
|
|
EMyTestEnumForEach([](EMyTestEnum e)
|
|
{
|
|
LogDbg(EMyTestEnumToString(e));
|
|
});
|
|
}
|
|
```
|
|
|
|
## Dependencies
|
|
* [AuroraForEach](https://git.reece.sx/AuroraSupport/AuroraForEach) [header only]
|
|
|
|
## License
|
|
Public Domain or Unlicense |