I am wrapping VapourSynth and I facing a problem that I don't how to best face
it.
I want to make available a number of functions that are available from plugins.
The plugins available are known at runtime. For example the following works:
macro gen_functions():typed =
var source = """
proc Version():ptr VSMap =
let plugins = getPlugins()
for plugin in plugins:
if plugin[0] == "ffms2":
let plug = getPluginById(plugin[1])
let args = createMap()
return API.invoke(plug, "Version".cstring, args)
"""
result = parseStmt(source)
Run
It works, because I know there is function call "Version" provided by the
plugin "ffms2", so I provide the information to the compiler.
What I would like to do is moving:
let plugins = getPlugins()
for plugin in plugins:
...
Run
outside of the "source" variable. But if I do that, obviously nim complains
becuase getPlugins requires information only available at runtime.
Can I create functions at runtime? How?
Can you think in a better strategy to create all those functions?