diff options
author | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2016-10-26 17:32:59 -0200 |
---|---|---|
committer | Felipe Magno de Almeida <felipe@expertisesolutions.com.br> | 2016-10-26 17:32:59 -0200 |
commit | 5e5a6884c03277cca120166688c2a32fa87ff7bb (patch) | |
tree | 5db0269360bc6c2db9b1a924cb3d9caeed11a91a | |
parent | 66f4605a90a0b63cc19f61b8524eebae1952ab0e (diff) | |
download | efl-5e5a6884c03277cca120166688c2a32fa87ff7bb.tar.gz |
mono: Type changes
-rw-r--r-- | src/Makefile_Eolian_Mono.am | 15 | ||||
-rw-r--r-- | src/bin/eolian_mono/eolian_mono.cc | 12 | ||||
-rw-r--r-- | src/bin/eolian_mono/eolian_mono/keyword.hh | 4 | ||||
-rw-r--r-- | src/bin/eolian_mono/eolian_mono/type_impl.hh | 112 |
4 files changed, 94 insertions, 49 deletions
diff --git a/src/Makefile_Eolian_Mono.am b/src/Makefile_Eolian_Mono.am index 062aee41e7..71b20b7dc2 100644 --- a/src/Makefile_Eolian_Mono.am +++ b/src/Makefile_Eolian_Mono.am @@ -14,11 +14,13 @@ 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 C++ installed_eflmonomainheadersdir = $(includedir)/efl-mono-@VMAJ@/ -nodist_installed_eflmonomainheaders_DATA = $(efl_eolian_cxx_hh:%.hh=%.cs) +nodist_installed_eflmonomainheaders_DATA = $(efl_eolian_files:%.eo=%.eo.cs) -CLEANFILES += $(efl_eolian_cxx_hh:%.hh=%.cs) +CLEANFILES += $(efl_eolian_mono_files) if HAVE_EOLIAN_MONO EOLIAN_MONO = @eolian_mono@ @@ -40,9 +42,7 @@ lib_eo_mono_eo_mono_dll_SOURCES = \ bindings/mono/eo_mono/object.cs \ bindings/mono/eo_mono/iwrapper.cs -mono_cs_sources = $(efl_eolian_cxx_hh:%.hh=%.cs) - -lib/eo_mono/eo_mono.dll$(EXEEXT): $(lib_eo_mono_eo_mono_dll_SOURCES) lib/eo_mono/$(am__dirstamp) $(mono_cs_sources) +lib/eo_mono/eo_mono.dll$(EXEEXT): $(lib_eo_mono_eo_mono_dll_SOURCES) lib/eo_mono/$(am__dirstamp) $(efl_eolian_mono_files) @rm -f lib/eo_mono/eo_mono_dll$(EXEEXT) $(AM_V_MCS)LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(LD_LIBRARY_PATH_APPEND) $(MCS) $(MCS_FLAGS) -out:$@ -t:library $(filter-out $(lastword $(^)), $(^)) @@ -70,5 +70,10 @@ SUFFIXES += .eo.cs $(MKDIR_P) $(dir $@); \ $(EOLIAN_MONO) $(EOLIAN_FLAGS) -o $@ $< +%.eot.cs: %.eot $(_EOLIAN_MONO_DEP) + $(AM_V_EOLMONO) \ + $(MKDIR_P) $(dir $@); \ + $(EOLIAN_MONO) $(EOLIAN_FLAGS) -o $@ $< + endif endif diff --git a/src/bin/eolian_mono/eolian_mono.cc b/src/bin/eolian_mono/eolian_mono.cc index 96a60da4c6..2ac6344af0 100644 --- a/src/bin/eolian_mono/eolian_mono.cc +++ b/src/bin/eolian_mono/eolian_mono.cc @@ -103,7 +103,15 @@ run(options_type const& opts) } else { - std::abort(); + Eina_Iterator *enums = eolian_typedecl_enums_get_by_file(opts.in_file.c_str()); + + // for( + + // EINA_CXX_DOM_LOG_ERR(eolian_mono::domain) + // << "is this a type file?" + // << std::endl; + // //std::abort(); + // goto err; } return; err: @@ -219,7 +227,7 @@ opts_get(int argc, char **argv) } else if (c == 'h') { - _usage(argv[0]); + _usage(argv[0]); } else if (c == 'v') { diff --git a/src/bin/eolian_mono/eolian_mono/keyword.hh b/src/bin/eolian_mono/eolian_mono/keyword.hh index cd99e42176..651bc3f2b1 100644 --- a/src/bin/eolian_mono/eolian_mono/keyword.hh +++ b/src/bin/eolian_mono/eolian_mono/keyword.hh @@ -5,8 +5,8 @@ namespace eolian_mono { inline std::string escape_keyword(std::string const& name) { - if(name == "delete" || name == "register") - return "cxx_" + name; + if(name == "delete" || name == "register" || name == "do") + return "mono_" + name; return name; } diff --git a/src/bin/eolian_mono/eolian_mono/type_impl.hh b/src/bin/eolian_mono/eolian_mono/type_impl.hh index fb3b364dde..e1f82c2849 100644 --- a/src/bin/eolian_mono/eolian_mono/type_impl.hh +++ b/src/bin/eolian_mono/eolian_mono/type_impl.hh @@ -65,18 +65,18 @@ struct visitor_generate , {"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, " Integer"); }} + , {"int32", nullptr, [&] { return replace_base_type(regular, " int"); }} , {"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, " Integer"); }} + , {"uint", nullptr, [&] { return replace_base_type(regular, " int"); }} , {"ulong", nullptr, [&] { return replace_base_type(regular, " Long"); }} , {"ullong", nullptr, [&] { return replace_base_type(regular, " Long"); }} , {"uint8", nullptr, [&] { return replace_base_type(regular, " byte"); }} , {"uint16", nullptr, [&] { return replace_base_type(regular, " Short"); }} - , {"uint32", nullptr, [&] { return replace_base_type(regular, " Integer"); }} + , {"uint32", nullptr, [&] { return replace_base_type(regular, " int"); }} , {"uint64", nullptr, [&] { return replace_base_type(regular, " Long"); }} , {"size", nullptr, [&] { return replace_base_type(regular, " Long"); }} @@ -87,20 +87,26 @@ struct visitor_generate regular_type_def r = regular; r.base_qualifier.qualifier ^= qualifier_info::is_ref; // if(is_out || is_return) - return replace_base_type(r, " String"); + return replace_base_type(r, " System.String"); // else return replace_base_type(r, " ::efl::eina::string_view"); }} , {"string", false, [&] { regular_type_def r = regular; r.base_qualifier.qualifier ^= qualifier_info::is_ref; - return replace_base_type(r, " String"); + return replace_base_type(r, " System.String"); }} , {"stringshare", nullptr, [&] { regular_type_def r = regular; r.base_qualifier.qualifier ^= qualifier_info::is_ref; - return replace_base_type(r, " String"); + return replace_base_type(r, " System.String"); + }} + , {"generic_value", true, [&] + { return regular_type_def{" int", regular.base_qualifier, {}}; + }} + , {"generic_value", false, [&] + { return regular_type_def{" int", regular.base_qualifier, {}}; }} // , {"generic_value", true, [&] // { return regular_type_def{" ::efl::eina::value", regular.base_qualifier, {}}; @@ -174,33 +180,42 @@ struct visitor_generate && as_generator(">").generate(sink, attributes::unused, *context); } } - else if((is_return || is_out) && regular.base_qualifier & qualifier_info::is_ref - && regular.base_qualifier & qualifier_info::is_own) - { - if(as_generator - ( - " ::std::unique_ptr<" - << *(string << "_") - << string - << (regular.base_qualifier & qualifier_info::is_const ? " const" : "") - << ", ::efl::eina::malloc_deleter>" - ) - .generate(sink, std::make_tuple(regular.namespaces, regular.base_type), *context)) - return true; - else - return false; - } + // else if((is_return || is_out) && regular.base_qualifier & qualifier_info::is_ref + // && regular.base_qualifier & qualifier_info::is_own) + // { + // if(as_generator + // ( + // " ::std::unique_ptr<" + // << *(string << "_") + // << string + // << (regular.base_qualifier & qualifier_info::is_const ? " const" : "") + // << ", ::efl::eina::malloc_deleter>" + // ) + // .generate(sink, std::make_tuple(regular.namespaces, regular.base_type), *context)) + // return true; + // else + // return false; + // } + // else if(Eolian_Typedecl const* typedecl = eolian_typedecl_struct_get_by_name(c_type.c_str())) + // { + // return as_generator + // ( + // *(string << ".") + // << string + // ) + // .generate(sink, std::make_tuple(regular.namespaces, regular.base_type), *context); + // } else { if(as_generator ( - *(string << "_") + *(lower_case[string] << ".") << string - << (regular.base_qualifier & qualifier_info::is_const - || (regular.base_qualifier & qualifier_info::is_ref - && !is_return && !is_out) - ? " const" : "") - << (regular.base_qualifier & qualifier_info::is_ref? "&" : "") + // << (regular.base_qualifier & qualifier_info::is_const + // || (regular.base_qualifier & qualifier_info::is_ref + // && !is_return && !is_out) + // ? /*" const"*/ "" : "") + /*<< (regular.base_qualifier & qualifier_info::is_ref? "&" : "")*/ ) .generate(sink, std::make_tuple(regular.namespaces, regular.base_type), *context)) return true; @@ -231,28 +246,39 @@ struct visitor_generate { {"list", true, nullptr, [&] { - // generate_container(sink, complex, *context, " ::efl::eina::list"); + (*this)(regular_type_def{" int", complex.outer.base_qualifier, {}}); return attributes::type_def::variant_type(); + // generate_container(sink, complex, *context, " ::efl::eina::list"); + // return attributes::type_def::variant_type(); }} , {"list", false, nullptr, [&] { + return replace_outer + (complex, regular_type_def{" int", complex.outer.base_qualifier, {}}); // generate_container(sink, complex, *context, " ::efl::eina::range_list"); - return attributes::type_def::variant_type(); + // return attributes::type_def::variant_type(); }} , {"array", true, nullptr, [&] { - // generate_container(sink, complex, *context, " ::efl::eina::array"); + (*this)(regular_type_def{" int", complex.outer.base_qualifier, {}}); return attributes::type_def::variant_type(); + // generate_container(sink, complex, *context, " ::efl::eina::array"); + // return attributes::type_def::variant_type(); }} , {"array", false, nullptr, [&] { - // generate_container(sink, complex, *context, " ::efl::eina::range_array"); + (*this)(regular_type_def{" int", complex.outer.base_qualifier, {}}); return attributes::type_def::variant_type(); + // generate_container(sink, complex, *context, " ::efl::eina::range_array"); + // return attributes::type_def::variant_type(); }} , {"hash", nullptr, nullptr , [&] - { regular_type_def r{"Eina_Hash*", complex.outer.base_qualifier, {}}; - return r; + { + return replace_outer + (complex, regular_type_def{" int", complex.outer.base_qualifier, {}}); + // regular_type_def r{"Eina_Hash*", complex.outer.base_qualifier, {}}; + // return r; }} , {"promise", nullptr, nullptr, [&] { @@ -262,20 +288,26 @@ struct visitor_generate } , {"future", nullptr, nullptr, [&] { - return replace_outer - (complex, regular_type_def{" ::efl::shared_future", complex.outer.base_qualifier, {}}); + (*this)(regular_type_def{" int", complex.outer.base_qualifier, {}}); + return attributes::type_def::variant_type(); + // return replace_outer + // (complex, regular_type_def{" ::efl::shared_future", complex.outer.base_qualifier, {}}); } } , {"iterator", nullptr, nullptr, [&] { - return replace_outer - (complex, regular_type_def{" ::efl::eina::iterator", complex.outer.base_qualifier, {}}); + (*this)(regular_type_def{" int", complex.outer.base_qualifier, {}}); + return attributes::type_def::variant_type(); + // return replace_outer + // (complex, regular_type_def{" ::efl::eina::iterator", complex.outer.base_qualifier, {}}); } } , {"accessor", nullptr, nullptr, [&] { - return replace_outer - (complex, regular_type_def{" ::efl::eina::accessor", complex.outer.base_qualifier, {}}); + (*this)(regular_type_def{" int", complex.outer.base_qualifier, {}}); + return attributes::type_def::variant_type(); + // return replace_outer + // (complex, regular_type_def{" ::efl::eina::accessor", complex.outer.base_qualifier, {}}); } } }; |