mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-15 09:26:38 +00:00
30 lines
885 B
Nim
30 lines
885 B
Nim
import macros
|
|
|
|
# https://github.com/nim-lang/Nim/issues/4441#issuecomment-230441949
|
|
macro importConst*(cname: untyped, cheader: string, ctype: untyped): untyped =
|
|
# dumpAstGen:
|
|
# var cnameVar {.importc: "cname", header: "cheader".}: ctype
|
|
# let cname* = cnameVar
|
|
result = newStmtList(
|
|
newNimNode(nnkVarSection).add(
|
|
newIdentDefs(
|
|
newNimNode(nnkPragmaExpr).add(
|
|
newIdentNode($cname & "Var"),
|
|
newNimNode(nnkPragma).add(
|
|
newColonExpr(newIdentNode("importc"), newStrLitNode($cname)),
|
|
newColonExpr(newIdentNode("header"), newStrLitNode($cheader))
|
|
)
|
|
),
|
|
newIdentNode($ctype),
|
|
newEmptyNode()
|
|
)
|
|
),
|
|
newNimNode(nnkLetSection).add(
|
|
newIdentDefs(
|
|
postfix(newIdentNode($cname), "*"),
|
|
newEmptyNode(),
|
|
newIdentNode($cname & "Var")
|
|
)
|
|
)
|
|
)
|