summaryrefslogtreecommitdiff
path: root/src/bindings
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2015-09-30 17:55:16 -0500
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2015-09-30 17:55:16 -0500
commitc2132a0666daf3d6dd99e710f8a7f100643fe731 (patch)
treec92aae093bdbdef4835cd3058b532aac956ddb83 /src/bindings
parent72b13c3ebb0b5f117f3602871ec2842d4baac786 (diff)
eolian-cxx: Fix inheritance from C++ classes after Eo ABI breakage
Fixed removal of op field from Eo_Op_Description and removed unnecessary use of internal Eo API to implement the Eo API function for theh constructor of the inherited class.
Diffstat (limited to 'src/bindings')
-rw-r--r--src/bindings/eo_cxx/eo_inherit_bindings.hh26
1 files changed, 1 insertions, 25 deletions
diff --git a/src/bindings/eo_cxx/eo_inherit_bindings.hh b/src/bindings/eo_cxx/eo_inherit_bindings.hh
index 9d8ca6df6b..cbd2bc8d98 100644
--- a/src/bindings/eo_cxx/eo_inherit_bindings.hh
+++ b/src/bindings/eo_cxx/eo_inherit_bindings.hh
@@ -61,29 +61,7 @@ void inherit_constructor_impl(Eo*, Inherit_Private_Data* self, void* this_)
61/// @param this_ The <em>user data</em> to be passed to the resolved function. 61/// @param this_ The <em>user data</em> to be passed to the resolved function.
62/// @param args An heterogeneous sequence of arguments. 62/// @param args An heterogeneous sequence of arguments.
63/// 63///
64EAPI inline 64inline EOAPI EO_VOID_FUNC_BODYV(inherit_constructor, EO_FUNC_CALL(this_), void* this_);
65void inherit_constructor(void* this_)
66{
67 typedef void (*func_t)(Eo *, void *, void*);
68 Eo_Op_Call_Data ___call;
69 static Eo_Op op = EO_NOOP;
70 if ( op == EO_NOOP )
71 op = _eo_api_op_id_get
72 (reinterpret_cast<void*>
73 (&detail::inherit_constructor),
74 ::eina_main_loop_is(), __FILE__, __LINE__);
75 if (!_eo_call_resolve("detail::inherit_constructor", op, &___call,
76 ::eina_main_loop_is(), __FILE__, __LINE__))
77 {
78 assert(_eo_call_resolve("detail::inherit_constructor", op, &___call,
79 ::eina_main_loop_is(), __FILE__, __LINE__));
80 return;
81 }
82 func_t func = (func_t) ___call.func;
83 EO_HOOK_CALL_PREPARE(eo_hook_call_pre, "");
84 func(___call.obj, ___call.data, this_);
85 EO_HOOK_CALL_PREPARE(eo_hook_call_post, "");
86}
87 65
88template <typename T> 66template <typename T>
89int initialize_operation_description(detail::tag<void>, void*); 67int initialize_operation_description(detail::tag<void>, void*);
@@ -136,12 +114,10 @@ Eo_Class const* create_class(eina::index_sequence<S...>)
136 ( 114 (
137 &detail::inherit_constructor 115 &detail::inherit_constructor
138 ); 116 );
139 op_descs[detail::operation_description_size<E...>::value].op = EO_NOOP;
140 op_descs[detail::operation_description_size<E...>::value].op_type = EO_OP_TYPE_REGULAR; 117 op_descs[detail::operation_description_size<E...>::value].op_type = EO_OP_TYPE_REGULAR;
141 118
142 op_descs[detail::operation_description_size<E...>::value+1].func = 0; 119 op_descs[detail::operation_description_size<E...>::value+1].func = 0;
143 op_descs[detail::operation_description_size<E...>::value+1].api_func = 0; 120 op_descs[detail::operation_description_size<E...>::value+1].api_func = 0;
144 op_descs[detail::operation_description_size<E...>::value+1].op = 0;
145 op_descs[detail::operation_description_size<E...>::value+1].op_type = EO_OP_TYPE_INVALID; 121 op_descs[detail::operation_description_size<E...>::value+1].op_type = EO_OP_TYPE_INVALID;
146 122
147 typedef inherit<D, E...> inherit_type; 123 typedef inherit<D, E...> inherit_type;