File kernel/src/utils/SiconosTools/VisitorMaker.hpp#

Go to the source code of this file

Generation of visitors on base classes.

Defines

REGISTER(X)
REGISTER_STRUCT(X)
REGISTER_BASE(X, Y)
REGISTER_BASE_EXTERN(X, Y)
REGISTER(X)
REGISTER_STRUCT(X)
REGISTER_BASE(X, Y)
REGISTER_BASE_EXTERN(X, Y)
namespace Experimental#
struct TypeNotFound#
template<typename T, typename Action, typename BaseType>
struct Call : public Action#

Public Types

typedef Call<T, Action, BaseType> type#

Public Functions

inline virtual void visit(const T &x)#
template<typename T, typename Action>
struct Call<T, Action, TypeNotFound> : public Action#

Public Types

typedef Call<T, Action, TypeNotFound> type#

Public Functions

inline virtual void visit(const T &x)#
template<typename T, typename Pred>
class VisitMaker#

Public Types

typedef Call<T, typename Pred::Action, BaseType>::type Action#

Private Types

typedef boost::mpl::fold<typename Pred::Action::Base, TypeNotFound, boost::mpl::if_<boost::is_base_of<boost::mpl::_2, T>, boost::mpl::_2, boost::mpl::_1>>::type BaseType#
template<typename T>
struct GlobalVisitor#
struct empty#
template<typename T1 = empty, typename T2 = empty, typename T3 = empty, typename T4 = empty, typename T5 = empty, typename T6 = empty, typename T7 = empty, typename T8 = empty, typename T9 = empty>
struct Classes#

Public Types

typedef boost::mpl::vector<T1, T2, T3, T4, T5, T6, T7, T8, T9> Base#
template<typename T1>
struct Classes<T1, empty, empty, empty, empty, empty, empty, empty, empty>#

Public Types

typedef boost::mpl::vector<T1> Base#
template<typename T1, typename T2>
struct Classes<T1, T2, empty, empty, empty, empty, empty, empty, empty>#

Public Types

typedef boost::mpl::vector<T1, T2> Base#
template<typename T1, typename T2, typename T3>
struct Classes<T1, T2, T3, empty, empty, empty, empty, empty, empty>#

Public Types

typedef boost::mpl::vector<T1, T2, T3> Base#
template<typename T1, typename T2, typename T3, typename T4>
struct Classes<T1, T2, T3, T4, empty, empty, empty, empty, empty>#

Public Types

typedef boost::mpl::vector<T1, T2, T3, T4> Base#
template<typename T1, typename T2, typename T3, typename T4, typename T5>
struct Classes<T1, T2, T3, T4, T5, empty, empty, empty, empty>#

Public Types

typedef boost::mpl::vector<T1, T2, T3, T4, T5> Base#
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
struct Classes<T1, T2, T3, T4, T5, T6, empty, empty, empty>#

Public Types

typedef boost::mpl::vector<T1, T2, T3, T4, T5, T6> Base#
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
struct Classes<T1, T2, T3, T4, T5, T6, T7, empty, empty>#

Public Types

typedef boost::mpl::vector<T1, T2, T3, T4, T5, T6, T7> Base#
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
struct Classes<T1, T2, T3, T4, T5, T6, T7, T8, empty>#

Public Types

typedef boost::mpl::vector<T1, T2, T3, T4, T5, T6, T7, T8> Base#
template<typename C, typename T>
struct Filter#

Public Types

typedef boost::mpl::fold<typename C::Base, _T, VisitMaker<boost::mpl::_2, boost::mpl::_1>>::type Make#
struct _T : public T, public C#

Public Types

typedef _T Action#
template<typename C, typename T>
struct Visitor#

Public Types

typedef Filter<C, T>::Make LocalFilter#
typedef GlobalVisitor<LocalFilter>::Make Make#