From 75c176ddb667c4985ba9e198ee76bb0c9541e48d Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 23 Sep 2021 14:29:31 +0200 Subject: [PATCH] New constructors for record and sequence --- src/preserves.nim | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/preserves.nim b/src/preserves.nim index a499610..b3d35ac 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -228,6 +228,11 @@ proc symbol*(s: string; E = void): Preserve {.inline.} = ## Create a Preserves symbol value. Preserve(kind: pkSymbol, symbol: s) +proc initRecord*(label: Preserve; arity = 0): Preserve = + ## Create a Preserves record value. + result = Preserve(kind: pkRecord, record: newSeq[Preserve](arity.succ)) + result.record[arity] = label + proc initRecord*(label: Preserve; args: varargs[Preserve]): Preserve = ## Create a Preserves record value. result = Preserve(kind: pkRecord, @@ -242,6 +247,10 @@ proc initRecord*(label: string; args: varargs[Preserve, toPreserve]): Preserve = assert($initRecord("foo", 1, 2.0) == "") initRecord(symbol(label), args) +proc initSequence*(len = 0): Preserve = + ## Create a Preserves sequence value. + Preserve(kind: pkSequence, record: newSeq[Preserve](len)) + proc initSet*(): Preserve = Preserve(kind: pkSet) ## Create a Preserves set value.