Rework the initX[E]() procs to initX(E = void)
This commit is contained in:
parent
5d3f7b94a3
commit
71b6d4c017
|
@ -313,14 +313,14 @@ proc initRecord*[E](label: string; args: varargs[Preserve[E]]): Preserve[E] {.in
|
||||||
## Create a Preserves record value.
|
## Create a Preserves record value.
|
||||||
initRecord(toSymbol(label, E), args)
|
initRecord(toSymbol(label, E), args)
|
||||||
|
|
||||||
proc initSequence*[E](len: Natural = 0): Preserve[E] =
|
proc initSequence*(len: Natural = 0; E = void): Preserve[E] =
|
||||||
## Create a Preserves sequence value.
|
## Create a Preserves sequence value.
|
||||||
Preserve[E](kind: pkSequence, sequence: newSeq[Preserve[E]](len))
|
Preserve[E](kind: pkSequence, sequence: newSeq[Preserve[E]](len))
|
||||||
|
|
||||||
proc initSet*[E](): Preserve[E] = Preserve[E](kind: pkSet)
|
proc initSet*(E = void): Preserve[E] = Preserve[E](kind: pkSet)
|
||||||
## Create a Preserves set value.
|
## Create a Preserves set value.
|
||||||
|
|
||||||
proc initDictionary*[E](): Preserve[E] = Preserve[E](kind: pkDictionary)
|
proc initDictionary*(E = void): Preserve[E] = Preserve[E](kind: pkDictionary)
|
||||||
## Create a Preserves dictionary value.
|
## Create a Preserves dictionary value.
|
||||||
|
|
||||||
proc embed*[E](pr: sink Preserve[E]): Preserve[E] =
|
proc embed*[E](pr: sink Preserve[E]): Preserve[E] =
|
||||||
|
@ -827,7 +827,7 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] =
|
||||||
result.record.add(pr)
|
result.record.add(pr)
|
||||||
result.record.add(tosymbol(T.getCustomPragmaVal(preservesRecord), E))
|
result.record.add(tosymbol(T.getCustomPragmaVal(preservesRecord), E))
|
||||||
elif T.hasCustomPragma(preservesTuple):
|
elif T.hasCustomPragma(preservesTuple):
|
||||||
result = initSequence[E]()
|
result = initSequence(0, E)
|
||||||
for label, field in x.fieldPairs:
|
for label, field in x.fieldPairs:
|
||||||
when x.dot(label).hasCustomPragma(preservesTupleTail):
|
when x.dot(label).hasCustomPragma(preservesTupleTail):
|
||||||
for y in field.items:
|
for y in field.items:
|
||||||
|
@ -838,7 +838,7 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] =
|
||||||
applyEmbed(label, pr)
|
applyEmbed(label, pr)
|
||||||
result.sequence.add(pr)
|
result.sequence.add(pr)
|
||||||
elif T.hasCustomPragma(preservesDictionary):
|
elif T.hasCustomPragma(preservesDictionary):
|
||||||
result = initDictionary[E]()
|
result = initDictionary(E)
|
||||||
for key, val in x.fieldPairs:
|
for key, val in x.fieldPairs:
|
||||||
var pr = fieldToPreserve(key, val)
|
var pr = fieldToPreserve(key, val)
|
||||||
applyEmbed(key, pr)
|
applyEmbed(key, pr)
|
||||||
|
@ -859,7 +859,7 @@ proc toPreserveHook*[T](set: HashSet[T]; E: typedesc): Preserve[E] =
|
||||||
|
|
||||||
proc toPreserveHook*[A, B](table: Table[A, B]|TableRef[A, B], E: typedesc): Preserve[E] =
|
proc toPreserveHook*[A, B](table: Table[A, B]|TableRef[A, B], E: typedesc): Preserve[E] =
|
||||||
## Hook for preserving ``Table``.
|
## Hook for preserving ``Table``.
|
||||||
result = initDictionary[E]()
|
result = initDictionary(E)
|
||||||
for k, v in table.pairs:
|
for k, v in table.pairs:
|
||||||
result[toPreserve(k, E)] = toPreserve(v, E)
|
result[toPreserve(k, E)] = toPreserve(v, E)
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ const parser = peg("Schema", p: ParseState):
|
||||||
pushStack n
|
pushStack n
|
||||||
|
|
||||||
Ref <- >(Alpha * *Alnum) * *('.' * >(*Alnum)):
|
Ref <- >(Alpha * *Alnum) * *('.' * >(*Alnum)):
|
||||||
var path = initSequence[void]()
|
var path = initSequence()
|
||||||
for i in 1..<capture.len: path.sequence.add(toSymbol capture[i].s)
|
for i in 1..<capture.len: path.sequence.add(toSymbol capture[i].s)
|
||||||
var name = pop(path.sequence)
|
var name = pop(path.sequence)
|
||||||
var n = initRecord(toSymbol"ref", path, name)
|
var n = initRecord(toSymbol"ref", path, name)
|
||||||
|
@ -240,7 +240,7 @@ const parser = peg("Schema", p: ParseState):
|
||||||
pushStack node
|
pushStack node
|
||||||
|
|
||||||
DictionaryPattern <- '{' * S * *(>Value * S * ':' * S * NamedSimplePattern * S) * '}':
|
DictionaryPattern <- '{' * S * *(>Value * S * ':' * S * NamedSimplePattern * S) * '}':
|
||||||
var dict = initDictionary[void]()
|
var dict = initDictionary(void)
|
||||||
for i in countDown(pred capture.len, 1):
|
for i in countDown(pred capture.len, 1):
|
||||||
let key = toSymbol capture[i].s
|
let key = toSymbol capture[i].s
|
||||||
dict[key] = initRecord("named", key, popStack())
|
dict[key] = initRecord("named", key, popStack())
|
||||||
|
|
|
@ -89,10 +89,10 @@ proc toPreserveHook*(node: Node; E: typedesc): Preserve[E] =
|
||||||
result = toPreserve(cast[seq[byte]](ByteStringNode(node).value), E)
|
result = toPreserve(cast[seq[byte]](ByteStringNode(node).value), E)
|
||||||
elif node of Blok:
|
elif node of Blok:
|
||||||
var blk = Blok(node)
|
var blk = Blok(node)
|
||||||
result = initSequence[E](blk.nodes.len)
|
result = initSequence(blk.nodes.len, E)
|
||||||
for i, child in blk.nodes: result.sequence[i] = toPreserve(child, E)
|
for i, child in blk.nodes: result.sequence[i] = toPreserve(child, E)
|
||||||
elif node of Map:
|
elif node of Map:
|
||||||
result = initDictionary[E]()
|
result = initDictionary(E)
|
||||||
for key, val in Map(node).bindings:
|
for key, val in Map(node).bindings:
|
||||||
result[toPreserve(key, E)] = toPreserve(val, E)
|
result[toPreserve(key, E)] = toPreserve(val, E)
|
||||||
elif node of StringVal:
|
elif node of StringVal:
|
||||||
|
|
|
@ -28,7 +28,7 @@ proc toPreserveHook*(xn: XmlNode; E: typedesc): Preserve[E] =
|
||||||
if xn.kind == xnElement:
|
if xn.kind == xnElement:
|
||||||
result = Preserve[E](kind: pkRecord)
|
result = Preserve[E](kind: pkRecord)
|
||||||
if not xn.attrs.isNil:
|
if not xn.attrs.isNil:
|
||||||
var attrs = initDictionary[E]()
|
var attrs = initDictionary(E)
|
||||||
for xk, xv in xn.attrs.pairs:
|
for xk, xv in xn.attrs.pairs:
|
||||||
attrs[toSymbol(xk, E)] = toPreserveFromString(xv, E)
|
attrs[toSymbol(xk, E)] = toPreserveFromString(xv, E)
|
||||||
result.record.add(attrs)
|
result.record.add(attrs)
|
||||||
|
|
Loading…
Reference in New Issue