aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--list_beta_c_names.lua13
-rw-r--r--utils/eolian_extras.lua37
2 files changed, 35 insertions, 15 deletions
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