summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2016-10-26 17:32:59 -0200
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2016-10-26 17:32:59 -0200
commit5e5a6884c03277cca120166688c2a32fa87ff7bb (patch)
tree5db0269360bc6c2db9b1a924cb3d9caeed11a91a
parent66f4605a90a0b63cc19f61b8524eebae1952ab0e (diff)
downloadefl-5e5a6884c03277cca120166688c2a32fa87ff7bb.tar.gz
mono: Type changes
-rw-r--r--src/Makefile_Eolian_Mono.am15
-rw-r--r--src/bin/eolian_mono/eolian_mono.cc12
-rw-r--r--src/bin/eolian_mono/eolian_mono/keyword.hh4
-rw-r--r--src/bin/eolian_mono/eolian_mono/type_impl.hh112
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, {}});
}
}
};