vitorsousa pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=48f62ad686d11c97ec62b1ba528262edf39cafbf

commit 48f62ad686d11c97ec62b1ba528262edf39cafbf
Author: Vitor Sousa <vitorsousasi...@gmail.com>
Date:   Wed Mar 9 15:46:19 2016 -0300

    cxx: Migrate C++ binding to the new eo_add syntax
---
 src/bindings/eo_cxx/eo_inherit.hh                  |  3 +-
 src/bindings/eo_cxx/eo_ops.hh                      |  3 +-
 .../grammar/eo_class_constructors_generator.hh     |  7 +--
 src/tests/eina_cxx/eina_cxx_test_accessor.cc       | 18 ++++----
 src/tests/eina_cxx/eina_cxx_test_ptrarray.cc       | 54 ++++++++++++----------
 src/tests/eina_cxx/eina_cxx_test_ptrlist.cc        | 50 +++++++++++---------
 6 files changed, 76 insertions(+), 59 deletions(-)

diff --git a/src/bindings/eo_cxx/eo_inherit.hh 
b/src/bindings/eo_cxx/eo_inherit.hh
index 9639e33..1d3d312 100644
--- a/src/bindings/eo_cxx/eo_inherit.hh
+++ b/src/bindings/eo_cxx/eo_inherit.hh
@@ -83,9 +83,10 @@ struct inherit
    ///
    template<typename... Args>
    inherit(efl::eo::parent_type _p, Args&& ... args)
+     : _eo_cls(nullptr), _eo_raw(nullptr)
    {
       _eo_cls = detail::create_class<D, E...> 
(eina::make_index_sequence<sizeof...(E)>());
-      _eo_raw = eo_add_ref(_eo_cls, _p._eo_raw, 
detail::inherit_constructor(eoid, this), ::efl::eolian::call_ctors(eoid, 
args...));
+      eo_add_ref(&_eo_raw, _eo_cls, _p._eo_raw, 
detail::inherit_constructor(_eo_raw, this), ::efl::eolian::call_ctors(_eo_raw, 
args...));
       ::efl::eolian::register_ev_del_free_callback(_eo_raw, args...);
   }
 
diff --git a/src/bindings/eo_cxx/eo_ops.hh b/src/bindings/eo_cxx/eo_ops.hh
index 46a33c7..9aecf61 100644
--- a/src/bindings/eo_cxx/eo_ops.hh
+++ b/src/bindings/eo_cxx/eo_ops.hh
@@ -54,7 +54,8 @@ isa(Eo *obj, Eo_Class *klass)
 inline Eo*
 add(Eo_Class *klass, Eo *parent = NULL)
 {
-   Eo *eo = eo_add_ref(klass, parent);
+   Eo *eo = nullptr;
+   eo_add_ref(&eo, klass, parent);
    return eo;
 }
 
diff --git a/src/lib/eolian_cxx/grammar/eo_class_constructors_generator.hh 
b/src/lib/eolian_cxx/grammar/eo_class_constructors_generator.hh
index 2a7091a..9fde23a 100644
--- a/src/lib/eolian_cxx/grammar/eo_class_constructors_generator.hh
+++ b/src/lib/eolian_cxx/grammar/eo_class_constructors_generator.hh
@@ -577,13 +577,14 @@ operator<<(std::ostream& out, 
function_call_constructor_methods const& x)
 
    out << ")" << endl
        << tab(1) << "{" << endl
-       << tab(2) << "Eo* _ret_eo = eo_add_ref(" << x._cls.eo_name << ", 
_p._eo_raw";
+       << tab(2) << "Eo* _ret_eo = nullptr;" << endl
+       << tab(2) << "eo_add_ref(&_ret_eo, " << x._cls.eo_name << ", 
_p._eo_raw";
    for (it = first; it != last; ++it)
      {
-        out << ", _c" << (it-first) << "(eoid)";
+        out << ", _c" << (it-first) << "(_ret_eo)";
      }
    if (!x._cls.optional_constructors.empty())
-     out << ", ::efl::eolian::call_ctors(eoid, _opts...)";
+     out << ", ::efl::eolian::call_ctors(_ret_eo, _opts...)";
    out << ");" << endl << endl;
 
    for (it = first; it != last; ++it)
diff --git a/src/tests/eina_cxx/eina_cxx_test_accessor.cc 
b/src/tests/eina_cxx/eina_cxx_test_accessor.cc
index 9737f0d..47cb62b 100644
--- a/src/tests/eina_cxx/eina_cxx_test_accessor.cc
+++ b/src/tests/eina_cxx/eina_cxx_test_accessor.cc
@@ -43,10 +43,11 @@ START_TEST(eina_cxx_eo_accessor_indexing)
 
   efl::eina::list<wrapper> list;
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   list.push_back(w1);
   list.push_back(w2);
@@ -97,10 +98,11 @@ START_TEST(eina_cxx_eo_accessor_iterator)
 
   efl::eina::list<wrapper> list;
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   list.push_back(w1);
   list.push_back(w2);
diff --git a/src/tests/eina_cxx/eina_cxx_test_ptrarray.cc 
b/src/tests/eina_cxx/eina_cxx_test_ptrarray.cc
index 6b2f627..4b7fce3 100644
--- a/src/tests/eina_cxx/eina_cxx_test_ptrarray.cc
+++ b/src/tests/eina_cxx/eina_cxx_test_ptrarray.cc
@@ -26,9 +26,10 @@ START_TEST(eina_cxx_ptrarray_push_back)
   int result[] = {5, 10, 15};
   int rresult[] = {15, 10, 5};
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   {
     efl::eina::ptr_array<int> array;
@@ -102,9 +103,10 @@ START_TEST(eina_cxx_ptrarray_pop_back)
     ck_assert(std::equal(array.rbegin(), array.rend(), rresult));
   }
   {
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::array<wrapper> array;
 
@@ -197,11 +199,12 @@ START_TEST(eina_cxx_ptrarray_insert)
     ck_assert(std::equal(array.begin(), array.end(), array4.begin()));
   }
   {
-    wrapper const w0(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w0(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::array<wrapper> array;
     ck_assert(std::distance(array.begin(), array.end()) == 0u);
@@ -277,7 +280,8 @@ START_TEST(eina_cxx_ptrarray_constructors)
   efl::eina::eina_init eina_init;
   efl::eo::eo_init eo_init;
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   {
     efl::eina::ptr_array<int> array1;
@@ -356,12 +360,13 @@ START_TEST(eina_cxx_ptrarray_erase)
     ck_assert(array1.back() == 25);
   }
   {
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w5(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w6(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w5(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w6(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::array<wrapper> array1;
 
@@ -437,12 +442,13 @@ START_TEST(eina_cxx_ptrarray_range)
   }
 
   {
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w5(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w6(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w5(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w6(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::array<wrapper> array;
     array.push_back(w1);
diff --git a/src/tests/eina_cxx/eina_cxx_test_ptrlist.cc 
b/src/tests/eina_cxx/eina_cxx_test_ptrlist.cc
index 039ef97..2c10263 100644
--- a/src/tests/eina_cxx/eina_cxx_test_ptrlist.cc
+++ b/src/tests/eina_cxx/eina_cxx_test_ptrlist.cc
@@ -28,9 +28,10 @@ START_TEST(eina_cxx_ptrlist_push_back)
   int result[] = {5, 10, 15};
   int rresult[] = {15, 10, 5};
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   {
     efl::eina::ptr_list<int> list;
@@ -77,9 +78,10 @@ START_TEST(eina_cxx_ptrlist_pop_back)
   int result[] = {5, 10};
   int rresult[] = {10, 5};
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   {
     efl::eina::ptr_list<int> list;
@@ -143,9 +145,10 @@ START_TEST(eina_cxx_ptrlist_push_front)
     ck_assert(std::equal(list.rbegin(), list.rend(), rresult));
   }
   {
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::list<wrapper> list;
 
@@ -171,9 +174,10 @@ START_TEST(eina_cxx_ptrlist_pop_front)
   int result[] = {10, 5};
   int rresult[] = {5, 10};
 
-  wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-  wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
+  Eo* eoptr = nullptr;
+  wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+  wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
   {
     efl::eina::ptr_list<int> list;
@@ -273,11 +277,12 @@ START_TEST(eina_cxx_ptrlist_insert)
     ck_assert(std::equal(list.begin(), list.end(), list4.begin()));
   }
   {
-    wrapper const w0(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w0(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::list<wrapper> list;
 
@@ -366,11 +371,12 @@ START_TEST(eina_cxx_ptrlist_constructors)
     ck_assert(list2 == list4);
   }
   {
-    wrapper const w0(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w1(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w2(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w3(eo_add(SIMPLE_CLASS, NULL));
-    wrapper const w4(eo_add(SIMPLE_CLASS, NULL));
+    Eo* eoptr = nullptr;
+    wrapper const w0(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w1(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w2(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w3(eo_add(&eoptr, SIMPLE_CLASS, NULL));
+    wrapper const w4(eo_add(&eoptr, SIMPLE_CLASS, NULL));
 
     efl::eina::list<wrapper> list1;
     ck_assert(list1.empty());

-- 


Reply via email to