diff options
Diffstat (limited to 'scripts/msgpack-gen.lua')
| -rw-r--r-- | scripts/msgpack-gen.lua | 35 | 
1 files changed, 19 insertions, 16 deletions
| diff --git a/scripts/msgpack-gen.lua b/scripts/msgpack-gen.lua index c726db3920..2da3c174f9 100644 --- a/scripts/msgpack-gen.lua +++ b/scripts/msgpack-gen.lua @@ -35,7 +35,8 @@ c_proto = Ct(    Cg(c_type, 'return_type') * Cg(c_id, 'name') *    fill * P('(') * fill * Cg(c_params, 'parameters') * fill * P(')') *    Cg(Cc(false), 'async') * -  (fill * Cg((P('FUNC_ATTR_ASYNC') * Cc(true)), 'async') ^ -1) * +  (fill * Cg((P('FUNC_API_ASYNC') * Cc(true)), 'async') ^ -1) * +  (fill * Cg((P('FUNC_API_NOEXPORT') * Cc(true)), 'noexport') ^ -1) *    fill * P(';')    )  grammar = Ct((c_proto + c_comment + c_preproc + ws) ^ 1) @@ -44,7 +45,7 @@ grammar = Ct((c_proto + c_comment + c_preproc + ws) ^ 1)  assert(#arg >= 1)  functions = {} --- names of all headers relative to the source root(for inclusion in the +-- names of all headers relative to the source root (for inclusion in the  -- generated file)  headers = {}  -- output file(dispatch function + metadata serialized with msgpack) @@ -62,20 +63,22 @@ for i = 1, #arg - 1 do    local input = io.open(full_path, 'rb')    local tmp = grammar:match(input:read('*all'))    for i = 1, #tmp do -    functions[#functions + 1] = tmp[i]      local fn = tmp[i] -    if #fn.parameters ~= 0 and fn.parameters[1][2] == 'channel_id' then -      -- this function should receive the channel id -      fn.receives_channel_id = true -      -- remove the parameter since it won't be passed by the api client -      table.remove(fn.parameters, 1) -    end -    if #fn.parameters ~= 0 and fn.parameters[#fn.parameters][1] == 'error' then -      -- function can fail if the last parameter type is 'Error' -      fn.can_fail = true -      -- remove the error parameter, msgpack has it's own special field -      -- for specifying errors -      fn.parameters[#fn.parameters] = nil +    if not fn.noexport then +      functions[#functions + 1] = tmp[i] +      if #fn.parameters ~= 0 and fn.parameters[1][2] == 'channel_id' then +        -- this function should receive the channel id +        fn.receives_channel_id = true +        -- remove the parameter since it won't be passed by the api client +        table.remove(fn.parameters, 1) +      end +      if #fn.parameters ~= 0 and fn.parameters[#fn.parameters][1] == 'error' then +        -- function can fail if the last parameter type is 'Error' +        fn.can_fail = true +        -- remove the error parameter, msgpack has it's own special field +        -- for specifying errors +        fn.parameters[#fn.parameters] = nil +      end      end    end    input:close() @@ -217,7 +220,7 @@ for i = 1, #functions do    if fn.receives_channel_id then      -- if the function receives the channel id, pass it as first argument -    if #args > 0 then +    if #args > 0 or fn.can_fail then        output:write('channel_id, '..call_args)      else        output:write('channel_id') | 
