The OpenD Programming Language

MirStringTable

Fast string table used to get key's id. The keys should be first sorted by length and then lexicographically.

  1. struct MirStringTable(U, C = char)
  2. struct MirStringTable(size_t length, size_t maxKeyLength, bool caseInsensetive = false, C = char)
    struct MirStringTable (
    size_t length
    size_t maxKeyLength
    bool caseInsensetive = false
    C = char
    ) if (
    is(C == char) ||
    is(C == wchar)
    ||
    is(C == dchar)
    ) {}

Constructors

this
this(immutable(C)[][length] sortedKeys)

The keys should be first sorted by length and then lexicographically.

Members

Functions

get
bool get(const(C)[] key, uint index)
opIndex
uint opIndex(C[] key)

Variables

sortedKeys
const(immutable(C)[])[length] sortedKeys;

Parameters

C

character type

Examples

static immutable sortedKeys = ["", "a", "b", "aab", "abb", "aaaaa"];
static immutable table = MirStringTable!ubyte(sortedKeys); // CTFE
static assert (table[""] == 0);
static assert (table["a"] == 1);
static assert (table["b"] == 2);
static assert (table["abb"] == 4);
assert (table["aaaaa"] == 5);
import mir.utility: simpleSort;
auto keys = ["aaaaa", "abb", "", "b", "a", "aab"];
// sorts keys by length and then lexicographically.
keys.simpleSort!smallerStringFirst;
assert(keys == ["", "a", "b", "aab", "abb", "aaaaa"]);

Meta