Added std::collections::enummap.

This commit is contained in:
Dmitry Atamanov
2023-03-04 21:17:37 +05:00
committed by Christoffer Lerno
parent 1035de3b36
commit 549e1b6029
2 changed files with 47 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
module std::collections::enummap<Enum, ValueType>;
struct EnumMap
{
ValueType[Enum.len] values;
}
fn void EnumMap.init(EnumMap* this, ValueType init_value)
{
foreach(&a : this.values)
{
*a = init_value;
}
}
fn uint EnumMap.len(EnumMap* this) @operator(len) => this.values.len;
fn ValueType EnumMap.get(EnumMap* this, Enum key) @operator([]) => this.values[key.ordinal];
fn void EnumMap.set(EnumMap* this, Enum key, ValueType value) @operator([]=) => this.values[key.ordinal] = value;