cxx: Migrate C++ binding to the new eo_add syntax

This commit is contained in:
Vitor Sousa 2016-03-09 15:46:19 -03:00
parent d2fba6c595
commit 48f62ad686
6 changed files with 76 additions and 59 deletions

View File

@ -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...);
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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);

View File

@ -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);

View File

@ -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());