Skip to content

Commit

Permalink
fixed deserialization bug
Browse files Browse the repository at this point in the history
  • Loading branch information
quantimnot committed Jun 4, 2021
1 parent c2d6fe7 commit 6a64b2b
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 10 deletions.
18 changes: 14 additions & 4 deletions nimx/backends.nim
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ type AudioApi* {.pure.} = enum
sdl
appkit
winapi
alsa

type Backend* = tuple
os: OsApi
Expand All @@ -48,13 +49,22 @@ const backend*: Backend =
elif defined android:
(OsApi.android, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
elif defined macosx:
(OsApi.macosx, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
when defined nimxAvoidSDL:
(OsApi.macosx, WindowApi.appkit, InputApi.appkit, GraphicApi.opengles2, AudioApi.appkit)
else:
(OsApi.macosx, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
elif defined linux:
(OsApi.linux, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
when defined nimxAvoidSDL:
(OsApi.linux, WindowApi.xll, InputApi.xll, GraphicApi.opengles2, AudioApi.alsa)
else:
(OsApi.linux, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
elif defined windows:
(OsApi.windows, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
when defined nimxAvoidSDL:
(OsApi.windows, WindowApi.winapi, InputApi.winapi, GraphicApi.opengles2, AudioApi.winapi)
else:
(OsApi.windows, WindowApi.sdl, InputApi.sdl, GraphicApi.opengles2, AudioApi.sdl)
else: {.error: "unknown backend".}


const web* = backend.os == OsApi.web
const mobile* = defined(ios) or defined(android)
const desktop* = not web and not mobile
7 changes: 3 additions & 4 deletions nimx/meta_extensions/serializers_gen.nim
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ macro genSerializers(typdesc: typed{nkSym}): untyped=

let viewArg = ident("v")
let serArg = ident("s")
let gfxArg = ident("gfx")
let gfx = ident("gfx")

var serializerBody = nnkStmtList.newNimNode()
var deserializerBody = nnkStmtList.newNimNode()
Expand All @@ -35,7 +35,7 @@ macro genSerializers(typdesc: typed{nkSym}): untyped=
procCall `viewArg`.`parent`.serializeFields(`serArg`)

deserializerBody.add quote do:
procCall `viewArg`.`parent`.deserializeFields(`serArg`, `gfxArg`)
procCall `viewArg`.`parent`.deserializeFields(`serArg`, `gfx`)

for p in typdesc.propertyDescs():
let serCall = genSerializeCall(viewArg, serArg, ident(p.name))
Expand All @@ -49,9 +49,8 @@ macro genSerializers(typdesc: typed{nkSym}): untyped=
method serializeFields*(`viewArg`: `typdesc`, `serArg`: Serializer) =
`serializerBody`

method deserializeFields*(`viewArg`: `typdesc`, `serArg`: Deserializer, `gfxArg`: GraphicsContext)=
method deserializeFields*(`viewArg`: `typdesc`, `serArg`: Deserializer, `gfx`: RootRef)=
`deserializerBody`
echo repr result

template genSerializeCodeForView*(c: typed)=
import nimx / serializers
Expand Down
2 changes: 1 addition & 1 deletion nimx/serializers.nim
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ proc deserialize*(s: Deserializer, k: string, v: var ContextFree, gfx: RootRef =
s.curKey = k
s.deserialize(v)

proc deserialize*[T](s: Deserializer, k: string, v: var T, gfx: RootRef) {.inline.} =
proc deserialize*[T: not ContextFree](s: Deserializer, k: string, v: var T, gfx: RootRef) {.inline.} =
s.curKey = k
s.deserialize(v, gfx)

Expand Down
2 changes: 1 addition & 1 deletion nimx/ui_resource.nim
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ proc `@`(str: string): UIResID =
UIResID(hash(str))

proc deserializeView*(jn: JsonNode, gfx: GraphicsContext): View =
newJsonDeserializer(jn).deserialize(result, RootRef(gfx))
newJsonDeserializer(jn).deserialize(result, gfx)

proc deserializeView*(data: string, gfx: GraphicsContext): View =
deserializeView(parseJson(data), gfx)
Expand Down

0 comments on commit 6a64b2b

Please sign in to comment.