summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-01-31 16:13:50 +0900
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-01-31 16:13:50 +0900
commite071c66c95426be409cb2df4b1b3f1725bca1611 (patch)
tree3f81ea5bf925d2e699b5425c3455ec6b8c9ddc01
parentd7e70ca96a1e69ff78e72a8f2b79c0ebf68393aa (diff)
Changes to support dotnet core
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_definition.hh60
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_registration.hh4
-rw-r--r--src/bin/eolian_mono/eolian/mono/klass.hh7
-rw-r--r--src/bin/eolian_mono/eolian/mono/marshall_annotation.hh16
-rw-r--r--src/bin/eolian_mono/eolian/mono/marshall_type_impl.hh14
-rw-r--r--src/bin/eolian_mono/eolian/mono/name_helpers.hh18
-rw-r--r--src/bin/eolian_mono/eolian/mono/parameter.hh12
-rw-r--r--src/bin/eolian_mono/eolian/mono/part_definition.hh2
-rw-r--r--src/bin/eolian_mono/eolian/mono/type_impl.hh2
-rw-r--r--src/bindings/cxx/eina_cxx/eina_variant.hh16
-rw-r--r--src/bindings/mono/efl_mono/efl_libs.cs.in17
-rw-r--r--src/bindings/mono/eo_mono/FunctionWrapper.cs87
-rw-r--r--src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs21
-rw-r--r--src/bindings/mono/eo_mono/FunctionWrapper_Windows.cs15
-rw-r--r--src/bindings/mono/eo_mono/NativeModule.cs33
-rw-r--r--src/bindings/mono/eo_mono/NativeModule_Unix.cs43
-rw-r--r--src/bindings/mono/eo_mono/NativeModule_Windows.cs15
-rw-r--r--src/bindings/mono/eo_mono/iwrapper.cs257
-rw-r--r--src/bindings/mono/eo_mono/workaround.cs2
-rw-r--r--src/lib/eolian_cxx/grammar/klass_def.hpp67
20 files changed, 514 insertions, 194 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/function_definition.hh b/src/bin/eolian_mono/eolian/mono/function_definition.hh
index 5a78bc7..915b12e 100644
--- a/src/bin/eolian_mono/eolian/mono/function_definition.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_definition.hh
@@ -22,6 +22,8 @@
22#include "generation_contexts.hh" 22#include "generation_contexts.hh"
23#include "blacklist.hh" 23#include "blacklist.hh"
24 24
25#include <iostream>
26
25namespace eolian_mono { 27namespace eolian_mono {
26 28
27struct native_function_definition_generator 29struct native_function_definition_generator
@@ -32,7 +34,8 @@ struct native_function_definition_generator
32 bool generate(OutputIterator sink, attributes::function_def const& f, Context const& context) const 34 bool generate(OutputIterator sink, attributes::function_def const& f, Context const& context) const
33 { 35 {
34 EINA_CXX_DOM_LOG_DBG(eolian_mono::domain) << "native_function_definition_generator: " << f.c_name << std::endl; 36 EINA_CXX_DOM_LOG_DBG(eolian_mono::domain) << "native_function_definition_generator: " << f.c_name << std::endl;
35 if(blacklist::is_function_blacklisted(f, context) || f.is_static) // Only Concrete classes implement static methods. 37 std::cout << "native_function_definition_generator: " << f.c_name << " F: return type " << f.return_type << std::endl;
38 if(blacklist::is_function_blacklisted(f, context)/* || f.is_static*/) // Only Concrete classes implement static methods.
36 return true; 39 return true;
37 else 40 else
38 { 41 {
@@ -51,14 +54,14 @@ struct native_function_definition_generator
51 << ");\n") 54 << ");\n")
52 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context)) 55 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context))
53 return false; 56 return false;
54
55 if(!as_generator 57 if(!as_generator
56 (scope_tab << "[System.Runtime.InteropServices.DllImport(" << context_find_tag<library_context>(context).actual_library_name(f.filename) << ")] " 58 ("\n\n" << scope_tab
57 << eolian_mono::marshall_native_annotation(true) 59 << eolian_mono::marshall_native_annotation(true)
58 << " private static extern " 60 << " public delegate "
59 << eolian_mono::marshall_type(true) 61 << eolian_mono::marshall_type(true)
60 << " " << string 62 << " "
61 << "(System.IntPtr obj" 63 << string
64 << "_api_delegate(System.IntPtr obj"
62 << *grammar::attribute_reorder<-1, -1> 65 << *grammar::attribute_reorder<-1, -1>
63 ( 66 (
64 (", " << marshall_native_annotation << " " << marshall_parameter) 67 (", " << marshall_native_annotation << " " << marshall_parameter)
@@ -67,6 +70,13 @@ struct native_function_definition_generator
67 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context)) 70 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context))
68 return false; 71 return false;
69 72
73 if(!as_generator
74 (scope_tab
75 << " public static Efl.Eo.FunctionWrapper<" << string << "_api_delegate> " << string << "_ptr = new Efl.Eo.FunctionWrapper<"
76 << string << "_api_delegate>(_Module, \"" << string << "\");\n")
77 .generate(sink, std::make_tuple(f.c_name, f.c_name, f.c_name, f.c_name), context))
78 return false;
79
70 std::string return_type; 80 std::string return_type;
71 if(!as_generator(eolian_mono::type(true)).generate(std::back_inserter(return_type), f.return_type, context)) 81 if(!as_generator(eolian_mono::type(true)).generate(std::back_inserter(return_type), f.return_type, context))
72 return false; 82 return false;
@@ -93,7 +103,8 @@ struct native_function_definition_generator
93 << scope_tab << scope_tab << "if(wrapper != null) {\n" 103 << scope_tab << scope_tab << "if(wrapper != null) {\n"
94 << scope_tab << scope_tab << scope_tab << eolian_mono::native_function_definition_preamble() 104 << scope_tab << scope_tab << scope_tab << eolian_mono::native_function_definition_preamble()
95 << scope_tab << scope_tab << scope_tab << "try {\n" 105 << scope_tab << scope_tab << scope_tab << "try {\n"
96 << scope_tab << scope_tab << scope_tab << scope_tab << (return_type != " void" ? "_ret_var = " : "") << "((" << klass_cast_name << ")wrapper)." << string 106 << scope_tab << scope_tab << scope_tab << scope_tab << (return_type != " void" ? "_ret_var = " : "")
107 << (f.is_static ? "" : "((") << klass_cast_name << (f.is_static ? "." : ")wrapper).") << string
97 << "(" << (native_argument_invocation % ", ") << ");\n" 108 << "(" << (native_argument_invocation % ", ") << ");\n"
98 << scope_tab << scope_tab << scope_tab << "} catch (Exception e) {\n" 109 << scope_tab << scope_tab << scope_tab << "} catch (Exception e) {\n"
99 << scope_tab << scope_tab << scope_tab << scope_tab << "Eina.Log.Warning($\"Callback error: {e.ToString()}\");\n" 110 << scope_tab << scope_tab << scope_tab << scope_tab << "Eina.Log.Warning($\"Callback error: {e.ToString()}\");\n"
@@ -102,7 +113,7 @@ struct native_function_definition_generator
102 << eolian_mono::native_function_definition_epilogue(*klass) 113 << eolian_mono::native_function_definition_epilogue(*klass)
103 << scope_tab << scope_tab << "} else {\n" 114 << scope_tab << scope_tab << "} else {\n"
104 << scope_tab << scope_tab << scope_tab << (return_type != " void" ? "return " : "") << string 115 << scope_tab << scope_tab << scope_tab << (return_type != " void" ? "return " : "") << string
105 << "(Efl.Eo.Globals.efl_super(obj, " << "Efl.Eo.Globals.efl_class_get(obj))" << *(", " << argument) << ");\n" 116 << "_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, " << "Efl.Eo.Globals.efl_class_get(obj))" << *(", " << argument) << ");\n"
106 << scope_tab << scope_tab << "}\n" 117 << scope_tab << scope_tab << "}\n"
107 << scope_tab << "}\n" 118 << scope_tab << "}\n"
108 ) 119 )
@@ -141,20 +152,20 @@ struct function_definition_generator
141 if(blacklist::is_function_blacklisted(f, context)) 152 if(blacklist::is_function_blacklisted(f, context))
142 return true; 153 return true;
143 154
144 if(!as_generator 155 // if(!as_generator
145 ("\n\n" << scope_tab << "[System.Runtime.InteropServices.DllImport(" << context_find_tag<library_context>(context).actual_library_name(f.filename) << ")]\n" 156 // ("\n\n" << scope_tab << "[System.Runtime.InteropServices.DllImport(" << context_find_tag<library_context>(context).actual_library_name(f.filename) << ")]\n"
146 << scope_tab << eolian_mono::marshall_annotation(true) 157 // << scope_tab << eolian_mono::marshall_annotation(true)
147 << (do_super ? " protected " : " private ") << "static extern " 158 // << (do_super ? " protected " : " private ") << "static extern "
148 << eolian_mono::marshall_type(true) 159 // << eolian_mono::marshall_type(true)
149 << " " << string 160 // << " " << string
150 << "(System.IntPtr obj" 161 // << "(System.IntPtr obj"
151 << *grammar::attribute_reorder<-1, -1> 162 // << *grammar::attribute_reorder<-1, -1>
152 ( 163 // (
153 (", " << marshall_annotation << " " << marshall_parameter) 164 // (", " << marshall_annotation << " " << marshall_parameter)
154 ) 165 // )
155 << ");\n") 166 // << ");\n")
156 .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context)) 167 // .generate(sink, std::make_tuple(f.return_type, f.return_type, f.c_name, f.parameters), context))
157 return false; 168 // return false;
158 169
159 std::string return_type; 170 std::string return_type;
160 if(!as_generator(eolian_mono::type(true)).generate(std::back_inserter(return_type), f.return_type, context)) 171 if(!as_generator(eolian_mono::type(true)).generate(std::back_inserter(return_type), f.return_type, context))
@@ -175,8 +186,9 @@ struct function_definition_generator
175 if(!as_generator 186 if(!as_generator
176 (scope_tab << ((do_super && !f.is_static) ? "virtual " : "") << "public " << (f.is_static ? "static " : "") << return_type << " " << string << "(" << (parameter % ", ") 187 (scope_tab << ((do_super && !f.is_static) ? "virtual " : "") << "public " << (f.is_static ? "static " : "") << return_type << " " << string << "(" << (parameter % ", ")
177 << ") {\n " 188 << ") {\n "
178 << eolian_mono::function_definition_preamble() << string << "(" 189 << eolian_mono::function_definition_preamble()
179 << self 190 << klass_full_native_inherit_name(f.klass) << "." << string << "_ptr.Value.Delegate("
191 << self
180 << *(", " << argument_invocation ) << ");\n" 192 << *(", " << argument_invocation ) << ");\n"
181 << eolian_mono::function_definition_epilogue() 193 << eolian_mono::function_definition_epilogue()
182 << " }\n") 194 << " }\n")
diff --git a/src/bin/eolian_mono/eolian/mono/function_registration.hh b/src/bin/eolian_mono/eolian/mono/function_registration.hh
index 90cbbc4..13be44a 100644
--- a/src/bin/eolian_mono/eolian/mono/function_registration.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_registration.hh
@@ -47,9 +47,9 @@ struct function_registration_generator
47#ifdef _WIN32 47#ifdef _WIN32
48 << "api_func = Marshal.StringToHGlobalAnsi(\"" << string << "\")" 48 << "api_func = Marshal.StringToHGlobalAnsi(\"" << string << "\")"
49#else 49#else
50 << "api_func = Efl.Eo.Globals.dlsym(Efl.Eo.Globals.RTLD_DEFAULT, \"" << string << "\")" 50 << "api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(_Module.Module, \"" << string << "\")"
51#endif 51#endif
52 ", func = Marshal.GetFunctionPointerForDelegate(" << string << "_static_delegate)});\n" 52 << ", func = Marshal.GetFunctionPointerForDelegate(" << string << "_static_delegate)});\n"
53 ) 53 )
54 .generate(sink, std::make_tuple(f.c_name, f.c_name), context)) 54 .generate(sink, std::make_tuple(f.c_name, f.c_name), context))
55 return false; 55 return false;
diff --git a/src/bin/eolian_mono/eolian/mono/klass.hh b/src/bin/eolian_mono/eolian/mono/klass.hh
index 6a2c818..797fed4 100644
--- a/src/bin/eolian_mono/eolian/mono/klass.hh
+++ b/src/bin/eolian_mono/eolian/mono/klass.hh
@@ -364,9 +364,10 @@ struct klass
364 364
365 if(!as_generator 365 if(!as_generator
366 ( 366 (
367 "public class " << native_inherit_name << " " << (root ? ": Efl.Eo.NativeClass" : (": " + base_name)) <<"{\n" 367 "public class " << native_inherit_name << " " << (root ? " : Efl.Eo.NativeClass" : (": " + base_name)) <<"{\n"
368 // << scope_tab << (root ? "protected IntPtr EoKlass { get; set; }\n" : "\n") 368 << scope_tab << "public " << (root ? "" : "new ") << " static Efl.Eo.NativeModule _Module = new Efl.Eo.NativeModule("
369 << scope_tab << "public " << /*(root ? "" : "new ")*/ "override " << "System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)\n" 369 << context_find_tag<library_context>(context).actual_library_name(cls.filename) << ");\n"
370 << scope_tab << "public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)\n"
370 << scope_tab << "{\n" 371 << scope_tab << "{\n"
371 << scope_tab << scope_tab << "var descs = new System.Collections.Generic.List<Efl_Op_Description>();\n" 372 << scope_tab << scope_tab << "var descs = new System.Collections.Generic.List<Efl_Op_Description>();\n"
372 ) 373 )
diff --git a/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh b/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh
index 6ddb990..43c8060 100644
--- a/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh
+++ b/src/bin/eolian_mono/eolian/mono/marshall_annotation.hh
@@ -90,7 +90,7 @@ struct marshall_annotation_visitor_generate
90 {"string", true, [&] { 90 {"string", true, [&] {
91 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]"; 91 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]";
92 }}, 92 }},
93 {"string", false, [&] { 93 {"string", nullptr, [&] {
94 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringKeepOwnershipMarshaler))]"; 94 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringKeepOwnershipMarshaler))]";
95 }}, 95 }},
96 {"mstring", true, [&] { 96 {"mstring", true, [&] {
@@ -216,16 +216,17 @@ struct marshall_native_annotation_visitor_generate
216 {"string", true, [&] { 216 {"string", true, [&] {
217 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]"; 217 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringPassOwnershipMarshaler))]";
218 }}, 218 }},
219 {"string", false, [&] { return ""; }}, 219 {"string", false, [&] {
220 return ""; }},
220 {"stringshare", true, [&] { 221 {"stringshare", true, [&] {
221 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringsharePassOwnershipMarshaler))]"; 222 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StringsharePassOwnershipMarshaler))]";
222 }}, 223 }},
223 {"stringshare", false, [&] { return ""; }}, 224 {"stringshare", false, [&] { return ""; }},
224 {"strbuf", true, [&] { 225 {"strbuf", true, [&] {
225 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]"; 226 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufPassOwnershipMarshaler))]";
226 }}, 227 }},
227 {"strbuf", false, [&] { 228 {"strbuf", false, [&] {
228 return " [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]"; 229 return " [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))]";
229 }}, 230 }},
230 }; 231 };
231 232
@@ -234,11 +235,16 @@ struct marshall_native_annotation_visitor_generate
234 , [&] (match const& m) 235 , [&] (match const& m)
235 { 236 {
236 return (!m.name || *m.name == regular.base_type) 237 return (!m.name || *m.name == regular.base_type)
237 && (!m.has_own || *m.has_own == (bool)(regular.base_qualifier & qualifier_info::is_own)) 238 && (!m.has_own || *m.has_own == static_cast<bool>(regular.base_qualifier & qualifier_info::is_own))
238 ; 239 ;
239 } 240 }
240 , [&] (std::string const& string) 241 , [&] (std::string const& string)
241 { 242 {
243 if (is_return)
244 {
245 std::string comment = "// Passed through match table with type " + regular.base_type + " and string is size " + std::to_string(string.size()) + "\n";
246 std::copy(comment.begin(), comment.end(), sink);
247 }
242 std::copy(string.begin(), string.end(), sink); 248 std::copy(string.begin(), string.end(), sink);
243 return true; 249 return true;
244 })) 250 }))
diff --git a/src/bin/eolian_mono/eolian/mono/marshall_type_impl.hh b/src/bin/eolian_mono/eolian/mono/marshall_type_impl.hh
index e14369a..2ede209 100644
--- a/src/bin/eolian_mono/eolian/mono/marshall_type_impl.hh
+++ b/src/bin/eolian_mono/eolian/mono/marshall_type_impl.hh
@@ -55,8 +55,8 @@ struct marshall_type_visitor_generate
55 { 55 {
56 regular_type_def r = regular; 56 regular_type_def r = regular;
57 r.base_qualifier.qualifier ^= qualifier_info::is_ref; 57 r.base_qualifier.qualifier ^= qualifier_info::is_ref;
58 if (is_inherit_native && (is_return || is_out)) 58 // if (is_inherit_native && (is_return || is_out))
59 return replace_base_type(r, " System.IntPtr"); 59 // return replace_base_type(r, " System.IntPtr");
60 return replace_base_type(r, " System.String"); 60 return replace_base_type(r, " System.String");
61 }} 61 }}
62 , {"mstring", true, [&] 62 , {"mstring", true, [&]
@@ -71,8 +71,8 @@ struct marshall_type_visitor_generate
71 { 71 {
72 regular_type_def r = regular; 72 regular_type_def r = regular;
73 r.base_qualifier.qualifier ^= qualifier_info::is_ref; 73 r.base_qualifier.qualifier ^= qualifier_info::is_ref;
74 if (is_inherit_native && (is_return || is_out)) 74 // if (is_inherit_native && (is_return || is_out))
75 return replace_base_type(r, " System.IntPtr"); 75 // return replace_base_type(r, " System.IntPtr");
76 return replace_base_type(r, " System.String"); 76 return replace_base_type(r, " System.String");
77 }} 77 }}
78 , {"stringshare", true, [&] 78 , {"stringshare", true, [&]
@@ -85,9 +85,9 @@ struct marshall_type_visitor_generate
85 { 85 {
86 regular_type_def r = regular; 86 regular_type_def r = regular;
87 r.base_qualifier.qualifier ^= qualifier_info::is_ref; 87 r.base_qualifier.qualifier ^= qualifier_info::is_ref;
88 if (is_inherit_native && (is_return || is_out)) 88 // if (is_inherit_native && (is_return || is_out))
89 return replace_base_type(r, " System.IntPtr"); 89 // return replace_base_type(r, " System.IntPtr");
90 else 90 // else
91 return replace_base_type(r, " System.String"); 91 return replace_base_type(r, " System.String");
92 }} 92 }}
93 , {"strbuf", nullptr, [&] 93 , {"strbuf", nullptr, [&]
diff --git a/src/bin/eolian_mono/eolian/mono/name_helpers.hh b/src/bin/eolian_mono/eolian/mono/name_helpers.hh
index 8910447..c0b206a 100644
--- a/src/bin/eolian_mono/eolian/mono/name_helpers.hh
+++ b/src/bin/eolian_mono/eolian/mono/name_helpers.hh
@@ -358,13 +358,27 @@ inline std::string klass_inherit_name(T const& klass)
358template<typename T> 358template<typename T>
359inline std::string klass_native_inherit_name(T const& klass) 359inline std::string klass_native_inherit_name(T const& klass)
360{ 360{
361 return klass_concrete_name(klass) + "NativeInherit"; 361 switch(klass.type)
362 {
363 case attributes::class_type::abstract_:
364 case attributes::class_type::regular:
365 return klass_concrete_name(klass) + "NativeInherit";
366 default:
367 return klass_interface_name(klass) + "NativeInherit";
368 }
362} 369}
363 370
364template<typename T> 371template<typename T>
365inline std::string klass_full_native_inherit_name(T const& klass) 372inline std::string klass_full_native_inherit_name(T const& klass)
366{ 373{
367 return klass_full_concrete_name(klass) + "NativeInherit"; 374 switch(klass.type)
375 {
376 case attributes::class_type::abstract_:
377 case attributes::class_type::regular:
378 return klass_full_concrete_name(klass) + "NativeInherit";
379 default:
380 return klass_full_interface_name(klass) + "NativeInherit";
381 }
368} 382}
369 383
370template<typename T> 384template<typename T>
diff --git a/src/bin/eolian_mono/eolian/mono/parameter.hh b/src/bin/eolian_mono/eolian/mono/parameter.hh
index 416cacb..8938a31 100644
--- a/src/bin/eolian_mono/eolian/mono/parameter.hh
+++ b/src/bin/eolian_mono/eolian/mono/parameter.hh
@@ -1121,7 +1121,8 @@ struct native_convert_out_assign_generator
1121 return false; 1121 return false;
1122 } 1122 }
1123 return as_generator( 1123 return as_generator(
1124 string << "= Efl.Eo.Globals.cached_stringshare_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_stringshares, " << string << ");\n" 1124 //string << "= Efl.Eo.Globals.cached_stringshare_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_stringshares, " << string << ");\n"
1125 string << "= " << string << ";\n"
1125 ).generate(sink, std::make_tuple(escape_keyword(param.param_name), out_variable_name(param.param_name)), context); 1126 ).generate(sink, std::make_tuple(escape_keyword(param.param_name), out_variable_name(param.param_name)), context);
1126 } 1127 }
1127 else if (param_is_acceptable(param, "const char *", !WANT_OWN, WANT_OUT)) 1128 else if (param_is_acceptable(param, "const char *", !WANT_OWN, WANT_OUT))
@@ -1132,7 +1133,8 @@ struct native_convert_out_assign_generator
1132 return false; 1133 return false;
1133 } 1134 }
1134 return as_generator( 1135 return as_generator(
1135 string << "= Efl.Eo.Globals.cached_string_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_strings, " << string << ");\n" 1136 //string << "= Efl.Eo.Globals.cached_string_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_strings, " << string << ");\n"
1137 string << " = " << string << ";\n"
1136 ).generate(sink, std::make_tuple(escape_keyword(param.param_name), out_variable_name(param.param_name)), context); 1138 ).generate(sink, std::make_tuple(escape_keyword(param.param_name), out_variable_name(param.param_name)), context);
1137 } 1139 }
1138 else if (param_is_acceptable(param, "Eina_Binbuf *", WANT_OWN, WANT_OUT) 1140 else if (param_is_acceptable(param, "Eina_Binbuf *", WANT_OWN, WANT_OUT)
@@ -1270,7 +1272,8 @@ struct native_convert_return_generator
1270 return false; 1272 return false;
1271 } 1273 }
1272 return as_generator( 1274 return as_generator(
1273 "return Efl.Eo.Globals.cached_string_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_strings, _ret_var);\n" 1275 //"return Efl.Eo.Globals.cached_string_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_strings, _ret_var);\n"
1276 "return _ret_var;\n"
1274 ).generate(sink, attributes::unused, context); 1277 ).generate(sink, attributes::unused, context);
1275 } 1278 }
1276 else 1279 else
@@ -1288,7 +1291,8 @@ struct native_convert_return_generator
1288 return false; 1291 return false;
1289 } 1292 }
1290 return as_generator( 1293 return as_generator(
1291 "return Efl.Eo.Globals.cached_stringshare_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_stringshares, _ret_var);\n" 1294 //"return Efl.Eo.Globals.cached_stringshare_to_intptr(((" << name_helpers::klass_inherit_name(*klass) << ")wrapper).cached_stringshares, _ret_var);\n"
1295 "return _ret_var;\n"
1292 ).generate(sink, attributes::unused, context); 1296 ).generate(sink, attributes::unused, context);
1293 } 1297 }
1294 else 1298 else
diff --git a/src/bin/eolian_mono/eolian/mono/part_definition.hh b/src/bin/eolian_mono/eolian/mono/part_definition.hh
index bd12ee2..47951f4 100644
--- a/src/bin/eolian_mono/eolian/mono/part_definition.hh
+++ b/src/bin/eolian_mono/eolian/mono/part_definition.hh
@@ -24,7 +24,7 @@ struct part_definition_generator
24 << scope_tab << "{\n" 24 << scope_tab << "{\n"
25 << scope_tab << scope_tab << "get\n" 25 << scope_tab << scope_tab << "get\n"
26 << scope_tab << scope_tab << "{\n" 26 << scope_tab << scope_tab << "{\n"
27 << scope_tab << scope_tab << scope_tab << "Efl.Object obj = efl_part_get(NativeHandle, \"" << part.name << "\");\n" 27 << scope_tab << scope_tab << scope_tab << "Efl.Object obj = Efl.PartNativeInherit.efl_part_get_ptr.Value.Delegate(NativeHandle, \"" << part.name << "\");\n"
28 << scope_tab << scope_tab << scope_tab << "return " << part_klass_name << ".static_cast(obj);\n" 28 << scope_tab << scope_tab << scope_tab << "return " << part_klass_name << ".static_cast(obj);\n"
29 << scope_tab << scope_tab << "}\n" 29 << scope_tab << scope_tab << "}\n"
30 << scope_tab << "}\n" 30 << scope_tab << "}\n"
diff --git a/src/bin/eolian_mono/eolian/mono/type_impl.hh b/src/bin/eolian_mono/eolian/mono/type_impl.hh
index 3e4ae8d..d45f426 100644
--- a/src/bin/eolian_mono/eolian/mono/type_impl.hh
+++ b/src/bin/eolian_mono/eolian/mono/type_impl.hh
@@ -152,6 +152,8 @@ struct visitor_generate
152 }} // FIXME add proper support for any_value_ptr 152 }} // FIXME add proper support for any_value_ptr
153 }; 153 };
154 std::string full_type_name = name_helpers::type_full_eolian_name(regular); 154 std::string full_type_name = name_helpers::type_full_eolian_name(regular);
155 // std::cout << "full_type_name: " << full_type_name << std::endl;
156 // assert(full_type_name != " System.String");
155 if(eina::optional<bool> b = call_match 157 if(eina::optional<bool> b = call_match
156 (match_table 158 (match_table
157 , [&] (match const& m) 159 , [&] (match const& m)
diff --git a/src/bindings/cxx/eina_cxx/eina_variant.hh b/src/bindings/cxx/eina_cxx/eina_variant.hh
index 358688a..4885c80 100644
--- a/src/bindings/cxx/eina_cxx/eina_variant.hh
+++ b/src/bindings/cxx/eina_cxx/eina_variant.hh
@@ -6,6 +6,7 @@
6#include <utility> 6#include <utility>
7#include <type_traits> 7#include <type_traits>
8#include <tuple> 8#include <tuple>
9#include <iosfwd>
9 10
10#include <eina_aligned_union.hh> 11#include <eina_aligned_union.hh>
11 12
@@ -149,6 +150,17 @@ struct destroy_visitor
149 } 150 }
150}; 151};
151 152
153struct ostream_visitor
154{
155 std::ostream* s;
156 typedef std::ostream& result_type;
157 template <typename T>
158 std::ostream& operator()(T const& other) const
159 {
160 return *s << other;
161 }
162};
163
152template <typename T> 164template <typename T>
153struct get_visitor 165struct get_visitor
154{ 166{
@@ -295,6 +307,10 @@ private:
295 && (rhs.type == -1 307 && (rhs.type == -1
296 || rhs.visit(compare_equal_visitor{&lhs.buffer})); 308 || rhs.visit(compare_equal_visitor{&lhs.buffer}));
297 } 309 }
310 friend std::ostream& operator<<(std::ostream& s, variant<Args...> const& rhs)
311 {
312 return rhs.visit(ostream_visitor{&s});
313 }
298 314
299 int type; 315 int type;
300 /** 316 /**
diff --git a/src/bindings/mono/efl_mono/efl_libs.cs.in b/src/bindings/mono/efl_mono/efl_libs.cs.in
index 8674264..9fb3313 100644
--- a/src/bindings/mono/efl_mono/efl_libs.cs.in
+++ b/src/bindings/mono/efl_mono/efl_libs.cs.in
@@ -18,6 +18,23 @@ public class Libs {
18 public const string Eldbus = "@ELDBUS_DL_MONO@"; 18 public const string Eldbus = "@ELDBUS_DL_MONO@";
19 19
20 public const string CustomExports = "@CUSTOM_EXPORTS_MONO_DL_MONO@"; 20 public const string CustomExports = "@CUSTOM_EXPORTS_MONO_DL_MONO@";
21
22 public const string Libdl = "libdl.so";
23 public const string Kernel32 = "kernel32.dll";
24
25 public static Efl.Eo.NativeModule EflModule = new Efl.Eo.NativeModule(Efl);
26 public static Efl.Eo.NativeModule CoreModule = new Efl.Eo.NativeModule(Ecore);
27 public static Efl.Eo.NativeModule EinaModule = new Efl.Eo.NativeModule(Eina);
28 public static Efl.Eo.NativeModule EoModule = new Efl.Eo.NativeModule(Eo);
29 public static Efl.Eo.NativeModule EvasModule = new Efl.Eo.NativeModule(Evas);
30 public static Efl.Eo.NativeModule EvilModule = new Efl.Eo.NativeModule(Evil);
31 public static Efl.Eo.NativeModule EcoreEvasModule = new Efl.Eo.NativeModule(EcoreEvas);
32 public static Efl.Eo.NativeModule EdjeModule = new Efl.Eo.NativeModule(Edje);
33 public static Efl.Eo.NativeModule ElementaryModule = new Efl.Eo.NativeModule(Elementary);
34 public static Efl.Eo.NativeModule EldbusModule = new Efl.Eo.NativeModule(Eldbus);
35 public static Efl.Eo.NativeModule CustomExportsModule = new Efl.Eo.NativeModule(CustomExports);
36 public static Efl.Eo.NativeModule LibdlModule = new Efl.Eo.NativeModule(Libdl);
37 public static Efl.Eo.NativeModule Kernel32Module = new Efl.Eo.NativeModule(Kernel32);
21} 38}
22 39
23} 40}
diff --git a/src/bindings/mono/eo_mono/FunctionWrapper.cs b/src/bindings/mono/eo_mono/FunctionWrapper.cs
new file mode 100644
index 0000000..d42f1e3
--- /dev/null
+++ b/src/bindings/mono/eo_mono/FunctionWrapper.cs
@@ -0,0 +1,87 @@
1using System;
2using System.Runtime.InteropServices;
3
4namespace Efl { namespace Eo {
5
6public partial class FunctionInterop
7{
8 public static IntPtr LoadFunctionPointer(string moduleName, string functionName)
9 {
10 NativeModule module = new NativeModule(moduleName);
11 Console.WriteLine("searching {0} in library {1}", module.Module, functionName);
12 var s = FunctionInterop.dlsym(module.Module, functionName);
13 Console.WriteLine("searching {0} in library {1}, result {2}", module.Module, functionName, s);
14 return s;
15 }
16 public static IntPtr LoadFunctionPointer(string functionName)
17 {
18 Console.WriteLine("searching {0} in library {1}", null, functionName);
19 var s = FunctionInterop.dlsym(IntPtr.Zero, functionName);
20 Console.WriteLine("searching {0} in library {1}, result {2}", null, functionName, s);
21 return s;
22 }
23}
24
25public class FunctionWrapper<T>
26{
27 private Lazy<FunctionLoadResult<T>> loadResult;
28 private NativeModule module; // so it doesn't get unloaded
29
30 private static FunctionLoadResult<T> LazyInitialization(NativeModule module, string functionName)
31 {
32 if (module.Module == IntPtr.Zero)
33 return new FunctionLoadResult<T>(FunctionLoadResultKind.LibraryNotFound);
34 else
35 {
36 IntPtr funcptr = FunctionInterop.LoadFunctionPointer(module.Module, functionName);
37 if (funcptr == IntPtr.Zero)
38 return new FunctionLoadResult<T>(FunctionLoadResultKind.FunctionNotFound);
39 else
40 return new FunctionLoadResult<T>(Marshal.GetDelegateForFunctionPointer<T>(funcptr));
41 }
42 }
43
44 public FunctionWrapper(string moduleName, string functionName)
45 : this (new NativeModule(moduleName), functionName)
46 {
47 }
48
49 public FunctionWrapper(NativeModule module, string functionName)
50 {
51 this.module = module;
52 loadResult = new Lazy<FunctionLoadResult<T>>
53 (() =>
54 {
55 return LazyInitialization(module, functionName);
56 });
57 }
58
59 public FunctionLoadResult<T> Value
60 {
61 get
62 {
63 return loadResult.Value;
64 }
65 }
66}
67
68public enum FunctionLoadResultKind { Success, LibraryNotFound, FunctionNotFound }
69
70public class FunctionLoadResult<T>
71{
72 public FunctionLoadResultKind Kind;
73 public T Delegate;
74
75 public FunctionLoadResult(FunctionLoadResultKind kind)
76 {
77 this.Kind = kind;
78 }
79 public FunctionLoadResult(T Delegate)
80 {
81 this.Delegate = Delegate;
82 this.Kind = FunctionLoadResultKind.Success;
83 }
84}
85
86
87} }
diff --git a/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs b/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs
new file mode 100644
index 0000000..b140c0f
--- /dev/null
+++ b/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs
@@ -0,0 +1,21 @@
1using System;
2using System.Runtime.InteropServices;
3
4namespace Efl { namespace Eo {
5
6public partial class FunctionInterop
7{
8 [DllImport(efl.Libs.Libdl)]
9 public static extern IntPtr dlsym(IntPtr handle, string symbol);
10
11 public static IntPtr LoadFunctionPointer(IntPtr nativeLibraryHandle, string functionName)
12 {
13 Console.WriteLine("searching {0} in library {1}", nativeLibraryHandle, functionName);
14 var s = FunctionInterop.dlsym(nativeLibraryHandle, functionName);
15 Console.WriteLine("searching {0} in library {1}, result {2}", nativeLibraryHandle, functionName, s);
16 return s;
17 }
18}
19
20
21} }
diff --git a/src/bindings/mono/eo_mono/FunctionWrapper_Windows.cs b/src/bindings/mono/eo_mono/FunctionWrapper_Windows.cs
new file mode 100644
index 0000000..3cdd80c
--- /dev/null
+++ b/src/bindings/mono/eo_mono/FunctionWrapper_Windows.cs
@@ -0,0 +1,15 @@
1using System;
2using System.Runtime.InteropServices;
3
4namespace Efl { namespace Eo {
5
6public partial class FunctionInterop
7{
8 [DllImport(efl.Libs.Libdl)]
9 public static extern IntPtr GetProcAddress(IntPtr handle, string symbol);
10
11 private static IntPtr LoadFunctionPointer(IntPtr nativeLibraryHandle, string functionName)
12 => FunctionInterop.GetProcAddress(nativeLibraryHandle, functionName);
13}
14
15} }
diff --git a/src/bindings/mono/eo_mono/NativeModule.cs b/src/bindings/mono/eo_mono/NativeModule.cs
new file mode 100644
index 0000000..324a933
--- /dev/null
+++ b/src/bindings/mono/eo_mono/NativeModule.cs
@@ -0,0 +1,33 @@
1using System;
2
3namespace Efl { namespace Eo {
4
5public partial class NativeModule : IDisposable
6{
7 private Lazy<IntPtr> module;
8
9 public NativeModule(string libName)
10 {
11 module = new Lazy<IntPtr>
12 (() =>
13 {
14 return LoadLibrary(libName);
15 });
16 }
17
18 public IntPtr Module
19 {
20 get
21 {
22 return module.Value;
23 }
24 }
25
26 public void Dispose()
27 {
28 UnloadLibrary(module.Value);
29 module = null;
30 }
31}
32
33} }
diff --git a/src/bindings/mono/eo_mono/NativeModule_Unix.cs b/src/bindings/mono/eo_mono/NativeModule_Unix.cs
new file mode 100644
index 0000000..9aba31b
--- /dev/null
+++ b/src/bindings/mono/eo_mono/NativeModule_Unix.cs
@@ -0,0 +1,43 @@
1using System;
2using System.Runtime.InteropServices;
3
4namespace Efl { namespace Eo {
5
6public partial class NativeModule
7{
8 public const int RTLD_NOW = 0x002;
9
10 [DllImport(efl.Libs.Libdl)]
11 public static extern IntPtr dlopen(string fileName, int flag);
12 [DllImport(efl.Libs.Libdl)]
13 public static extern int dlclose(IntPtr handle);
14
15 public static void UnloadLibrary(IntPtr handle)
16 {
17 dlclose(handle);
18 }
19
20 public static IntPtr LoadLibrary(string filename)
21 {
22 Console.WriteLine("Loading library {0}", filename);
23 var r = dlopen(filename, RTLD_NOW);
24 if (r == IntPtr.Zero)
25 {
26 r = dlopen("lib" + filename, RTLD_NOW);
27 if (r == IntPtr.Zero)
28 {
29 r = dlopen(filename + ".so", RTLD_NOW);
30 if (r == IntPtr.Zero)
31 {
32 r = dlopen("lib" + filename + ".so", RTLD_NOW);
33 }
34 }
35 }
36 return r;
37 }
38}
39
40
41
42
43} }
diff --git a/src/bindings/mono/eo_mono/NativeModule_Windows.cs b/src/bindings/mono/eo_mono/NativeModule_Windows.cs
new file mode 100644
index 0000000..889adc0
--- /dev/null
+++ b/src/bindings/mono/eo_mono/NativeModule_Windows.cs
@@ -0,0 +1,15 @@
1using System;
2using System.Runtime.InteropServices;
3
4namespace Efl { namespace Eo {
5
6public class partial NativeModule
7{
8 [DllImport(efl.Libs.Kernel32, CharSet = CharSet.Unicode, SetLastError = true)]
9 public static extern IntPtr LoadLibrary(string libFilename);
10}
11
12
13
14
15} }
diff --git a/src/bindings/mono/eo_mono/iwrapper.cs b/src/bindings/mono/eo_mono/iwrapper.cs
index fe96088..a2a00ce 100644
--- a/src/bindings/mono/eo_mono/iwrapper.cs
+++ b/src/bindings/mono/eo_mono/iwrapper.cs
@@ -12,146 +12,113 @@ using EoG = Efl.Eo.Globals;
12namespace Efl { namespace Eo { 12namespace Efl { namespace Eo {
13 13
14public class Globals { 14public class Globals {
15 [DllImport(efl.Libs.Eo)] public static extern void efl_object_init(); 15 [return: MarshalAs(UnmanagedType.U1)]
16 [DllImport(efl.Libs.Eo)] public static extern void efl_object_shutdown(); 16 public delegate bool efl_object_init_delegate();
17 public static FunctionWrapper<efl_object_init_delegate> efl_object_init_ptr =
18 new FunctionWrapper<efl_object_init_delegate>(efl.Libs.EoModule, "efl_object_init");
19 public static bool efl_object_init() => efl_object_init_ptr.Value.Delegate();
20
21 public delegate void efl_object_shutdown_delegate();
22 public static FunctionWrapper<efl_object_shutdown_delegate> efl_object_shutdown_ptr = new FunctionWrapper<efl_object_shutdown_delegate>(efl.Libs.EoModule, "efl_object_shutdown");
23 public static void efl_object_shutdown() => efl_object_shutdown_ptr.Value.Delegate();
24 // [DllImport(efl.Libs.Eo)] public static extern void efl_object_shutdown();
25 public static FunctionWrapper<_efl_add_internal_start_delegate> _efl_add_internal_start_ptr = new FunctionWrapper<_efl_add_internal_start_delegate>(efl.Libs.EoModule, "_efl_add_internal_start");
26 public delegate IntPtr
27 _efl_add_internal_start_delegate([MarshalAs(UnmanagedType.LPStr)] String file, int line,
28 IntPtr klass, IntPtr parent, byte is_ref, byte is_fallback);
17 [DllImport(efl.Libs.Eo)] public static extern IntPtr 29 [DllImport(efl.Libs.Eo)] public static extern IntPtr
18 _efl_add_internal_start([MarshalAs(UnmanagedType.LPStr)] String file, int line, 30 _efl_add_internal_start([MarshalAs(UnmanagedType.LPStr)] String file, int line,
19 IntPtr klass, IntPtr parent, byte is_ref, byte is_fallback); 31 IntPtr klass, IntPtr parent, byte is_ref, byte is_fallback);
32 public delegate IntPtr
33 _efl_add_end_delegate(IntPtr eo, byte is_ref, byte is_fallback);
20 [DllImport(efl.Libs.Eo)] public static extern IntPtr 34 [DllImport(efl.Libs.Eo)] public static extern IntPtr
21 _efl_add_end(IntPtr eo, byte is_ref, byte is_fallback); 35 _efl_add_end(IntPtr eo, byte is_ref, byte is_fallback);
36 public delegate IntPtr
37 efl_ref_delegate(IntPtr eo);
22 [DllImport(efl.Libs.Eo)] public static extern IntPtr 38 [DllImport(efl.Libs.Eo)] public static extern IntPtr
23 efl_ref(IntPtr eo); 39 efl_ref(IntPtr eo);
40 public delegate void
41 efl_unref_delegate(IntPtr eo);
24 [DllImport(efl.Libs.CustomExports)] public static extern void 42 [DllImport(efl.Libs.CustomExports)] public static extern void
25 efl_unref(IntPtr eo); 43 efl_unref(IntPtr eo);
44 public delegate int
45 efl_ref_count_delegate(IntPtr eo);
26 [DllImport(efl.Libs.Eo)] public static extern int 46 [DllImport(efl.Libs.Eo)] public static extern int
27 efl_ref_count(IntPtr eo); 47 efl_ref_count(IntPtr eo);
48 public delegate IntPtr
49 efl_class_new_delegate(IntPtr class_description, IntPtr base0);
28 [DllImport(efl.Libs.Eo)] public static extern IntPtr 50 [DllImport(efl.Libs.Eo)] public static extern IntPtr
29 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr term); 51 efl_class_new(IntPtr class_description, IntPtr base0);
30 [DllImport(efl.Libs.Eo)] public static extern IntPtr 52 // public delegate IntPtr
31 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr term); 53 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1);
32 [DllImport(efl.Libs.Eo)] public static extern IntPtr
33 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr term);
34 [DllImport(efl.Libs.Eo)] public static extern IntPtr
35 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr term);
36 [DllImport(efl.Libs.Eo)] public static extern IntPtr
37 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr term);
38 [DllImport(efl.Libs.Eo)] public static extern IntPtr
39 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr term);
40 [DllImport(efl.Libs.Eo)] public static extern IntPtr
41 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr term);
42 [DllImport(efl.Libs.Eo)] public static extern IntPtr
43 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr term);
44 [DllImport(efl.Libs.Eo)] public static extern IntPtr
45 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr term);
46 [DllImport(efl.Libs.Eo)] public static extern IntPtr
47 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr term);
48 [DllImport(efl.Libs.Eo)] public static extern IntPtr
49 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr term);
50 [DllImport(efl.Libs.Eo)] public static extern IntPtr
51 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr term);
52 [DllImport(efl.Libs.Eo)] public static extern IntPtr
53 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr term);
54 [DllImport(efl.Libs.Eo)] public static extern IntPtr
55 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr term);
56 [DllImport(efl.Libs.Eo)] public static extern IntPtr
57 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr term);
58 [DllImport(efl.Libs.Eo)] public static extern IntPtr
59 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr term);
60 [DllImport(efl.Libs.Eo)] public static extern IntPtr
61 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr term);
62 [DllImport(efl.Libs.Eo)] public static extern IntPtr
63 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr term);
64 [DllImport(efl.Libs.Eo)] public static extern IntPtr
65 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr term);
66 [DllImport(efl.Libs.Eo)] public static extern IntPtr
67 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr term);
68 [DllImport(efl.Libs.Eo)] public static extern IntPtr
69 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr term);
70 [DllImport(efl.Libs.Eo)] public static extern IntPtr
71 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr term);
72 [DllImport(efl.Libs.Eo)] public static extern IntPtr
73 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr term);
74 [DllImport(efl.Libs.Eo)] public static extern IntPtr
75 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr term);
76 [DllImport(efl.Libs.Eo)] public static extern IntPtr
77 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr term);
78 [DllImport(efl.Libs.Eo)] public static extern IntPtr
79 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr term);
80 [DllImport(efl.Libs.Eo)] public static extern IntPtr 54 [DllImport(efl.Libs.Eo)] public static extern IntPtr
81 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr term); 55 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1);
56 // public delegate IntPtr
57 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2);
82 [DllImport(efl.Libs.Eo)] public static extern IntPtr 58 [DllImport(efl.Libs.Eo)] public static extern IntPtr
83 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr term); 59 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2);
60 // public delegate IntPtr
61 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3);
84 [DllImport(efl.Libs.Eo)] public static extern IntPtr 62 [DllImport(efl.Libs.Eo)] public static extern IntPtr
85 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr term); 63 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3);
64 // public delegate IntPtr
65 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4);
86 [DllImport(efl.Libs.Eo)] public static extern IntPtr 66 [DllImport(efl.Libs.Eo)] public static extern IntPtr
87 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr term); 67 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4);
68 // public delegate IntPtr
69 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4, IntPtr base5);
88 [DllImport(efl.Libs.Eo)] public static extern IntPtr 70 [DllImport(efl.Libs.Eo)] public static extern IntPtr
89 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr term); 71 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4, IntPtr base5);
72 // public delegate IntPtr
73 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4, IntPtr base5, IntPtr base6);
90 [DllImport(efl.Libs.Eo)] public static extern IntPtr 74 [DllImport(efl.Libs.Eo)] public static extern IntPtr
91 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr term); 75 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4, IntPtr base5, IntPtr base6);
76 // public delegate IntPtr
77 // efl_class_new_delegate(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4, IntPtr base5, IntPtr base6, IntPtr base7);
92 [DllImport(efl.Libs.Eo)] public static extern IntPtr 78 [DllImport(efl.Libs.Eo)] public static extern IntPtr
93 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr term); 79 efl_class_new(IntPtr class_description, IntPtr base0, IntPtr base1, IntPtr base2, IntPtr base3, IntPtr base4, IntPtr base5, IntPtr base6, IntPtr base7);
94 [DllImport(efl.Libs.Eo)] public static extern IntPtr 80 public delegate byte efl_class_functions_set_delegate(IntPtr klass_id, IntPtr object_ops, IntPtr class_ops);
95 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr term);
96 [DllImport(efl.Libs.Eo)] public static extern IntPtr
97 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr term);
98 [DllImport(efl.Libs.Eo)] public static extern IntPtr
99 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr term);
100 [DllImport(efl.Libs.Eo)] public static extern IntPtr
101 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr term);
102 [DllImport(efl.Libs.Eo)] public static extern IntPtr
103 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr term);
104 [DllImport(efl.Libs.Eo)] public static extern IntPtr
105 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr term);
106 [DllImport(efl.Libs.Eo)] public static extern IntPtr
107 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr term);
108 [DllImport(efl.Libs.Eo)] public static extern IntPtr
109 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr term);
110 [DllImport(efl.Libs.Eo)] public static extern IntPtr
111 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr term);
112 [DllImport(efl.Libs.Eo)] public static extern IntPtr
113 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr term);
114 [DllImport(efl.Libs.Eo)] public static extern IntPtr
115 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr extn43, IntPtr term);
116 [DllImport(efl.Libs.Eo)] public static extern IntPtr
117 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr extn43, IntPtr extn44, IntPtr term);
118 [DllImport(efl.Libs.Eo)] public static extern IntPtr
119 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr extn43, IntPtr extn44, IntPtr extn45, IntPtr term);
120 [DllImport(efl.Libs.Eo)] public static extern IntPtr
121 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr extn43, IntPtr extn44, IntPtr extn45, IntPtr extn46, IntPtr term);
122 [DllImport(efl.Libs.Eo)] public static extern IntPtr
123 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr extn43, IntPtr extn44, IntPtr extn45, IntPtr extn46, IntPtr extn47, IntPtr term);
124 [DllImport(efl.Libs.Eo)] public static extern IntPtr
125 efl_class_new(IntPtr class_description, IntPtr parent, IntPtr extn1, IntPtr extn2, IntPtr extn3, IntPtr extn4, IntPtr extn5, IntPtr extn6, IntPtr extn7, IntPtr extn8, IntPtr extn9, IntPtr extn10, IntPtr extn11, IntPtr extn12, IntPtr extn13, IntPtr extn14, IntPtr extn15, IntPtr extn16, IntPtr extn17, IntPtr extn18, IntPtr extn19, IntPtr extn20, IntPtr extn21, IntPtr extn22, IntPtr extn23, IntPtr extn24, IntPtr extn25, IntPtr extn26, IntPtr extn27, IntPtr extn28, IntPtr extn29, IntPtr extn30, IntPtr extn31, IntPtr extn32, IntPtr extn33, IntPtr extn34, IntPtr extn35, IntPtr extn36, IntPtr extn37, IntPtr extn38, IntPtr extn39, IntPtr extn40, IntPtr extn41, IntPtr extn42, IntPtr extn43, IntPtr extn44, IntPtr extn45, IntPtr extn46, IntPtr extn47, IntPtr extn48, IntPtr term);
126 [DllImport(efl.Libs.Eo)] public static extern byte efl_class_functions_set(IntPtr klass_id, IntPtr object_ops, IntPtr class_ops); 81 [DllImport(efl.Libs.Eo)] public static extern byte efl_class_functions_set(IntPtr klass_id, IntPtr object_ops, IntPtr class_ops);
82 public delegate IntPtr efl_data_scope_get_delegate(IntPtr obj, IntPtr klass);
127 [DllImport(efl.Libs.Eo)] public static extern IntPtr efl_data_scope_get(IntPtr obj, IntPtr klass); 83 [DllImport(efl.Libs.Eo)] public static extern IntPtr efl_data_scope_get(IntPtr obj, IntPtr klass);
84 public delegate IntPtr efl_super_delegate(IntPtr obj, IntPtr klass);
128 [DllImport(efl.Libs.Eo)] public static extern IntPtr efl_super(IntPtr obj, IntPtr klass); 85 [DllImport(efl.Libs.Eo)] public static extern IntPtr efl_super(IntPtr obj, IntPtr klass);
86 public delegate IntPtr efl_class_get_delegate(IntPtr obj);
129 [DllImport(efl.Libs.Eo)] public static extern IntPtr efl_class_get(IntPtr obj); 87 [DllImport(efl.Libs.Eo)] public static extern IntPtr efl_class_get(IntPtr obj);
130#if WIN32 88 public delegate IntPtr dlerror_delegate();
131 public static IntPtr RTLD_DEFAULT = new IntPtr(1);
132#else
133 public static IntPtr RTLD_DEFAULT = new IntPtr(0);
134#endif
135 [DllImport(efl.Libs.Evil)] public static extern IntPtr dlerror(); 89 [DllImport(efl.Libs.Evil)] public static extern IntPtr dlerror();
136 [DllImport(efl.Libs.Evil)] public static extern IntPtr dlsym
137 (IntPtr handle, [MarshalAs(UnmanagedType.LPStr)] String name);
138 90
139 [DllImport(efl.Libs.Eo)] public static extern bool efl_event_callback_priority_add( 91 public delegate bool efl_event_callback_priority_add_delegate(
92 System.IntPtr obj,
93 IntPtr desc,
94 short priority,
95 Efl.EventCb cb,
96 System.IntPtr data);
97 [DllImport(efl.Libs.Eo)] public static extern bool efl_event_callback_priority_add(
140 System.IntPtr obj, 98 System.IntPtr obj,
141 IntPtr desc, 99 IntPtr desc,
142 short priority, 100 short priority,
143 Efl.EventCb cb, 101 Efl.EventCb cb,
144 System.IntPtr data); 102 System.IntPtr data);
145 [DllImport(efl.Libs.Eo)] public static extern bool efl_event_callback_del( 103 public delegate bool efl_event_callback_del_delegate(
104 System.IntPtr obj,
105 IntPtr desc,
106 Efl.EventCb cb,
107 System.IntPtr data);
108 [DllImport(efl.Libs.Eo)] public static extern bool efl_event_callback_del(
146 System.IntPtr obj, 109 System.IntPtr obj,
147 IntPtr desc, 110 IntPtr desc,
148 Efl.EventCb cb, 111 Efl.EventCb cb,
149 System.IntPtr data); 112 System.IntPtr data);
113 public delegate IntPtr
114 efl_object_legacy_only_event_description_get_delegate([MarshalAs(UnmanagedType.LPStr)] String name);
150 [DllImport(efl.Libs.Eo)] public static extern IntPtr 115 [DllImport(efl.Libs.Eo)] public static extern IntPtr
151 efl_object_legacy_only_event_description_get([MarshalAs(UnmanagedType.LPStr)] String name); 116 efl_object_legacy_only_event_description_get([MarshalAs(UnmanagedType.LPStr)] String name);
152 117
153 public static System.Collections.Concurrent.ConcurrentDictionary<System.Type, System.IntPtr> klasses 118 // public static System.Collections.Concurrent.ConcurrentDictionary<System.Type, System.IntPtr> klasses
154 = new System.Collections.Concurrent.ConcurrentDictionary<System.Type, System.IntPtr>(); 119 // = new System.Collections.Concurrent.ConcurrentDictionary<System.Type, System.IntPtr>();
120 public static System.Collections.Generic.Dictionary<System.Type, System.IntPtr> klasses
121 = new System.Collections.Generic.Dictionary<System.Type, System.IntPtr>();
155 122
156 public const int RTLD_NOW = 2; 123 public const int RTLD_NOW = 2;
157 124
@@ -289,48 +256,48 @@ public class Globals {
289 case 4: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], nul); 256 case 4: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], nul);
290 case 5: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], nul); 257 case 5: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], nul);
291 case 6: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], nul); 258 case 6: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], nul);
292 case 7: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], nul); 259 // case 7: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], nul);
293 case 8: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], nul); 260 // case 8: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], nul);
294 case 9: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], nul); 261 // case 9: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], nul);
295 case 10: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], nul); 262 // case 10: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], nul);
296 case 11: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], nul); 263 // case 11: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], nul);
297 case 12: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], nul); 264 // case 12: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], nul);
298 case 13: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], nul); 265 // case 13: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], nul);
299 case 14: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], nul); 266 // case 14: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], nul);
300 case 15: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], nul); 267 // case 15: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], nul);
301 case 16: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], nul); 268 // case 16: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], nul);
302 case 17: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], nul); 269 // case 17: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], nul);
303 case 18: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], nul); 270 // case 18: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], nul);
304 case 19: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], nul); 271 // case 19: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], nul);
305 case 20: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], nul); 272 // case 20: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], nul);
306 case 21: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], nul); 273 // case 21: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], nul);
307 case 22: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], nul); 274 // case 22: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], nul);
308 case 23: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], nul); 275 // case 23: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], nul);
309 case 24: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], nul); 276 // case 24: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], nul);
310 case 25: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], nul); 277 // case 25: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], nul);
311 case 26: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], nul); 278 // case 26: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], nul);
312 case 27: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], nul); 279 // case 27: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], nul);
313 case 28: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], nul); 280 // case 28: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], nul);
314 case 29: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], nul); 281 // case 29: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], nul);
315 case 30: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], nul); 282 // case 30: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], nul);
316 case 31: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], nul); 283 // case 31: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], nul);
317 case 32: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], nul); 284 // case 32: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], nul);
318 case 33: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], nul); 285 // case 33: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], nul);
319 case 34: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], nul); 286 // case 34: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], nul);
320 case 35: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], nul); 287 // case 35: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], nul);
321 case 36: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], nul); 288 // case 36: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], nul);
322 case 37: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], nul); 289 // case 37: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], nul);
323 case 38: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], nul); 290 // case 38: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], nul);
324 case 39: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], nul); 291 // case 39: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], nul);
325 case 40: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], nul); 292 // case 40: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], nul);
326 case 41: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], nul); 293 // case 41: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], nul);
327 case 42: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], nul); 294 // case 42: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], nul);
328 case 43: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], nul); 295 // case 43: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], nul);
329 case 44: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], nul); 296 // case 44: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], nul);
330 case 45: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], nul); 297 // case 45: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], nul);
331 case 46: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], il[45], nul); 298 // case 46: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], il[45], nul);
332 case 47: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], il[45], il[46], nul); 299 // case 47: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], il[45], il[46], nul);
333 case 48: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], il[45], il[46], il[47], nul); 300 // case 48: return EoG.efl_class_new(desc, bk, il[0], il[1], il[2], il[3], il[4], il[5], il[6], il[7], il[8], il[9], il[10], il[11], il[12], il[13], il[14], il[15], il[16], il[17], il[18], il[19], il[20], il[21], il[22], il[23], il[24], il[25], il[26], il[27], il[28], il[29], il[30], il[31], il[32], il[33], il[34], il[35], il[36], il[37], il[38], il[39], il[40], il[41], il[42], il[43], il[44], il[45], il[46], il[47], nul);
334 } 301 }
335 } 302 }
336 public static IntPtr instantiate_start(IntPtr klass, Efl.Object parent) 303 public static IntPtr instantiate_start(IntPtr klass, Efl.Object parent)
diff --git a/src/bindings/mono/eo_mono/workaround.cs b/src/bindings/mono/eo_mono/workaround.cs
index 99fb53b..7d98879 100644
--- a/src/bindings/mono/eo_mono/workaround.cs
+++ b/src/bindings/mono/eo_mono/workaround.cs
@@ -92,7 +92,7 @@ public struct EventDescription {
92 { 92 {
93 if (!descriptions.ContainsKey(name)) 93 if (!descriptions.ContainsKey(name))
94 { 94 {
95 IntPtr data = Efl.Eo.Globals.dlsym(Efl.Eo.Globals.RTLD_DEFAULT, name); 95 IntPtr data = Efl.Eo.FunctionInterop.LoadFunctionPointer(name);
96 96
97 if (data == IntPtr.Zero) { 97 if (data == IntPtr.Zero) {
98 string error = Eina.StringConversion.NativeUtf8ToManagedString(Efl.Eo.Globals.dlerror()); 98 string error = Eina.StringConversion.NativeUtf8ToManagedString(Efl.Eo.Globals.dlerror());
diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp
index 5fb0dbb..35dcb2e 100644
--- a/src/lib/eolian_cxx/grammar/klass_def.hpp
+++ b/src/lib/eolian_cxx/grammar/klass_def.hpp
@@ -16,6 +16,8 @@
16#include <vector> 16#include <vector>
17#include <memory> 17#include <memory>
18#include <set> 18#include <set>
19#include <iosfwd>
20#include <string>
19 21
20namespace efl { namespace eolian { namespace grammar { 22namespace efl { namespace eolian { namespace grammar {
21 23
@@ -73,6 +75,26 @@ enum class typedecl_type
73 function_ptr, 75 function_ptr,
74}; 76};
75 77
78inline std::ostream& operator<<(std::ostream& s, typedecl_type dec)
79{
80 switch(dec)
81 {
82 case typedecl_type::unknown:
83 return s << "unknown";
84 case typedecl_type::struct_:
85 return s << "struct_";
86 case typedecl_type::struct_opaque:
87 return s << "struct_opaque";
88 case typedecl_type::enum_:
89 return s << "enum_";
90 case typedecl_type::alias:
91 return s << "alias";
92 case typedecl_type::function_ptr:
93 return s << "function_ptr";
94 };
95 return s;
96}
97
76inline typedecl_type typedecl_type_get(Eolian_Typedecl const* decl) 98inline typedecl_type typedecl_type_get(Eolian_Typedecl const* decl)
77{ 99{
78 if (!decl) 100 if (!decl)
@@ -100,6 +122,22 @@ enum class class_type
100 regular, abstract_, mixin, interface_ 122 regular, abstract_, mixin, interface_
101}; 123};
102 124
125inline std::ostream& operator<<(std::ostream& s, class_type t)
126{
127 switch(t)
128 {
129 case class_type::regular:
130 return s << "regular";
131 case class_type::abstract_:
132 return s << "abstract_";
133 case class_type::mixin:
134 return s << "mixin";
135 case class_type::interface_:
136 return s << "interface_";
137 };
138 return s;
139}
140
103struct klass_name 141struct klass_name
104{ 142{
105 std::vector<std::string> namespaces; 143 std::vector<std::string> namespaces;
@@ -108,6 +146,14 @@ struct klass_name
108 class_type type; 146 class_type type;
109 std::string klass_get_name; 147 std::string klass_get_name;
110 148
149 friend inline std::ostream& operator<<(std::ostream& s, klass_name const& name)
150 {
151 s << "[ namespaces: {";
152 std::copy(name.namespaces.begin(), name.namespaces.end(), std::ostream_iterator<std::string>(s, ","));
153 return s << "}, eolian_name: " << name.eolian_name << " base_qualifier: " << name.base_qualifier
154 << " type: " << name.type << " klass_get_name: " << name.klass_get_name << "]";
155 }
156
111 klass_name() { 157 klass_name() {
112 } 158 }
113 159
@@ -264,6 +310,14 @@ struct regular_type_def
264 bool is_alias() const { return is_type(typedecl_type::alias); } 310 bool is_alias() const { return is_type(typedecl_type::alias); }
265 bool is_function_ptr() const { return is_type(typedecl_type::function_ptr); } 311 bool is_function_ptr() const { return is_type(typedecl_type::function_ptr); }
266 312
313 friend inline std::ostream& operator<<(std::ostream& s, regular_type_def const& def)
314 {
315 s << "[ base_type: " << def.base_type << " base_qualifier: " << def.base_qualifier
316 << " namespaces: ";
317 std::copy(def.namespaces.begin(), def.namespaces.end(), std::ostream_iterator<std::string>(s, ", "));
318 return s << " type_type: " << def.type_type << " is_undefined " << def.is_undefined << "]";
319 }
320
267 std::string base_type; 321 std::string base_type;
268 qualifier_def base_qualifier; 322 qualifier_def base_qualifier;
269 std::vector<std::string> namespaces; 323 std::vector<std::string> namespaces;
@@ -284,6 +338,13 @@ struct complex_type_def
284{ 338{
285 regular_type_def outer; 339 regular_type_def outer;
286 std::vector<type_def> subtypes; 340 std::vector<type_def> subtypes;
341
342 friend inline std::ostream& operator<<(std::ostream& s, complex_type_def const& def)
343 {
344 s << "[ outer " << def.outer << " subtypes: {";
345 std::copy(def.subtypes.begin(), def.subtypes.end(), std::ostream_iterator<type_def>(s, ", "));
346 return s << "}]";
347 }
287}; 348};
288 349
289inline bool operator==(complex_type_def const& lhs, complex_type_def const& rhs) 350inline bool operator==(complex_type_def const& lhs, complex_type_def const& rhs)
@@ -318,6 +379,12 @@ struct type_def
318 { 379 {
319 return lhs.c_type < rhs.c_type; 380 return lhs.c_type < rhs.c_type;
320 } 381 }
382 friend inline std::ostream& operator<<(std::ostream& s, type_def const& rhs)
383 {
384 return s << "[ original: " << rhs.original_type << " c_type "
385 << rhs.c_type << " has_own " << rhs.has_own << " is_ptr "
386 << rhs.is_ptr << "]";
387 }
321}; 388};
322 389
323struct get_qualifier_visitor 390struct get_qualifier_visitor