OrderedTable to Variant conversion support
This commit is contained in:
parent
ceaf66a34c
commit
859f9f04fb
2 changed files with 9 additions and 5 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
version = "0.7.16"
|
version = "0.7.17"
|
||||||
author = "Xored Software, Inc."
|
author = "Xored Software, Inc."
|
||||||
description = "Godot Engine bindings"
|
description = "Godot Engine bindings"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
|
||||||
|
|
@ -791,10 +791,10 @@ proc fromVariant*[T: array](s: var T, val: Variant): ConversionResult =
|
||||||
else:
|
else:
|
||||||
result = ConversionResult.TypeError
|
result = ConversionResult.TypeError
|
||||||
|
|
||||||
proc godotTypeInfo*(T: typedesc[Table|TableRef]): GodotTypeInfo {.inline.} =
|
proc godotTypeInfo*(T: typedesc[Table|TableRef|OrderedTable|OrderedTableRef]): GodotTypeInfo {.inline.} =
|
||||||
result.variantType = VariantType.Dictionary
|
result.variantType = VariantType.Dictionary
|
||||||
|
|
||||||
proc toVariant*[T: Table or TableRef](t: T): Variant =
|
proc toVariant*[T: Table or TableRef or OrderedTable or OrderedTableRef](t: T): Variant =
|
||||||
when t is ref:
|
when t is ref:
|
||||||
if t.isNil:
|
if t.isNil:
|
||||||
return newVariant()
|
return newVariant()
|
||||||
|
|
@ -804,7 +804,7 @@ proc toVariant*[T: Table or TableRef](t: T): Variant =
|
||||||
dict[toVariant(k)] = toVariant(v)
|
dict[toVariant(k)] = toVariant(v)
|
||||||
result = newVariant(dict)
|
result = newVariant(dict)
|
||||||
|
|
||||||
proc fromVariant*[T: Table or TableRef](t: var T,
|
proc fromVariant*[T: Table or TableRef or OrderedTable or OrderedTableRef](t: var T,
|
||||||
val: Variant): ConversionResult =
|
val: Variant): ConversionResult =
|
||||||
if val.getType() == VariantType.Nil:
|
if val.getType() == VariantType.Nil:
|
||||||
when t is ref:
|
when t is ref:
|
||||||
|
|
@ -814,8 +814,12 @@ proc fromVariant*[T: Table or TableRef](t: var T,
|
||||||
mixin fromVariant
|
mixin fromVariant
|
||||||
when t is Table:
|
when t is Table:
|
||||||
t = initTable[type(t.keys()), type(t.values())]()
|
t = initTable[type(t.keys()), type(t.values())]()
|
||||||
else:
|
elif t is TableRef:
|
||||||
t = newTable[type(t.keys()), type(t.values())]()
|
t = newTable[type(t.keys()), type(t.values())]()
|
||||||
|
elif t is OrderedTable:
|
||||||
|
t = initOrderedTable[type(t.keys()), type(t.values())]()
|
||||||
|
else:
|
||||||
|
t = newOrderedTable[type(t.keys()), type(t.values())]()
|
||||||
for k, v in dict:
|
for k, v in dict:
|
||||||
var nimKey: type(t.keys())
|
var nimKey: type(t.keys())
|
||||||
var nimVal: type(t.values())
|
var nimVal: type(t.values())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue