Skip to content

Commit

Permalink
Small changes to add 0.18.0 compatibility
Browse files Browse the repository at this point in the history
Change toGodotName back to macro because that got fixed in devel

change isSome to isNone in godotapigen
  • Loading branch information
zetashift authored and endragor committed Sep 15, 2019
1 parent 3a935b9 commit 34fda99
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 15 deletions.
2 changes: 1 addition & 1 deletion godot/godotapigen.nim
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ proc doGenerateMethod(tree: PNode, methodBindRegistry: var HashSet[string],
ident("array"), ident("MAX_ARG_COUNT"),
if isVarargs: newNode(nkPtrTy).addChain(ident("GodotVariant"))
else: ident("pointer"))))
staticArgsLen = if varargsName.isSome: meth.args.len
staticArgsLen = if varargsName.isNone: meth.args.len
else: meth.args.len - 1
if varargsName.isSome:
argLenNode = newCall("cint",
Expand Down
16 changes: 11 additions & 5 deletions godot/nim/godotmacros.nim
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ proc parseType(definition, callSite: NimNode): ObjectDecl =
parseError(option, "valid type specifier expected")
result.isTool = isTool

if result.parentName == "": result.parentName = "Object"
if result.parentName.len == 0: result.parentName = "Object"
for statement in body:
case statement.kind:
of nnkVarSection:
Expand Down Expand Up @@ -444,7 +444,7 @@ proc genType(obj: ObjectDecl): NimNode {.compileTime.} =
let objTy = newNimNode(nnkObjectTy)
typeDef.add(newNimNode(nnkRefTy).add(objTy))
objTy.add(newEmptyNode())
if obj.parentName == "":
if obj.parentName.len == 0:
objTy.add(newEmptyNode())
else:
objTy.add(newNimNode(nnkOfInherit).add(ident(obj.parentName)))
Expand Down Expand Up @@ -503,11 +503,11 @@ proc genType(obj: ObjectDecl): NimNode {.compileTime.} =
result.add(meth.nimNode)

# Register Godot object
let parentName = if obj.parentName == "": newStrLitNode("Object")
let parentName = if obj.parentName.len == 0: newStrLitNode("Object")
else: newStrLitNode(obj.parentName)
let classNameLit = newStrLitNode(obj.name)
let classNameIdent = ident(obj.name)
let isRef: bool = if obj.parentName == "": false
let isRef: bool = if obj.parentName.len == 0: false
else: obj.parentName in refClasses
# Wrapping bools with a newLit is required as a temporary workaround for
# https://github.com/nim-lang/Nim/issues/7375
Expand Down Expand Up @@ -544,9 +544,15 @@ proc genType(obj: ObjectDecl): NimNode {.compileTime.} =
template registerGodotMethod(classNameLit, classNameIdent, methodNameIdent,
methodNameLit, minArgs, maxArgs,
argTypes, methFuncIdent, hasReturnValue) =
{.emit: """/*TYPESECTION*/
when (NimMajor, NimMinor, NimPatch) < (0, 19, 0):
{.emit: """/*TYPESECTION*/
N_NOINLINE(void, setStackBottom)(void* thestackbottom);
""".}
else:
{.emit: """
N_NOINLINE(void, nimGC_setStackBottom)(void* thestackbottom);
""".}

proc methFuncIdent(obj: ptr GodotObject, methodData: pointer,
userData: pointer, numArgs: cint,
args: var array[MAX_ARG_COUNT, ptr GodotVariant]):
Expand Down
30 changes: 21 additions & 9 deletions godot/nim/godotnim.nim
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ macro baseNativeType(T: typedesc): cstring =
if typeName == "NimGodotObject":
break
t = getType(t[1][1])
if baseT == "":
if baseT.len == 0:
result = newNilLit()
else:
let rStr = newNimNode(nnkRStrLit)
Expand Down Expand Up @@ -343,7 +343,7 @@ proc newRStrLit(s: string): NimNode {.compileTime.} =
result = newNimNode(nnkRStrLit)
result.strVal = s

proc toGodotName(T: typedesc): string =
macro toGodotName(T: typedesc): string =
if T is GodotString or T is string:
"String"
elif T is SomeFloat:
Expand Down Expand Up @@ -708,10 +708,16 @@ proc toVariant*(s: string): Variant {.inline.} =
proc fromVariant*(s: var string, val: Variant): ConversionResult =
if val.getType() == VariantType.String:
s = val.asString()
elif val.getType() == VariantType.Nil:
s = ""
when (NimMajor, NimMinor, NimPatch) < (0, 19, 0):
if val.getType() == VariantType.Nil:
s = nil
else:
result = ConversionResult.TypeError
else:
result = ConversionResult.TypeError
if val.getType() == VariantType.Nil:
s = ""
else:
result = ConversionResult.TypeError

template arrTypeInfo(T) =
result.variantType = VariantType.Array
Expand Down Expand Up @@ -829,10 +835,16 @@ proc fromVariant*[T: Table or TableRef or OrderedTable or OrderedTableRef](t: va
else:
result = ConversionResult.TypeError

{.emit: """/*TYPESECTION*/
N_LIB_EXPORT N_CDECL(void, NimMain)(void);
N_NOINLINE(void, nimGC_setStackBottom)(void* thestackbottom);
""".}
when (NimMajor, NimMinor, NimPatch) < (0, 19, 0):
{.emit: """/*TYPESECTION*/
N_LIB_EXPORT N_CDECL(void, NimMain)(void);
N_NOINLINE(void, setStackBottom)(void* thestackbottom);
""".}
else:
{.emit: """/*TYPESECTION*/
N_LIB_EXPORT N_CDECL(void, NimMain)(void);
N_NOINLINE(void, nimGC_setStackBottom)(void* thestackbottom);
""".}

var nativeLibHandle: pointer
proc getNativeLibHandle*(): pointer =
Expand Down

0 comments on commit 34fda99

Please sign in to comment.