diff options
author | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2016-10-27 14:25:52 -0200 |
---|---|---|
committer | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2016-10-27 14:25:52 -0200 |
commit | c3bca7169cde58bfc91d2def6c4800635fdbcdb1 (patch) | |
tree | 6a2c5daf4e4bdcc638faad4d8e920eda6a27274a | |
parent | d8635d714349eec163e8d134e64b5b8c971d7b53 (diff) | |
download | efl-c3bca7169cde58bfc91d2def6c4800635fdbcdb1.tar.gz |
mono: Workaround to compile
-rw-r--r-- | src/Makefile_Eolian_Mono.am | 5 | ||||
-rw-r--r-- | src/bin/eolian_mono/eolian_mono.cc | 3 | ||||
-rw-r--r-- | src/bin/eolian_mono/eolian_mono/klass.hh | 2 | ||||
-rw-r--r-- | src/bin/eolian_mono/eolian_mono/type_impl.hh | 76 | ||||
-rw-r--r-- | src/bindings/mono/eo_mono/object.cs | 4 |
5 files changed, 53 insertions, 37 deletions
diff --git a/src/Makefile_Eolian_Mono.am b/src/Makefile_Eolian_Mono.am index 71b20b7dc2..e54b4d65a0 100644 --- a/src/Makefile_Eolian_Mono.am +++ b/src/Makefile_Eolian_Mono.am @@ -14,7 +14,10 @@ bin_eolian_mono_eolian_mono_LDADD = @CHECK_LIBS@ @USE_EOLIAN_LIBS@ bin_eolian_mono_eolian_mono_DEPENDENCIES = @USE_EOLIAN_INTERNAL_LIBS@ -efl_eolian_mono_files = $(efl_eolian_files:%.eo=%.eo.cs) $(efl_eolian_type_files:%.eot=%.eot.cs) +efl_eolian_mono_files = \ +$(efl_eolian_files:%.eo=%.eo.cs)\ +$(efl_eolian_type_files:%.eot=%.eot.cs) \ +$(filter-out lib/eo/efl_object_override.eo.cs, $(eo_eolian_files:%.eo=%.eo.cs)) ### Efl C++ installed_eflmonomainheadersdir = $(includedir)/efl-mono-@VMAJ@/ diff --git a/src/bin/eolian_mono/eolian_mono.cc b/src/bin/eolian_mono/eolian_mono.cc index e9763ac716..10329fa5ff 100644 --- a/src/bin/eolian_mono/eolian_mono.cc +++ b/src/bin/eolian_mono/eolian_mono.cc @@ -95,13 +95,10 @@ run(options_type const& opts) } //else { - EINA_CXX_DOM_LOG_ERR(eolian_mono::domain) << "No klass, probably a eot file? " << opts.in_file.c_str(); for (efl::eina::iterator<const Eolian_Typedecl> enum_iterator( ::eolian_typedecl_enums_get_by_file(basename_input.c_str())) , enum_last; enum_iterator != enum_last; ++enum_iterator) { efl::eolian::grammar::attributes::enum_def enum_(&*enum_iterator); - EINA_CXX_DOM_LOG_ERR(eolian_mono::domain) << "would be generating enum"; - eolian_mono::enum_definition.generate(iterator, enum_, efl::eolian::grammar::context_null()); } } diff --git a/src/bin/eolian_mono/eolian_mono/klass.hh b/src/bin/eolian_mono/eolian_mono/klass.hh index cab5d32c6e..9ce76723ca 100644 --- a/src/bin/eolian_mono/eolian_mono/klass.hh +++ b/src/bin/eolian_mono/eolian_mono/klass.hh @@ -49,7 +49,7 @@ struct klass if(!as_generator ( - "public " << class_type << " " << string << " : " + "public " /*<< class_type*/ "interface" /*<<*/ " " << string << " : " ) .generate(sink, cls.cxx_name, context)) return false; diff --git a/src/bin/eolian_mono/eolian_mono/type_impl.hh b/src/bin/eolian_mono/eolian_mono/type_impl.hh index e1f82c2849..7ba58b6c62 100644 --- a/src/bin/eolian_mono/eolian_mono/type_impl.hh +++ b/src/bin/eolian_mono/eolian_mono/type_impl.hh @@ -61,27 +61,32 @@ struct visitor_generate const match_table[] = { // signed primitives - {"byte", nullptr, [&] { return replace_base_type(regular, " Byte"); }} - , {"llong", nullptr, [&] { return replace_base_type(regular, " Long"); }} - , {"int8", nullptr, [&] { return replace_base_type(regular, " Byte"); }} - , {"int16", nullptr, [&] { return replace_base_type(regular, " Short"); }} + {"byte", nullptr, [&] { return replace_base_type(regular, " byte"); }} + , {"llong", nullptr, [&] { return replace_base_type(regular, " long"); }} + , {"int8", nullptr, [&] { return replace_base_type(regular, " byte"); }} + , {"int16", nullptr, [&] { return replace_base_type(regular, " short"); }} , {"int32", nullptr, [&] { return replace_base_type(regular, " int"); }} - , {"int64", nullptr, [&] { return replace_base_type(regular, " Long"); }} - , {"ssize", nullptr, [&] { return replace_base_type(regular, " Long"); }} + , {"int64", nullptr, [&] { return replace_base_type(regular, " long"); }} + , {"ssize", nullptr, [&] { return replace_base_type(regular, " long"); }} // unsigned primitives - , {"ubyte", nullptr, [&] { return replace_base_type(regular, " Byte"); }} - , {"ushort", nullptr, [&] { return replace_base_type(regular, " Short"); }} - , {"uint", nullptr, [&] { return replace_base_type(regular, " int"); }} - , {"ulong", nullptr, [&] { return replace_base_type(regular, " Long"); }} - , {"ullong", nullptr, [&] { return replace_base_type(regular, " Long"); }} + , {"ubyte", nullptr, [&] { return replace_base_type(regular, " byte"); }} + , {"ushort", nullptr, [&] { return replace_base_type(regular, " ushort"); }} + , {"uint", nullptr, [&] { return replace_base_type(regular, " uint"); }} + , {"ulong", nullptr, [&] { return replace_base_type(regular, " ulong"); }} + , {"ullong", nullptr, [&] { return replace_base_type(regular, " ulong"); }} , {"uint8", nullptr, [&] { return replace_base_type(regular, " byte"); }} - , {"uint16", nullptr, [&] { return replace_base_type(regular, " Short"); }} - , {"uint32", nullptr, [&] { return replace_base_type(regular, " int"); }} - , {"uint64", nullptr, [&] { return replace_base_type(regular, " Long"); }} - , {"size", nullptr, [&] { return replace_base_type(regular, " Long"); }} + , {"uint16", nullptr, [&] { return replace_base_type(regular, " ushort"); }} + , {"uint32", nullptr, [&] { return replace_base_type(regular, " uint"); }} + , {"uint64", nullptr, [&] { return replace_base_type(regular, " ulong"); }} + , {"size", nullptr, [&] { return replace_base_type(regular, " ulong"); }} - , {"ptrdiff", nullptr, [&] { return replace_base_type(regular, " Long"); }} - , {"intptr", nullptr, [&] { return replace_base_type(regular, " IntPtr"); }} + , {"ptrdiff", nullptr, [&] { return replace_base_type(regular, " long"); }} + , {"intptr", nullptr, [&] { return replace_base_type(regular, " System.IntPtr"); }} + , {"void_ptr", nullptr, [&] { return replace_base_type(regular, " System.IntPtr"); }} + , {"Error", nullptr, [&] // Eina.Error + { + return regular_type_def{" System.IntPtr", regular.base_qualifier, {}}; + }} // TODO , {"string", true, [&] { regular_type_def r = regular; @@ -115,19 +120,20 @@ struct visitor_generate // { return regular_type_def{" ::efl::eina::value_view", regular.base_qualifier, {}}; // }} }; - if(regular.base_type == "void_ptr") - { - if(regular.base_qualifier & qualifier_info::is_ref) - throw std::runtime_error("ref of void_ptr is invalid"); - return as_generator - ( - lit("void") << (regular.base_qualifier & qualifier_info::is_const ? " const" : "") - << "*" - << (is_out ? "&" : "") - ) - .generate(sink, attributes::unused, *context); - } - else if(eina::optional<bool> b = call_match + // if(regular.base_type == "void_ptr") + // { + // if(regular.base_qualifier & qualifier_info::is_ref) + // throw std::runtime_error("ref of void_ptr is invalid"); + // return as_generator + // ( + // lit("void") << (regular.base_qualifier & qualifier_info::is_const ? " const" : "") + // << "*" + // << (is_out ? "&" : "") + // ) + // .generate(sink, attributes::unused, *context); + // } + // else + if(eina::optional<bool> b = call_match (match_table , [&] (match const& m) { @@ -207,6 +213,8 @@ struct visitor_generate // } else { + as_generator(" Generating: " << *(lower_case[string] << ".") << string << "\n") + .generate(std::ostream_iterator<char>(std::cerr), std::make_tuple(regular.namespaces, regular.base_type), *context); if(as_generator ( *(lower_case[string] << ".") @@ -225,6 +233,14 @@ struct visitor_generate } bool operator()(attributes::klass_name klass) const { + // as_generator(" Generating: " << *(lower_case[string] << ".") << string << "\n") + // .generate(std::ostream_iterator<char>(std::cerr), std::make_tuple(attributes::cpp_namespaces(klass.namespaces), klass.eolian_name), *context); + // if(klass.namespaces.size() == 1 + // && klass.namespaces[0] == "Eina" + // && klass.eolian_name == "Error") + // return + // as_generator(" System.IntPtr") + // .generate(sink, attributes::unused, *context); return as_generator(" " << *(lower_case[string] << ".") << string) .generate(sink, std::make_tuple(attributes::cpp_namespaces(klass.namespaces), klass.eolian_name), *context) diff --git a/src/bindings/mono/eo_mono/object.cs b/src/bindings/mono/eo_mono/object.cs index a8357f679f..7472f345ab 100644 --- a/src/bindings/mono/eo_mono/object.cs +++ b/src/bindings/mono/eo_mono/object.cs @@ -3,7 +3,7 @@ namespace efl { using System; -public class Object : efl.eo.IWrapper + /*public interface Object : efl.eo.IWrapper { IntPtr handle; public Object() @@ -14,6 +14,6 @@ public class Object : efl.eo.IWrapper { handle = raw; } -} +}*/ } |