diff options
Diffstat (limited to 'scripts/geneval.lua')
-rw-r--r-- | scripts/geneval.lua | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/scripts/geneval.lua b/scripts/geneval.lua index c9533d7908..396e7b81db 100644 --- a/scripts/geneval.lua +++ b/scripts/geneval.lua @@ -1,5 +1,8 @@ +mpack = require('mpack') + local nvimsrcdir = arg[1] local autodir = arg[2] +local metadata_file = arg[3] if nvimsrcdir == '--help' then print([[ @@ -18,9 +21,20 @@ local funcsfname = autodir .. '/funcs.generated.h' local funcspipe = io.open(funcsfname .. '.hsh', 'w') -local funcs = require('eval') +local funcs = require('eval').funcs + +local metadata = mpack.unpack(io.open(arg[3], 'rb'):read("*all")) + +for i,fun in ipairs(metadata) do + funcs['api_'..fun.name] = { + args=#fun.parameters, + func='api_wrapper', + data='handle_'..fun.name, + } +end + -for name, def in pairs(funcs.funcs) do +for name, def in pairs(funcs) do args = def.args or 0 if type(args) == 'number' then args = {args, args} @@ -28,7 +42,8 @@ for name, def in pairs(funcs.funcs) do args[2] = 'MAX_FUNC_ARGS' end func = def.func or ('f_' .. name) - local val = ('{ %s, %s, &%s }'):format(args[1], args[2], func) + data = def.data or "NULL" + local val = ('{ %s, %s, &%s, %s }'):format(args[1], args[2], func, data) funcspipe:write(name .. '\n' .. val .. '\n') end funcspipe:close() |