type NdString* = ptr object len*: uint32 hash*: uint32 chars*: UncheckedArray[char] proc free*(ndStr: var NdString) = dealloc(ndStr) # for hashtable: proc fnv1a*(ndStr: NdString): int = var hash = 2166136261'u32 for i in countup(0, ndStr.len.int - 1): hash = hash xor (ndStr.chars[i]).uint32 hash *= 16777619 return hash.int proc equal*(left, right: NdString): bool = left == right