summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2016-10-27 14:25:52 -0200
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2016-10-27 14:25:52 -0200
commitc3bca7169cde58bfc91d2def6c4800635fdbcdb1 (patch)
tree6a2c5daf4e4bdcc638faad4d8e920eda6a27274a
parentd8635d714349eec163e8d134e64b5b8c971d7b53 (diff)
downloadefl-c3bca7169cde58bfc91d2def6c4800635fdbcdb1.tar.gz
mono: Workaround to compile
-rw-r--r--src/Makefile_Eolian_Mono.am5
-rw-r--r--src/bin/eolian_mono/eolian_mono.cc3
-rw-r--r--src/bin/eolian_mono/eolian_mono/klass.hh2
-rw-r--r--src/bin/eolian_mono/eolian_mono/type_impl.hh76
-rw-r--r--src/bindings/mono/eo_mono/object.cs4
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;
}
-}
+}*/
}