summaryrefslogtreecommitdiff
path: root/src/bin/eolian_mono
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/eolian_mono')
-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
9 files changed, 87 insertions, 48 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)