nondescript/src/ndspkg/types/ndstring.nim

24 lines
421 B
Nim
Raw Normal View History

2022-01-29 04:22:21 +01:00
2022-01-28 04:17:11 +01:00
type
NdString* = ptr object
2022-01-29 04:22:21 +01:00
len*: uint32
hash*: uint32
chars*: UncheckedArray[char]
2022-01-28 22:00:21 +01:00
proc free*(ndStr: var NdString) =
dealloc(ndStr)
# hashes
2022-01-29 04:22:21 +01:00
proc fnv1a*(ndStr: NdString): int =
2022-01-28 22:00:21 +01:00
var hash = 2166136261'u32
for i in countup(0, ndStr.len.int - 1):
hash = hash xor (ndStr.chars[i]).uint32
hash *= 16777619
2022-01-29 04:22:21 +01:00
return hash.int
# equals
2022-01-29 04:22:21 +01:00
proc equal*(left, right: NdString): bool =
left == right