From 158f4cc690af89d7565d664fcfaaad0a0973937f Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 3 Aug 2018 01:24:25 +0200 Subject: [PATCH] enable the scripts to work in efl 1.20 environment --- list_beta_c_names.lua | 3 +- list_used_beta_api.lua | 3 +- utils/eolian_extras.lua | 78 +++++++++++++++++++++++++++++++++++++---- 3 files changed, 74 insertions(+), 10 deletions(-) diff --git a/list_beta_c_names.lua b/list_beta_c_names.lua index 612baf1..5f989eb 100644 --- a/list_beta_c_names.lua +++ b/list_beta_c_names.lua @@ -1,4 +1,3 @@ -local eolian = require("eolian") local getopt = require("getopt") local eou = require("utils.eolian_extras") @@ -34,7 +33,7 @@ if exit then return true end -local eos = eolian.new() +local eos = eou.new() if #pargs >= 1 then eos:directory_add(pargs[1]) diff --git a/list_used_beta_api.lua b/list_used_beta_api.lua index f742134..7c43588 100644 --- a/list_used_beta_api.lua +++ b/list_used_beta_api.lua @@ -1,4 +1,3 @@ -local eolian = require("eolian") local getopt = require("getopt") local eou = require("utils.eolian_extras") @@ -39,7 +38,7 @@ if exit then return true end -local eos = eolian.new() +local eos = eou.new() if #pargs > 1 then eos:directory_add(pargs[2]) diff --git a/utils/eolian_extras.lua b/utils/eolian_extras.lua index 130f7ee..35be202 100644 --- a/utils/eolian_extras.lua +++ b/utils/eolian_extras.lua @@ -2,6 +2,61 @@ local eolian = require("eolian") local M = {} +-- check for pre-state eolian api +local legacy = not eolian.new + +-- wrapper for legacy eolian api to mimic modern +local legacy_eos = { + directory_add = function(self, dir) + eolian.directory_scan(dir) + end, + + system_directory_add = function(self) + eolian.system_directory_scan() + end, + + all_eo_files_parse = function(self) + assert(eolian.all_eo_files_parse()) + assert(eolian.database_validate()) + end, + + all_eot_files_parse = function(self) + assert(eolian.all_eot_files_parse()) + assert(eolian.database_validate()) + end, + + classes_get = function(self) + return eolian.all_classes_get(nil) + end, + + aliases_get = function(self) + return eolian.typedecl_all_aliases_get(nil) + end, + + structs_get = function(self) + return eolian.typedecl_all_structs_get(nil) + end, + + enums_get = function(self) + return eolian.typedecl_all_enums_get(nil) + end, + + globals_get = function(self) + return eolian.variable_all_globals_get(nil) + end, + + constants_get = function(self) + return eolian.variable_all_constants_get(nil) + end +} + +M.new = function() + if legacy then + return legacy_eos + end + return eolian.new() +end + M.get_c_functions = function(eos) local ret = {} for cl in eos:classes_get() do @@ -32,11 +87,22 @@ M.get_c_events = function(eos) return ret end +local full_name_get = function(obj) + if legacy then + return obj:full_name_get() + end + return obj:name_get() +end + M.get_c_function_pointers = function(eos) + if legacy then + -- no function pointer support in pre-state api + return {} + end local ret = {} for tp in eos:aliases_get() do if tp:type_get() == eolian.typedecl_type.FUNCTION_POINTER then - ret[#ret + 1] = tp:name_get():gsub("%.", "_") + ret[#ret + 1] = full_name_get(tp):gsub("%.", "_") end end return ret @@ -46,7 +112,7 @@ M.get_c_aliases = function(eos) local ret = {} for tp in eos:aliases_get() do if tp:type_get() ~= eolian.typedecl_type.FUNCTION_POINTER then - ret[#ret + 1] = tp:name_get():gsub("%.", "_") + ret[#ret + 1] = full_name_get(tp):gsub("%.", "_") end end return ret @@ -55,7 +121,7 @@ end M.get_c_structs = function(eos) local ret = {} for tp in eos:structs_get() do - ret[#ret + 1] = tp:name_get():gsub("%.", "_") + ret[#ret + 1] = full_name_get(tp):gsub("%.", "_") end return ret end @@ -63,7 +129,7 @@ end M.get_c_enums = function(eos) local ret = {} for tp in eos:enums_get() do - ret[#ret + 1] = tp:name_get():gsub("%.", "_") + ret[#ret + 1] = full_name_get(tp):gsub("%.", "_") end return ret end @@ -71,7 +137,7 @@ end M.get_c_globals = function(eos) local ret = {} for v in eos:globals_get() do - ret[#ret + 1] = v:name_get():gsub("%.", "_"):upper() + ret[#ret + 1] = full_name_get(v):gsub("%.", "_"):upper() end return ret end @@ -79,7 +145,7 @@ end M.get_c_constants = function(eos) local ret = {} for v in eos:constants_get() do - ret[#ret + 1] = v:name_get():gsub("%.", "_"):upper() + ret[#ret + 1] = full_name_get(v):gsub("%.", "_"):upper() end return ret end