Tweak to and fromPresrves for EmbeddedRef
This commit is contained in:
parent
416af8ff5f
commit
7b17f935ea
|
@ -375,6 +375,8 @@ proc toPreserves*[T](x: T): Value {.gcsafe.} =
|
||||||
elif T is Ordinal:
|
elif T is Ordinal:
|
||||||
result = Value(kind: pkRegister, register: x.ord)
|
result = Value(kind: pkRegister, register: x.ord)
|
||||||
assert result.register.T == x
|
assert result.register.T == x
|
||||||
|
elif T is EmbeddedRef:
|
||||||
|
result = embed(x)
|
||||||
elif T is ptr | ref:
|
elif T is ptr | ref:
|
||||||
if system.`==`(x, nil): result = initRecord("null")
|
if system.`==`(x, nil): result = initRecord("null")
|
||||||
else: result = toPreserves(x[])
|
else: result = toPreserves(x[])
|
||||||
|
@ -660,9 +662,8 @@ proc fromPreserves*[T](v: var T; pr: Value): bool {.gcsafe.} =
|
||||||
if not result: break
|
if not result: break
|
||||||
else: discard
|
else: discard
|
||||||
elif T is EmbeddedRef:
|
elif T is EmbeddedRef:
|
||||||
if pr.kind == pkEmbedded and pr.embeddedRef of T:
|
v = T(pr.embeddedRef)
|
||||||
v = T(pr.embeddedRef)
|
result = true
|
||||||
result = true
|
|
||||||
elif T is ref:
|
elif T is ref:
|
||||||
if isNil(v): new(v)
|
if isNil(v): new(v)
|
||||||
result = fromPreserves(v[], pr)
|
result = fromPreserves(v[], pr)
|
||||||
|
|
Loading…
Reference in New Issue