Aurora Enumerations // "I forgot magic enum existed, and now I want to keep our STL-free basic implementation"
Go to file
2021-10-28 21:43:28 +00:00
Include [*] Fix kName ->k ## name 2021-10-28 21:43:28 +00:00
.gitignore [+] Initial Commit 2021-10-28 21:52:23 +01:00
Aurora.json [+] Initial Commit 2021-10-28 21:52:23 +01:00
README.md [*] Mend readme to account for the new AUE_OUT_OF_ECOSYSTEM macro 2021-10-28 21:15:57 +00:00

Aurora Enum

[TODO]

Example

Include

#define AUE_OUT_OF_ECOSYSTEM // Applications in the Aurora ecosystem do not need this line
#include <AuroraForEach.hpp>
#include <AuroraEnum.hpp>

Example

#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