nondescript/types/ndstring.nim

21 lines
418 B
Nim

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