fixed components; added playerapp example

This commit is contained in:
Andreas Rumpf 2017-04-14 20:49:42 +02:00
commit a9b12a231f
5 changed files with 99 additions and 6 deletions

View file

@ -91,21 +91,29 @@ macro component*(prc: untyped): untyped =
unpackCall.add unpack(typ, counter)
inc counter
template vwrapper(pname, cname, nameStrLit, unpackCall) {.dirty.} =
template vwrapper(pname, unpackCall) {.dirty.} =
proc pname(args: seq[VNode]): VNode =
unpackCall
vcomponents[cstring(nameStrLit)] = cname
template dwrapper(pname, cname, nameStrLit, unpackCall) {.dirty.} =
template dwrapper(pname, unpackCall) {.dirty.} =
proc pname(args: seq[VNode]): Node =
unpackCall
dcomponents[cstring(nameStrLit)] = cname
template vregister(key, val) =
bind jdict.`[]=`
`[]=`(vcomponents, cstring(key), val)
template dregister(key, val) =
bind jdict.`[]=`
`[]=`(dcomponents, cstring(key), val)
result = newTree(nnkStmtList, n)
if isvirtual == ComponentKind.VNode:
result.add getAst(vwrapper(newname name, realName, newLit(nn), unpackCall))
result.add getAst(vwrapper(newname name, unpackCall))
result.add getAst(vregister(newLit(nn), realName))
else:
result.add getAst(dwrapper(newname name, realName, newLit(nn), unpackCall))
result.add getAst(dwrapper(newname name, unpackCall))
result.add getAst(dregister(newLit(nn), realName))
allcomponents[nn] = isvirtual
when defined(debugKaraxDsl):
echo repr result