From 7d91c2b5cb17f664df7a20941d62d8a615eeb5b3 Mon Sep 17 00:00:00 2001 From: Ruslan Mustakov Date: Fri, 28 Jul 2017 18:26:36 +0700 Subject: [PATCH] Fix ambiguous calls when creating Variant from ints --- godot/core/variants.nim | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/godot/core/variants.nim b/godot/core/variants.nim index d8f372a..c967370 100644 --- a/godot/core/variants.nim +++ b/godot/core/variants.nim @@ -36,13 +36,23 @@ proc newVariant*(b: bool): Variant {.inline.} = new(result, variantFinalizer) initGodotVariant(result.godotVariant[], b) -proc newVariant*(i: uint64): Variant {.inline.} = - new(result, variantFinalizer) - initGodotVariant(result.godotVariant[], i) +# resolves Nim call ambiguities well +template numConstructor(T, ConvT) = + proc newVariant*(i: T): Variant {.inline.} = + new(result, variantFinalizer) + initGodotVariant(result.godotVariant[], ConvT(i)) -proc newVariant*(i: int64): Variant {.inline.} = - new(result, variantFinalizer) - initGodotVariant(result.godotVariant[], i) +numConstructor(uint8, uint64) +numConstructor(uint16, uint64) +numConstructor(uint32, uint64) +numConstructor(uint64, uint64) +numConstructor(uint, uint64) + +numConstructor(int8, int64) +numConstructor(int16, int64) +numConstructor(int32, int64) +numConstructor(int64, int64) +numConstructor(int, int64) proc newVariant*(r: cdouble): Variant {.inline.} = new(result, variantFinalizer)