jeudi 1 janvier 2015

Finding An Alternative To Abusing Enums

In a project I've been helping with recently, the entire code base depends on a monstrous enum that's effectively used as keys for a glorified Hash Table. The only problem is now that it is HUGE, compiling whenever the enum changes is basically a rebuild for an already large code base. This takes forever and I would really LOVE to replace it.



enum Values
{
Value = 1,
AnotherValue = 2,
<Couple Thousand Entries>
NumValues // Sentinel value for creating arrays of the right size
}


What I'm looking for is ways to replace this enum but still have a system that is typesafe (No unchecked strings) and also compatible with MSVC2010 (no constexpr). Extra compiling overhead is acceptable as it might still be shorter time to compile than recompiling a bunch of files.


My current attempts can basically be summed up as delaying defining the values until link time.


Examples of its use



GetValueFromDatabase(Value);
AddValueToDatabase(Value, 5);
int TempArray[NumValues];


Edit: Compiletime and Runtime preprocessing is acceptable. Along with basing it off some kind of caching data structure at runtime.


Aucun commentaire:

Enregistrer un commentaire