forked from enlightenment/efl
eo-cxx: Remove commented headers
This commit is contained in:
parent
27429cf40b
commit
b2a07ca150
|
@ -10,8 +10,6 @@ bindings/cxx/eo_cxx/eo_concrete.hh \
|
|||
bindings/cxx/eo_cxx/eo_cxx_interop.hh \
|
||||
bindings/cxx/eo_cxx/eo_event.hh \
|
||||
bindings/cxx/eo_cxx/Eo.hh \
|
||||
bindings/cxx/eo_cxx/eo_inherit.hh \
|
||||
bindings/cxx/eo_cxx/eo_inherit_bindings.hh \
|
||||
bindings/cxx/eo_cxx/eo_init.hh \
|
||||
bindings/cxx/eo_cxx/eo_ops.hh \
|
||||
bindings/cxx/eo_cxx/eo_wref.hh \
|
||||
|
|
|
@ -1,155 +0,0 @@
|
|||
|
||||
// ///
|
||||
// /// @file eo_inherit.hh
|
||||
// ///
|
||||
|
||||
// #ifndef EFL_CXX_EO_INHERIT_HH
|
||||
// #define EFL_CXX_EO_INHERIT_HH
|
||||
|
||||
// #include <tuple>
|
||||
// #include <cassert>
|
||||
|
||||
// #include <eina_integer_sequence.hh>
|
||||
|
||||
// #include "eo_ops.hh"
|
||||
// #include "eo_private.hh"
|
||||
// #include "eo_cxx_interop.hh"
|
||||
|
||||
// namespace efl { namespace eo {
|
||||
|
||||
// namespace detail {
|
||||
|
||||
// template <typename D, typename... E, std::size_t... S>
|
||||
// Eo_Class const* create_class(eina::index_sequence<S...>);
|
||||
|
||||
// /// @internal
|
||||
// ///
|
||||
// /// @brief Find the correct function for the <em>"constructor"</em>
|
||||
// /// operation and invoke it.
|
||||
// ///
|
||||
// /// @param this_ The <em>user data</em> to be passed to the resolved function.
|
||||
// /// @param args An heterogeneous sequence of arguments.
|
||||
// ///
|
||||
// inline EO_VOID_FUNC_BODYV(inherit_constructor, EO_FUNC_CALL(this_), void* this_);
|
||||
|
||||
// }
|
||||
|
||||
// /// @addtogroup Efl_Cxx_API
|
||||
// /// @{
|
||||
|
||||
// /// @brief Template-class that allows client code to inherit from
|
||||
// /// <em>EO C++ Classes</em> without the need to make explicit calls to
|
||||
// /// <em>EO</em> methods --- that would naturally be necessary to
|
||||
// /// register itself in the <em>EO Subsystem</em>.
|
||||
// ///
|
||||
// /// @param D The derived class
|
||||
// /// @param O The parent class
|
||||
// /// @param E Class extensions (either mixins or interfaces)
|
||||
// ///
|
||||
// /// The derived class @p D will inherit all EO operations and event
|
||||
// /// callbacks from the parent class @p P, as well as from the <c>Base
|
||||
// /// Class</c> (@ref efl::eo::concrete) since every EO C++ Class must
|
||||
// /// inherit from it.
|
||||
// ///
|
||||
// /// efl::eo::inherit makes use of meta-template elements to build (in
|
||||
// /// compile-time) code capable of registering @p D as an <em>EO
|
||||
// /// Class</em> within <em>EO Subsystem</em>. Each class is registered
|
||||
// /// only once upon instantiation of an object of its type.
|
||||
// ///
|
||||
// /// @note Function overriding is currently not supported.
|
||||
// ///
|
||||
// template <typename D, typename... E>
|
||||
// struct inherit;
|
||||
|
||||
// /// @}
|
||||
|
||||
// /// @addtogroup Efl_Cxx_API
|
||||
// /// @{
|
||||
|
||||
// template <typename D, typename... E>
|
||||
// struct inherit
|
||||
// : detail::operations<E>::template type<inherit<D, E...> > ...
|
||||
// , detail::conversion_operator<inherit<D, E...>, E>...
|
||||
// {
|
||||
// /// @typedef inherit_base
|
||||
// ///
|
||||
// typedef inherit<D, E...> inherit_base;
|
||||
|
||||
// //@{
|
||||
// /// @brief Class constructor.
|
||||
// ///
|
||||
// /// @ref inherit has a "variadic" constructor implementation that
|
||||
// /// allows from zero to EFL_MAX_ARGS heterogeneous parameters.
|
||||
// ///
|
||||
// template<typename... Args>
|
||||
// inherit(efl::eo::parent_type _p, Args&& ... args)
|
||||
// {
|
||||
// _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(eo_self, this), ::efl::eolian::call_ctors(eo_self, args...));
|
||||
// ::efl::eolian::register_ev_del_free_callback(_eo_raw, args...);
|
||||
// }
|
||||
|
||||
// template<typename... Args>
|
||||
// inherit(Args&& ... args)
|
||||
// : inherit(::efl::eo::parent = nullptr, std::forward<Args>(args)...)
|
||||
// {}
|
||||
// //@}
|
||||
|
||||
// /// @brief Class destructor.
|
||||
// ///
|
||||
// ~inherit()
|
||||
// {
|
||||
// detail::unref(_eo_raw);
|
||||
// }
|
||||
|
||||
// /// @brief Gets the <em>EO Object</em> corresponding to this <em>EO
|
||||
// /// C++ Object</em>.
|
||||
// ///
|
||||
// /// @return A pointer to the <em>EO Object</em>.
|
||||
// ///
|
||||
// Eo* _eo_ptr() const { return _eo_raw; }
|
||||
|
||||
// /// @brief Gets the <em>EO Class</em> corresponding to this <em>EO
|
||||
// /// C++ Class</em>.
|
||||
// ///
|
||||
// /// @return A pointer to the <em>EO Class</em>.
|
||||
// ///
|
||||
// Eo_Class const* _eo_class() const { return _eo_cls; }
|
||||
|
||||
// Eo* _release()
|
||||
// {
|
||||
// Eo* tmp = _eo_raw;
|
||||
// _eo_raw = nullptr;
|
||||
// return tmp;
|
||||
// }
|
||||
|
||||
// protected:
|
||||
// /// @brief Copy constructor.
|
||||
// ///
|
||||
// inherit(inherit const& other)
|
||||
// : _eo_cls(other._eo_cls)
|
||||
// , _eo_raw(other._eo_raw)
|
||||
// { detail::ref(_eo_raw); }
|
||||
|
||||
// /// @brief Assignment Operator
|
||||
// ///
|
||||
// inherit& operator=(inherit const& other)
|
||||
// {
|
||||
// _eo_cls = other._eo_cls;
|
||||
// _eo_raw = other._eo_raw;
|
||||
// detail::ref(_eo_raw);
|
||||
// return *this;
|
||||
// }
|
||||
|
||||
// private:
|
||||
// Eo_Class const* _eo_cls; ///< The <em>EO Class</em>.
|
||||
// Eo* _eo_raw; ///< The <em>EO Object</em>.
|
||||
// };
|
||||
|
||||
// /// @}
|
||||
|
||||
// } } // namespace efl { namespace eo {
|
||||
|
||||
// #include "eo_inherit_bindings.hh"
|
||||
|
||||
// #endif // EFL_CXX_INHERIT_HH
|
|
@ -1,141 +0,0 @@
|
|||
|
||||
#ifndef EFL_CXX_DETAIL_INHERIT_BINDINGS_HH
|
||||
#define EFL_CXX_DETAIL_INHERIT_BINDINGS_HH
|
||||
|
||||
#include <typeinfo>
|
||||
#include <eina_integer_sequence.hh>
|
||||
|
||||
namespace efl { namespace eo { namespace detail {
|
||||
|
||||
/// @addtogroup Efl_Cxx_Detail
|
||||
/// @{
|
||||
|
||||
/// @internal
|
||||
///
|
||||
/// @brief Sums up the number of <em>EO Operations</em> of each class
|
||||
/// passed as argument to the template.
|
||||
///
|
||||
/// @see efl::eo::detail::operation_description_class_size
|
||||
///
|
||||
template <typename... E>
|
||||
struct operation_description_size;
|
||||
|
||||
template <typename E0, typename... E>
|
||||
struct operation_description_size<E0, E...>
|
||||
{
|
||||
static const int value = operation_description_class_size<E0>::value +
|
||||
operation_description_size<E...>::value;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct operation_description_size<>
|
||||
{
|
||||
static const int value = 0;
|
||||
};
|
||||
|
||||
template <typename... Args>
|
||||
void call_varargs(Args...)
|
||||
{
|
||||
}
|
||||
|
||||
/// @internal
|
||||
///
|
||||
/// @brief The procedure that actually is invoked when the constructor
|
||||
/// of @c D is sought from the <em>EO Subsystem</em>.
|
||||
///
|
||||
/// @param self A pointer to @p obj's private data.
|
||||
/// @param this_ A void pointer to the opaque <em>EO Class</em> ---
|
||||
/// passed as <em>user data</em>.
|
||||
///
|
||||
inline
|
||||
void inherit_constructor_impl(Eo*, Inherit_Private_Data* self, void* this_)
|
||||
{
|
||||
self->this_ = this_;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
int initialize_operation_description(detail::tag<void>, void*);
|
||||
|
||||
template <std::size_t I, typename... E>
|
||||
struct
|
||||
operation_description_index
|
||||
{
|
||||
typedef std::tuple<E...> tuple_type;
|
||||
static const std::size_t value =
|
||||
detail::operation_description_size
|
||||
< typename std::tuple_element
|
||||
<I-1, tuple_type>::type >::value +
|
||||
operation_description_index<I-1, E...>::value;
|
||||
};
|
||||
template <typename... E>
|
||||
struct
|
||||
operation_description_index<0u, E...>
|
||||
{
|
||||
static const std::size_t value = 0u;
|
||||
};
|
||||
|
||||
/// @internal
|
||||
///
|
||||
/// @brief This function is responsible for declaring a new <em>EO C
|
||||
/// Class</em> representing @p D within <em>EO Subsystem</em>.
|
||||
///
|
||||
/// @param D The derived class
|
||||
/// @param P The parent class
|
||||
/// @param En Class extensions (either mixins or interfaces)
|
||||
/// @param Args An heterogeneous list of arguments to be passed to the
|
||||
/// constructor of this class.
|
||||
///
|
||||
/// @see efl::eo::inherit::inherit
|
||||
///
|
||||
template <typename D, typename... E, std::size_t ... S>
|
||||
Eo_Class const* create_class(eina::index_sequence<S...>)
|
||||
{
|
||||
static const Eo_Class* my_class = NULL;
|
||||
static Eo_Op_Description op_descs
|
||||
[ detail::operation_description_size<E...>::value + 2 ];
|
||||
|
||||
op_descs[detail::operation_description_size<E...>::value].func =
|
||||
reinterpret_cast<void*>
|
||||
(
|
||||
&detail::inherit_constructor_impl
|
||||
);
|
||||
op_descs[detail::operation_description_size<E...>::value].api_func =
|
||||
reinterpret_cast<void*>
|
||||
(
|
||||
&detail::inherit_constructor
|
||||
);
|
||||
op_descs[detail::operation_description_size<E...>::value].op_type = EO_OP_TYPE_REGULAR;
|
||||
|
||||
op_descs[detail::operation_description_size<E...>::value+1].func = 0;
|
||||
op_descs[detail::operation_description_size<E...>::value+1].api_func = 0;
|
||||
op_descs[detail::operation_description_size<E...>::value+1].op_type = EO_OP_TYPE_INVALID;
|
||||
|
||||
typedef inherit<D, E...> inherit_type;
|
||||
using namespace detail;
|
||||
call_varargs(
|
||||
initialize_operation_description<inherit_type>
|
||||
(detail::tag<E>(),
|
||||
&op_descs[operation_description_index<S, E...>::value]) ...
|
||||
);
|
||||
|
||||
//locks
|
||||
if(!my_class)
|
||||
{
|
||||
static Eo_Class_Description class_desc = {
|
||||
EO_VERSION,
|
||||
"Eo C++ Class",
|
||||
EO_CLASS_TYPE_REGULAR,
|
||||
EO_CLASS_DESCRIPTION_OPS(op_descs),
|
||||
NULL,
|
||||
sizeof(detail::Inherit_Private_Data),
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
my_class = detail::do_eo_class_new<E...>(class_desc);
|
||||
}
|
||||
return my_class;
|
||||
}
|
||||
|
||||
} } } // namespace efl { namespace eo { namespace detail {
|
||||
|
||||
#endif // EFL_CXX_DETAIL_INHERIT_BINDINGS_HH
|
Loading…
Reference in New Issue