}
M.List_Base = List_Base
-M.gen_list_type = function(tp)
- return List_Base:clone {
- data_get = function(self, ptr)
- ptr = List_Base.data_get(self, ptr)
- return ffi.cast(tp, ptr)
- end
- }
-end
+M.Ptr_List = List_Base:clone {
+ __ctor = function(self, selfmt, ptrtype, list, freefunc)
+ List_Base.__ctor(self, selfmt, list, freefunc)
+ selfmt.ptrtype = ptrtype
+ end,
+
+ data_get = function(self, ptr)
+ ptr = List_Base.data_get(self, ptr)
+ return ffi.cast(dgetmt(self).ptrtype, ptr)
+ end
+}
M.String_List = List_Base:clone {
data_get = function(self, ptr)
local list = require("eina.list")
+local Ptr_List = list.Ptr_List
+
local M = {}
local eolian
PROTECTED = 1
}
-local Eolian_Parameters_List = list.gen_list_type("Eolian_Function_Parameter*")
-
M.Function = ffi.metatype("Eolian_Function", {
__index = {
type_get = function(self)
end,
property_keys_list_get = function(self)
- return Eolian_Parameters_List(
+ return Ptr_List("Eolian_Function_Parameter*",
eolian.eolian_property_keys_list_get(self)):to_array()
end,
property_values_list_get = function(self)
- return Eolian_Parameters_List(
+ return Ptr_List("Eolian_Function_Parameter*",
eolian.eolian_property_values_list_get(self)):to_array()
end,
parameters_list_get = function(self)
- return Eolian_Parameters_List(
+ return Ptr_List("Eolian_Function_Parameter*",
eolian.eolian_parameters_list_get(self)):to_array()
end,
INTERFACE = 4
}
-local Eolian_Functions_List = list.gen_list_type("Eolian_Function*")
-local Eolian_Implements_List = list.gen_list_type("Eolian_Implement*")
-local Eolian_Events_List = list.gen_list_type("Eolian_Event*")
-
M.Class = ffi.metatype("Eolian_Class", {
__index = {
file_get = function(self)
end,
functions_list_get = function(self, func_type)
- return Eolian_Functions_List(
+ return Ptr_List("Eolian_Function*",
eolian.eolian_class_functions_list_get(self, func_type))
:to_array()
end,
end,
implements_list_get = function(self)
- return Eolian_Implements_List(
+ return Ptr_List("Eolian_Implement*",
eolian.eolian_class_implements_list_get(self)):to_array()
end,
events_list_get = function(self)
- return Eolian_Events_List(
+ return Ptr_List("Eolian_Event*",
eolian.eolian_class_events_list_get(self)):to_array()
end,