diff --git a/list_beta_c_names.lua b/list_beta_c_names.lua index 5f989eb..c74ee48 100644 --- a/list_beta_c_names.lua +++ b/list_beta_c_names.lua @@ -3,6 +3,7 @@ local getopt = require("getopt") local eou = require("utils.eolian_extras") local exit = false +local legacy = false local pargs getopt.parse { @@ -14,7 +15,8 @@ path. If no path is specified, system-wide eo files are used instead.]], descs = { { "h", "help", false, help = "Show this message.", callback = getopt.help_cb(io.stdout) - } + }, + { "l", "legacy", false, help = "Print only legacy names intead." } }, error_cb = function(parser, msg) io.stderr:write(msg, "\n") @@ -25,6 +27,9 @@ path. If no path is specified, system-wide eo files are used instead.]], if opts["h"] then exit = true end + if opts["l"] then + legacy = true + end pargs = args end } @@ -45,17 +50,17 @@ eos:all_eot_files_parse() eos:all_eo_files_parse() print("API functions:\n") -for i, n in ipairs(eou.get_c_functions(eos)) do +for i, n in ipairs(eou.get_c_functions(eos, legacy)) do print(n) end print("\nEvents:\n") -for i, n in ipairs(eou.get_c_events(eos)) do +for i, n in ipairs(eou.get_c_events(eos, legacy)) do print(n) end print("\nFunction pointers:\n") -for i, n in ipairs(eou.get_c_function_pointers(eos)) do +for i, n in ipairs(eou.get_c_function_pointers(eos, legacy)) do print(n) end diff --git a/utils/eolian_extras.lua b/utils/eolian_extras.lua index 35be202..f84e048 100644 --- a/utils/eolian_extras.lua +++ b/utils/eolian_extras.lua @@ -57,28 +57,43 @@ M.new = function() return eolian.new() end -M.get_c_functions = function(eos) +local f_is_beta = function(fn) + if legacy then + return false + end + return fn:is_beta() +end + +M.get_c_functions = function(eos, only_legacy) + only_legacy = not not only_legacy local ret = {} for cl in eos:classes_get() do local fntp = eolian.function_type for fn in cl:functions_get(fntp.METHOD) do - ret[#ret + 1] = fn:full_c_name_get(fntp.METHOD, false) + if not only_legacy or not f_is_beta(fn) then + ret[#ret + 1] = fn:full_c_name_get(fntp.METHOD, only_legacy) + end end for fn in cl:functions_get(fntp.PROPERTY) do - local tp = fn:type_get() - if tp == fntp.PROPERTY then - ret[#ret + 1] = fn:full_c_name_get(fntp.PROP_GET, false) - ret[#ret + 1] = fn:full_c_name_get(fntp.PROP_SET, false) - else - ret[#ret + 1] = fn:full_c_name_get(tp, false) + if not only_legacy or not f_is_beta(fn) then + local tp = fn:type_get() + if tp == fntp.PROPERTY then + ret[#ret + 1] = fn:full_c_name_get(fntp.PROP_GET, only_legacy) + ret[#ret + 1] = fn:full_c_name_get(fntp.PROP_SET, only_legacy) + else + ret[#ret + 1] = fn:full_c_name_get(tp, only_legacy) + end end end end return ret end -M.get_c_events = function(eos) +M.get_c_events = function(eos, only_legacy) local ret = {} + if only_legacy then + return ret + end for cl in eos:classes_get() do for ev in cl:events_get() do ret[#ret + 1] = ev:c_name_get() @@ -94,8 +109,8 @@ local full_name_get = function(obj) return obj:name_get() end -M.get_c_function_pointers = function(eos) - if legacy then +M.get_c_function_pointers = function(eos, only_legacy) + if legacy or only_legacy then -- no function pointer support in pre-state api return {} end