diff --git a/src/preserves.nim b/src/preserves.nim index 3f84e90..ef98bd3 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -5,8 +5,8 @@ import bigints type PreserveKind* = enum - pkBoolean, pkFloat, pkDouble, pkSignedInteger, pkBigInteger, pkString, pkByteString, - pkSymbol, pkRecord, pkSequence, pkSet, pkDictionary, pkEmbedded + pkBoolean, pkFloat, pkDouble, pkSignedInteger, pkBigInteger, pkString, + pkByteString, pkSymbol, pkRecord, pkSequence, pkSet, pkDictionary, pkEmbedded Preserve*[T] {.acyclic.} = object ## Type that stores a Preserves value. @@ -144,8 +144,10 @@ proc fields*[T](prs: Preserve[T]): seq[Preserve[T]] {.inline.} = iterator fields*[T](prs: Preserve[T]): Preserve[T] = ## Iterate the fields of a record value. - for i in 1..prs.record.high: - yield prs.record[i] + for i in 1..prs.record.high: yield prs.record[i] + +iterator setItems*[T](prs: Preserve[T]): Preserve[T] = + for v in prs.set.keys: yield v proc `<`(x, y: string | seq[byte]): bool = for i in 0 .. min(x.high, y.high):