MEL
Microthread & Execution library
mel::mpl Namespace Reference

metaprogramming library More...

Classes

struct  _if
 
struct  _if< false, T, U >
 
struct  _ifInt
 
struct  _ifInt< false, t, u >
 
class  AsPtr
 
class  Assign
 
class  NullType
 
struct  EmptyType
 
struct  binary
 
struct  binary< 0 >
 
class  Small
 
class  Big
 
struct  AnyType
 
struct  Conversion
 
class  Creator
 
class  Creator< T, void >
 
struct  Compare
 
struct  Compare< false, defaultValue >
 
class  Chainer
 
class  CreateWideInheritance
 
struct  Int2Type
 
struct  isSame
 
struct  isSame< T, T >
 
struct  FunctorWrapper
 
struct  VariablePosBase
 
struct  VariablePos
 
class  Fixed1
 
class  Fixed1< NullType >
 
class  Fixed2
 
class  Fixed2< NullType >
 
class  Fixed3
 
class  Fixed3< NullType >
 
class  Fixed4
 
class  Fixed4< NullType >
 
class  Fixed5
 
class  Fixed5< NullType >
 
class  Fixed6
 
class  Fixed6< NullType >
 
class  Linker_Base
 
class  Linker_Base< TListPos, 1 >
 
class  Linker_Base< TListPos, 2 >
 
class  Linker_Base< TListPos, 3 >
 
class  Linker_Base< TListPos, 4 >
 
class  Linker_Base< TListPos, 5 >
 
class  Linker_Base< TListPos, 6 >
 
class  Linker
 
class  MEncapsulate
 
class  MEncapsulate< isConst, T, PointerType, TRet >
 
class  NullFunctor
 
class  NullFunctor< void >
 
class  ParamAdder
 create new functor with new param for operator() AFTER any other param usage: suppose we have a function with signature: int f( ) and we need this function to adapt to a function with one argument of, for example, float type. Then do: addParam<int,float,void>( f ); That create a function wich receives a float, so you call that function this way: addParam<int,float,void>( f )( 6.7f ); where first argument is return type, second is new type and else original arguments More...
 
class  ParamAdder_prev
 
struct  Ref
 
class  ReturnAdaptor
 
struct  StaticAssert
 
struct  StaticAssert< false >
 
class  Tuple
 
struct  Type2Type
 
struct  PointerTraits
 
struct  PointerTraits< U * >
 
struct  PointerTraits< U *& >
 
struct  PointerToMemberTraits
 
struct  PointerToMemberTraits< U V::* >
 
struct  FunctionPointerTraits
 
struct  FunctionPointerTraits< U(void) >
 
struct  FunctionPointerTraits< U(Arg1) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2, Arg3) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2, Arg3, Arg4) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2, Arg3, Arg4, Arg5) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) >
 
struct  FunctionPointerTraits< U(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) >
 
struct  ReferenceTraits
 
struct  ReferenceTraits< U & >
 
struct  ReferenceTraits< void >
 
struct  UnConst
 
struct  UnConst< const U >
 
struct  UnConst< const U & >
 
struct  UnRef
 
struct  UnRef< U & >
 
struct  IsConst
 
struct  IsConst< U const >
 
struct  IntTraits
 
struct  IntTraits< int >
 
struct  UIntTraits
 
struct  UIntTraits< unsigned int >
 
struct  BoolTraits
 
struct  BoolTraits< bool >
 
struct  CharTraits
 
struct  CharTraits< char >
 
struct  UCharTraits
 
struct  UCharTraits< unsigned char >
 
struct  FloatTraits
 
struct  FloatTraits< float >
 
struct  DoubleTraits
 
struct  DoubleTraits< double >
 
struct  VoidTraits
 
struct  VoidTraits< void >
 
struct  VolatileTraits
 
struct  VolatileTraits< U volatile >
 
struct  ComparableTraits
 
struct  ClassTraits
 
class  TypeTraits
 

Functions

template<class T >
AsPtr< T > asPtr (T object)
 
template<bool isFunctor, class T , class T2 >
Assign< T, T2, isFunctor > assign (T &p1, T2 p2)
 
template<class T >
void del_ptr (T *object)
 generic functor to delete pointers More...
 
template<bool defaultValue, class T >
bool equal (const T &origin, const typename TypeTraits< T >::ParameterType value)
 
template<VARIABLE_ARGS_NODEFAULT , class F1 , class F2 >
Chainer< F1, F2, VARIABLE_ARGS_DECL > chain (F1 f1, F2 f2)
 
template<class R , class F >
FunctorWrapper< F, R > functorWrapper (F f)
 helper function for argument deduction
 
template<class TRet , class TVariableList , class Arg1 , class T >
Linker< T, TRet, TVariableList, TYPELIST(Arg1)> linkFunctor (T functor, Arg1 arg1)
 
template<class TRet , class TVariableList , class Arg1 , class Arg2 , class T >
Linker< T, TRet, TVariableList, TYPELIST(Arg1, Arg2)> linkFunctor (T functor, Arg1 arg1, Arg2 arg2)
 
template<class TRet , class TVariableList , class Arg1 , class Arg2 , class Arg3 , class T >
Linker< T, TRet, TVariableList, TYPELIST(Arg1, Arg2, Arg3)> linkFunctor (T functor, Arg1 arg1, Arg2 arg2, Arg3 arg3)
 
template<class TRet , class TVariableList , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class T >
Linker< T, TRet, TVariableList, TYPELIST(Arg1, Arg2, Arg3, Arg4)> linkFunctor (T functor, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
 
template<class TRet , class TVariableList , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class T >
Linker< T, TRet, TVariableList, TYPELIST(Arg1, Arg2, Arg3, Arg4, Arg5)> linkFunctor (T functor, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5)
 
template<class TRet , class TVariableList , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class Arg6 , class T >
Linker< T, TRet, TVariableList, TYPELIST(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)> linkFunctor (T functor, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6)
 
template<class TRet , class T , VARIABLE_ARGS_NODEFAULT , class PointerType >
MEncapsulate< false, T, PointerType, TRet, VARIABLE_ARGS_DECL > makeMemberEncapsulate (TRet(T::*F)(VARIABLE_ARGS_DECL), PointerType owner)
 
template<class TRet , class T , VARIABLE_ARGS_NODEFAULT , class PointerType >
MEncapsulate< false, T, PointerType, TRet, VARIABLE_ARGS_DECL > makeMemberEncapsulate (TRet(T::*F)(VARIABLE_ARGS_DECL), PointerType owner, no_const_function_t)
 
template<class TRet , class T , VARIABLE_ARGS_NODEFAULT , class PointerType >
MEncapsulate< true, T, PointerType, TRet, VARIABLE_ARGS_DECL > makeMemberEncapsulate (TRet(T::*F)(VARIABLE_ARGS_DECL) const, PointerType owner, const_function_t)
 
template<class TRet , class T , class PointerType >
MEncapsulate< false, T, PointerType, TRet > makeMemberEncapsulate (TRet(T::*F)(), PointerType owner)
 
template<class TRet , class T , class PointerType >
MEncapsulate< false, T, PointerType, TRet > makeMemberEncapsulate (TRet(T::*F)(), PointerType owner, no_const_function_t)
 
template<class TRet , class T , class PointerType >
MEncapsulate< true, T, PointerType, TRet > makeMemberEncapsulate (TRet(T::*F)() const, PointerType owner, const_function_t)
 
template<class TRet , class NewArg , VARIABLE_ARGS_NODEFAULT , class T >
ParamAdder< T, TRet, VARIABLE_ARGS_DECL, NewArg > addParam (T functor)
 
template<class TRet , class NewArg , VARIABLE_ARGS_NODEFAULT , class T >
ParamAdder_prev< T, TRet, VARIABLE_ARGS_DECL, NewArg > addParam_prev (T functor)
 
template<class T >
Ref< T > createRef (T &obj)
 
template<VARIABLE_ARGS_NODEFAULT , class T , class TRet >
ReturnAdaptor< TRet, T, VARIABLE_ARGS_DECL > returnAdaptor (T &&functor, TRet retorno)
 
template<class T >
ReturnAdaptor< void, T, void > returnAdaptorVoid (T &&functor)
 
Small operator== (const AnyType &, const AnyType &)
 

Variables

static const NullType nullType = NullType()
 
static const VariablePos< 1 > _v1 = VariablePos<1>()
 
static const VariablePos< 2 > _v2 = VariablePos<2>()
 
static const VariablePos< 3 > _v3 = VariablePos<3>()
 
static const VariablePos< 4 > _v4 = VariablePos<4>()
 
static const VariablePos< 5 > _v5 = VariablePos<5>()
 
static const VariablePos< 6 > _v6 = VariablePos<6>()
 

Detailed Description

metaprogramming library

Remarks
This library dates back to the early 2000s, when no C++11 existed, and so all its metaprogramming stuff. Most of this library can be replaced by equivalent C++11 functionalities, but because it's heavily used in the code, it's not removed. Slowly, its use is being replaced with the C++ facilities with the hope to be removed some day

Function Documentation

◆ del_ptr()

template<class T >
void mel::mpl::del_ptr ( T *  object)

generic functor to delete pointers

◆ makeMemberEncapsulate()

template<class TRet , class T , VARIABLE_ARGS_NODEFAULT , class PointerType >
MEncapsulate<true,T,PointerType,TRet,VARIABLE_ARGS_DECL> mel::mpl::makeMemberEncapsulate ( TRet(T::*)(VARIABLE_ARGS_DECL) const  F,
PointerType  owner,
const_function_t   
)
inline

specialization for const members

◆ operator==()

Small mel::mpl::operator== ( const AnyType ,
const AnyType  
)