23 lines
1.1 KiB
Markdown
23 lines
1.1 KiB
Markdown
[← Utils](../README.md)
|
|
|
|
# Utils/EnumsStr
|
|
|
|
Automatic enum-to-string / string-to-value conversion, backed by generated perfect-hash lookup tables instead of switch statements.
|
|
|
|
## Main features
|
|
- Code-generator macro that builds a lookup class from a set of keys, seeds and values (`TSN_MQLARTICLES_ENUM_REG_TEM` / `TSN_MQLARTICLES_ENUM_REG_TEMF` in `Template.mqh`).
|
|
- Generated class exposes O(1) `GetVal` / `GetValNoRef` lookups by string key, with a default fallback value.
|
|
- A dynamic variant (`RunDinyamics`) allows updating values at runtime, not just at generation time.
|
|
- Table/seed generation tooling lives in `Generate/` (`CRecolect` in `Generate/Recolect.mqh`).
|
|
|
|
## Basic usage
|
|
```mql5
|
|
// Generated once via the macro (seeds/hashes/values produced by the Generate/ tooling):
|
|
// You must have previously generated the perfect hash table with SimPHash; the macro helps to define a custom class.
|
|
TSN_MQLARTICLES_ENUM_REG_TEM(MyEnum, seeds, valores, hashes, BUCKETS_SIZE_L, FINAL_TABLE_SIZE_L)
|
|
|
|
// Then used as:
|
|
ENUM_MY_TYPE v = CEnumRegMyEnum::GetVal("SOME_KEY", ENUM_MY_TYPE_DEFAULT);
|
|
```
|
|
|
|
> Only the most representative macros/classes are shown here.
|