From b354b3e69daefe1ac585a0170fa3abc6f4acbf04 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 25 Jul 2014 16:54:32 +0100 Subject: [PATCH] elua: update eolian bindings --- src/bindings/luajit/eolian.lua | 186 +++++++++++++++++++++++++---------------- 1 file changed, 113 insertions(+), 73 deletions(-) diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index adf6e3a..618bf10 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -5,7 +5,6 @@ local ffi = require("ffi") ffi.cdef [[ typedef unsigned char Eina_Bool; - typedef struct _Eina_List Eina_List; typedef struct _Eina_Iterator Eina_Iterator; typedef struct _Eolian_Class Eolian_Class; @@ -55,7 +54,8 @@ ffi.cdef [[ EOLIAN_TYPE_REGULAR_STRUCT, EOLIAN_TYPE_POINTER, EOLIAN_TYPE_FUNCTION, - EOLIAN_TYPE_STRUCT + EOLIAN_TYPE_STRUCT, + EOLIAN_TYPE_ALIAS } Eolian_Type_Type; Eina_Bool eolian_eo_file_parse(const char *filename); @@ -70,31 +70,32 @@ ffi.cdef [[ Eina_Bool eolian_show_typedef(const char *alias); Eina_Bool eolian_show_struct(const char *name); void eolian_show_all(); - const Eolian_Class *eolian_class_find_by_name(const char *class_name); - const Eolian_Class *eolian_class_find_by_file(const char *file_name); + const Eolian_Class *eolian_class_get_by_name(const char *class_name); + const Eolian_Class *eolian_class_get_by_file(const char *file_name); const char *eolian_class_file_get(const Eolian_Class *klass); const char *eolian_class_full_name_get(const Eolian_Class *klass); const char *eolian_class_name_get(const Eolian_Class *klass); - const Eina_List *eolian_class_namespaces_list_get(const Eolian_Class *klass); + Eina_Iterator *eolian_class_namespaces_get(const Eolian_Class *klass); Eolian_Class_Type eolian_class_type_get(const Eolian_Class *klass); - const Eina_List *eolian_all_classes_list_get(void); + Eina_Iterator *eolian_all_classes_get(void); const char *eolian_class_description_get(const Eolian_Class *klass); const char *eolian_class_legacy_prefix_get(const Eolian_Class *klass); const char *eolian_class_eo_prefix_get(const Eolian_Class *klass); const char *eolian_class_data_type_get(const Eolian_Class *klass); - const Eina_List *eolian_class_inherits_list_get(const Eolian_Class *klass); - const Eina_List *eolian_class_functions_list_get(const Eolian_Class *klass, Eolian_Function_Type func_type); + Eina_Iterator *eolian_class_inherits_get(const Eolian_Class *klass); + Eina_Iterator *eolian_class_functions_get(const Eolian_Class *klass, Eolian_Function_Type func_type); Eolian_Function_Type eolian_function_type_get(const Eolian_Function *function_id); Eolian_Function_Scope eolian_function_scope_get(const Eolian_Function *function_id); const char *eolian_function_name_get(const Eolian_Function *function_id); const char *eolian_function_full_c_name_get(const Eolian_Function *function_id, const char *prefix); - const Eolian_Function *eolian_class_function_find_by_name(const Eolian_Class *klass, const char *func_name, Eolian_Function_Type f_type); + const Eolian_Function *eolian_class_function_get_by_name(const Eolian_Class *klass, const char *func_name, Eolian_Function_Type f_type); const char *eolian_function_data_get(const Eolian_Function *function_id, const char *key); Eina_Bool eolian_function_is_virtual_pure(const Eolian_Function *function_id, Eolian_Function_Type f_type); - const Eolian_Function_Parameter *eolian_function_parameter_get(const Eolian_Function *function_id, const char *param_name); - const Eina_List *eolian_property_keys_list_get(const Eolian_Function *foo_id); - const Eina_List *eolian_property_values_list_get(const Eolian_Function *foo_id); - const Eina_List *eolian_parameters_list_get(const Eolian_Function *function_id); + Eina_Bool eolian_function_is_class(const Eolian_Function *function_id); + const Eolian_Function_Parameter *eolian_function_parameter_get_by_name(const Eolian_Function *function_id, const char *param_name); + Eina_Iterator *eolian_property_keys_get(const Eolian_Function *foo_id); + Eina_Iterator *eolian_property_values_get(const Eolian_Function *foo_id); + Eina_Iterator *eolian_function_parameters_get(const Eolian_Function *function_id); void eolian_parameter_information_get(const Eolian_Function_Parameter *param_desc, Eolian_Parameter_Dir *param_dir, const Eolian_Type **type, const char **name, const char **description); const Eolian_Type *eolian_parameter_type_get(const Eolian_Function_Parameter *param); const char *eolian_parameter_name_get(const Eolian_Function_Parameter *param); @@ -105,22 +106,26 @@ ffi.cdef [[ const char *eolian_function_return_comment_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype); Eina_Bool eolian_function_return_is_warn_unused(const Eolian_Function *foo_id, Eolian_Function_Type ftype); Eina_Bool eolian_function_object_is_const(const Eolian_Function *function_id); + EAPI Eina_Bool eolian_type_is_extern(const Eolian_Type *tp); const char *eolian_implement_full_name_get(const Eolian_Implement *impl); Eina_Bool eolian_implement_information_get(const Eolian_Implement *impl, const Eolian_Class *klass, const Eolian_Function *function, Eolian_Function_Type *type); - const Eina_List *eolian_class_implements_list_get(const Eolian_Class *klass); - const Eina_List *eolian_class_events_list_get(const Eolian_Class *klass); + Eina_Iterator *eolian_class_implements_get(const Eolian_Class *klass); + Eina_Iterator *eolian_class_events_get(const Eolian_Class *klass); Eina_Bool eolian_class_event_information_get(const Eolian_Event *event, const char **event_name, const Eolian_Type **event_type, const char **event_desc); Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass); Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass); - const Eolian_Type *eolian_type_find_by_alias(const char *alias); - const Eolian_Type *eolian_type_struct_find_by_name(const char *name); + const Eolian_Type *eolian_type_alias_get_by_name(const char *name); + const Eolian_Type *eolian_type_struct_get_by_name(const char *name); + Eina_Iterator *eolian_type_aliases_get_by_file(const char *fname); + Eina_Iterator *eolian_type_structs_get_by_file(const char *fname); Eolian_Type_Type eolian_type_type_get(const Eolian_Type *tp); - Eina_Iterator *eolian_type_arguments_list_get(const Eolian_Type *tp); - Eina_Iterator *eolian_type_subtypes_list_get(const Eolian_Type *tp); - Eina_Iterator *eolian_type_struct_field_names_list_get(const Eolian_Type *tp); + Eina_Iterator *eolian_type_arguments_get(const Eolian_Type *tp); + Eina_Iterator *eolian_type_subtypes_get(const Eolian_Type *tp); + Eina_Iterator *eolian_type_struct_field_names_get(const Eolian_Type *tp); const Eolian_Type *eolian_type_struct_field_get(const Eolian_Type *tp, const char *field); const char *eolian_type_struct_field_description_get(const Eolian_Type *tp, const char *field); - const char *eolian_type_struct_description_get(const Eolian_Type *tp); + const char *eolian_type_description_get(const Eolian_Type *tp); + const char *eolian_type_file_get(const Eolian_Type *tp); const Eolian_Type *eolian_type_return_type_get(const Eolian_Type *tp); const Eolian_Type *eolian_type_base_type_get(const Eolian_Type *tp); Eina_Bool eolian_type_is_own(const Eolian_Type *tp); @@ -128,15 +133,15 @@ ffi.cdef [[ const char *eolian_type_c_type_named_get(const Eolian_Type *tp, const char *name); const char *eolian_type_c_type_get(const Eolian_Type *tp); const char *eolian_type_name_get(const Eolian_Type *tp); + const cahr *eolian_type_full_name_get(const Eolian_Type *tp); + Eina_Iterator *eolian_type_namespaces_get(const Eolian_Type *tp); ]] local cutil = require("cutil") local util = require("util") -local list = require("eina.list") local iterator = require("eina.iterator") -local Ptr_List = list.Ptr_List local Ptr_Iterator = iterator.Ptr_Iterator local M = {} @@ -202,7 +207,8 @@ M.type_type = { REGULAR_STRUCT = 3, POINTER = 4, FUNCTION = 5, - STRUCT = 6 + STRUCT = 6, + ALIAS = 7, } M.Type = ffi.metatype("Eolian_Type", { @@ -211,19 +217,19 @@ M.Type = ffi.metatype("Eolian_Type", { return eolian.eolian_type_type_get(self) end, - arguments_list_get = function(self) + arguments_get = function(self) return Ptr_Iterator("const Eolian_Type*", - eolian.eolian_type_arguments_list_get(self)) + eolian.eolian_type_arguments_get(self)) end, - subtypes_list_get = function(self) + subtypes_get = function(self) return Ptr_Iterator("const Eolian_Type*", - eolian.eolian_type_subtypes_list_get(self)) + eolian.eolian_type_subtypes_get(self)) end, - struct_field_names_list_get = function(self) + struct_field_names_get = function(self) return iterator.String_Iterator( - eolian.eolian_type_struct_field_names_list_get(self)) + eolian.eolian_type_struct_field_names_get(self)) end, struct_field_get = function(self, name) @@ -238,8 +244,14 @@ M.Type = ffi.metatype("Eolian_Type", { return ffi.string(v) end, - struct_description_get = function(self, name) - local v = eolian.eolian_type_struct_description_get(self) + description_get = function(self, name) + local v = eolian.eolian_type_description_get(self) + if v == nil then return nil end + return ffi.string(v) + end, + + file_get = function(self, name) + local v = eolian.eolian_type_file_get(self) if v == nil then return nil end return ffi.string(v) end, @@ -264,6 +276,10 @@ M.Type = ffi.metatype("Eolian_Type", { return eolian.eolian_type_is_const(self) ~= 0 end, + is_extern = function(self) + return eolian.eolian_type_is_extern(self) ~= 0 + end, + c_type_named_get = function(self, name) local v = eolian.eolian_type_c_type_named_get(self, name) if v == nil then return v end @@ -280,6 +296,17 @@ M.Type = ffi.metatype("Eolian_Type", { local v = eolian.eolian_type_name_get(self) if v == nil then return v end return ffi.string(v) + end, + + full_name_get = function(self) + local v = eolian.eolian_type_full_name_get(self) + if v == nil then return v end + return ffi.string(v) + end, + + namespaces_get = function(self) + return iterator.String_Iterator( + eolian.eolian_type_namespaces_get(self)) end } }) @@ -334,25 +361,29 @@ M.Function = ffi.metatype("Eolian_Function", { return eolian.eolian_function_is_virtual_pure(self, ftype) ~= 0 end, - parameter_get = function(self, pname) - local v = eolian.eolian_function_parameter_get(self, pname) + is_class = function(self) + return eolian.eolian_function_is_class(self) ~= 0 + end, + + parameter_get_by_name = function(self, pname) + local v = eolian.eolian_function_parameter_get_by_name(self, pname) if v == nil then return nil end return v end, - property_keys_list_get = function(self) - return Ptr_List("const Eolian_Function_Parameter*", - eolian.eolian_property_keys_list_get(self)):to_array() + property_keys_get = function(self) + return Ptr_Iterator("const Eolian_Function_Parameter*", + eolian.eolian_property_keys_get(self)) end, - property_values_list_get = function(self) - return Ptr_List("const Eolian_Function_Parameter*", - eolian.eolian_property_values_list_get(self)):to_array() + property_values_get = function(self) + return Ptr_Iterator("const Eolian_Function_Parameter*", + eolian.eolian_property_values_get(self)) end, - parameters_list_get = function(self) - return Ptr_List("const Eolian_Function_Parameter*", - eolian.eolian_parameters_list_get(self)):to_array() + parameters_get = function(self) + return Ptr_Iterator("const Eolian_Function_Parameter*", + eolian.eolian_function_parameters_get(self)) end, return_type_get = function(self, ftype) @@ -459,21 +490,21 @@ ffi.metatype("Eolian_Event", { } }) -M.class_find_by_name = function(cname) - local v = eolian.eolian_class_find_by_name(cname) +M.class_get_by_name = function(cname) + local v = eolian.eolian_class_get_by_name(cname) if v == nil then return nil end return v end -M.class_find_by_file = function(fname) - local v = eolian.eolian_class_find_by_file(fname) +M.class_get_by_file = function(fname) + local v = eolian.eolian_class_get_by_file(fname) if v == nil then return nil end return v end -M.all_classes_list_get = function() - return Ptr_List("const Eolian_Class*", - eolian.eolain_all_classes_list_get()):to_array() +M.all_classes_get = function() + return Ptr_Iterator("const Eolian_Class*", + eolian.eolain_all_classes_get()) end M.class_type = { @@ -504,9 +535,9 @@ M.Class = ffi.metatype("Eolian_Class", { return ffi.string(v) end, - namespaces_list_get = function(self) - return list.String_List(eolian.eolian_class_namespaces_list_get( - self)):to_array() + namespaces_get = function(self) + return iterator.String_Iterator( + eolian.eolian_class_namespaces_get(self)) end, type_get = function(self) @@ -528,7 +559,7 @@ M.Class = ffi.metatype("Eolian_Class", { eo_prefix_get = function(self) local v = eolian.eolian_class_eo_prefix_get(self) if v == nil then - local buf = self:namespaces_list_get() + local buf = self:namespaces_get() buf[#buf + 1] = self:name_get() return table.concat(buf, "_"):lower() end @@ -541,32 +572,31 @@ M.Class = ffi.metatype("Eolian_Class", { return ffi.string(v) end, - inherits_list_get = function(self) - return list.String_List(eolian.eolian_class_inherits_list_get( - self)):to_array() + inherits_get = function(self) + return iterator.String_Iterator( + eolian.eolian_class_inherits_get(self)) end, - functions_list_get = function(self, func_type) - return Ptr_List("const Eolian_Function*", - eolian.eolian_class_functions_list_get(self, func_type)) - :to_array() + functions_get = function(self, func_type) + return Ptr_Iterator("const Eolian_Function*", + eolian.eolian_class_functions_get(self, func_type)) end, - function_find_by_name = function(self, fname, ftype) - local v = eolian.eolian_class_function_find_by_name(self, fname, + function_get_by_name = function(self, fname, ftype) + local v = eolian.eolian_class_function_get_by_name(self, fname, ftype) if v == nil then return nil end return v end, - implements_list_get = function(self) - return Ptr_List("const Eolian_Implement*", - eolian.eolian_class_implements_list_get(self)):to_array() + implements_get = function(self) + return Ptr_Iterator("const Eolian_Implement*", + eolian.eolian_class_implements_get(self)) end, - events_list_get = function(self) - return Ptr_List("const Eolian_Event*", - eolian.eolian_class_events_list_get(self)):to_array() + events_get = function(self) + return Ptr_Iterator("const Eolian_Event*", + eolian.eolian_class_events_get(self)) end, ctor_enable_get = function(self) @@ -579,16 +609,26 @@ M.Class = ffi.metatype("Eolian_Class", { } }) -M.type_find_by_alias = function(alias) - local v = eolian.eolian_type_find_by_alias(alias) +M.type_alias_get_by_name = function(name) + local v = eolian.eolian_type_alias_get_by_name(name) if v == nil then return nil end return v end -M.type_struct_find_by_name = function(name) - local v = eolian.eolian_type_struct_find_by_name(name) +M.type_struct_get_by_name = function(name) + local v = eolian.eolian_type_struct_get_by_name(name) if v == nil then return nil end return v end +M.type_aliases_get_by_file = function(fname) + return Ptr_Iterator("const Eolian_Type*", + eolian.eolian_type_aliases_get_by_file(self)) +end + +M.type_structs_get_by_file = function(fname) + return Ptr_Iterator("const Eolian_Type*", + eolian.eolian_type_structs_get_by_file(self)) +end + return M -- 2.7.4