MIRA
Classes | Namespaces | Macros | Typedefs
MetaSerializer.h File Reference

Serializer for creating meta information out of types using serialization. More...

#include <iostream>
#include <type_traits>
#include <platform/Platform.h>
#include <utils/MakeString.h>
#include <utils/IsDefaultConstructible.h>
#include <serialization/BinarySerializer.h>
#include <serialization/IsNotMetaSerializable.h>
#include <serialization/adapters/boost/optional.hpp>
#include <serialization/adapters/std/list>
#include <serialization/adapters/std/vector>
Include dependency graph for MetaSerializer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  TypeMeta
 Meta Type information. More...
 
struct  MethodMeta
 Meta information for RPC methods. More...
 
struct  MethodMeta::Parameter
 
class  CompoundMeta
 Meta information for complex compounds, like classes and structs. More...
 
struct  CompoundMeta::Member
 A single member of the compound. More...
 
class  MetaTypeDatabase
 Database that stores all meta type information and provides additional functions for accessing the database. More...
 
class  IsCollection< MetaTypeDatabase >
 
class  MetaSerializer
 
struct  MetaSerializer::TypeWithoutObjectHelper< T, bool >
 
struct  MetaSerializer::TypeWithoutObjectHelper< T, true >
 
struct  MetaSerializer::TypeWithoutObjectHelper< T *, true >
 
struct  MetaSerializer::TypeWithoutObjectAbstractHelper< T, bool >
 
struct  MetaSerializer::TypeWithoutObjectAbstractHelper< T, true >
 
struct  MetaSerializer::TypeWithoutObjectAbstractHelper< T *, true >
 

Namespaces

 mira
 specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
 

Macros

#define META_GEN_METHODS(z, n, _)
 
#define META_GEN_METHODS_NAME_DESC(z, n, _)   name##n, description##n
 
#define META_GEN_METHODS_PARAMDESC(z, n, _)
 
#define META_GEN_METHODS_PARAMDESCSAMPLE(z, n, _)
 
#define META_GEN_METHODS_WRONG_ARGUMENT_NUMBER(z, n, _)
 
#define META_MAKE_METHODMETA_PUSH_PARAMETER(z, n, _)   m->parameters.push_back(MethodMeta::Parameter(createMetaHelper<P##n>()));
 
#define META_MAKE_METHODMETA(z, n, _)
 
#define META_MAKE_METHODMETA_PUSH_PARAMETERDESC(z, n, _)
 
#define META_MAKE_METHODMETA_CONSTSTRINGREF_NAME_DESC(z, n, _)   const std::string& name##n, const std::string& description##n
 
#define META_MAKE_METHODMETA_PARAMETERDESC(z, n, _)
 

Typedefs

typedef boost::shared_ptr< TypeMeta > TypeMetaPtr
 
typedef boost::shared_ptr< MethodMeta > MethodMetaPtr
 
typedef boost::shared_ptr< CompoundMeta > CompoundMetaPtr
 

Detailed Description

Serializer for creating meta information out of types using serialization.

Author
Tim Langner, Erik Einhorn
Date
2011/06/18

Macro Definition Documentation

◆ META_GEN_METHODS

#define META_GEN_METHODS (   z,
  n,
 
)
Value:
template<typename R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P)> \
void method(const char* name, R (*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)), const char* comment) \
{ \
createMethodMeta<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(name, comment); \
} \
\
template<typename R, typename Class BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P)> \
void method(const char* name, R (Class::*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)), Class* This, const char* comment)\
{ \
createMethodMeta<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(name, comment); \
} \
\
template<typename R, typename Class BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P)> \
void method(const char* name, R (Class::*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)) const, Class* This, const char* comment) \
{ \
createMethodMeta<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(name, comment); \
} \
\
template<typename R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P)> \
void method(const char* name, boost::function<R (BOOST_PP_ENUM_PARAMS_Z(z,n,P))> fn, const char* comment) \
{ \
createMethodMeta<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(name, comment); \
}

◆ META_GEN_METHODS_NAME_DESC

#define META_GEN_METHODS_NAME_DESC (   z,
  n,
 
)    name##n, description##n

◆ META_GEN_METHODS_PARAMDESC

#define META_GEN_METHODS_PARAMDESC (   z,
  n,
 
)

◆ META_GEN_METHODS_PARAMDESCSAMPLE

#define META_GEN_METHODS_PARAMDESCSAMPLE (   z,
  n,
 
)
Value:
template<typename R, BOOST_PP_ENUM(n,RPCGEN_CALL_TYPENAME_PARAM_DECL,nil)> \
void method(const char* name, R (*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)), \
const char* comment, BOOST_PP_ENUM(n,RPCGEN_CALL_NAME_DESC_SAMPLE_DECL,nil)) \
{ \
method(name, fn, comment, BOOST_PP_ENUM(n,META_GEN_METHODS_NAME_DESC,nil)); \
} \
\
template<typename R, typename Class, BOOST_PP_ENUM(n,RPCGEN_CALL_TYPENAME_PARAM_DECL,nil)> \
void method(const char* name, R (Class::*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)), Class* This, \
const char* comment, BOOST_PP_ENUM(n,RPCGEN_CALL_NAME_DESC_SAMPLE_DECL,nil)) \
{ \
method(name, fn, This, comment, BOOST_PP_ENUM(n,META_GEN_METHODS_NAME_DESC,nil)); \
} \
\
template<typename R, typename Class, BOOST_PP_ENUM(n,RPCGEN_CALL_TYPENAME_PARAM_DECL,nil)> \
void method(const char* name, R (Class::*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)) const, Class* This, \
const char* comment, BOOST_PP_ENUM(n,RPCGEN_CALL_NAME_DESC_SAMPLE_DECL,nil)) \
{ \
method(name, fn, This, comment, BOOST_PP_ENUM(n,META_GEN_METHODS_NAME_DESC,nil)); \
} \
\
template<typename R, BOOST_PP_ENUM(n,RPCGEN_CALL_TYPENAME_PARAM_DECL,nil)> \
void method(const char* name, boost::function<R (BOOST_PP_ENUM_PARAMS_Z(z,n,P))> fn, \
const char* comment, BOOST_PP_ENUM(n,RPCGEN_CALL_NAME_DESC_SAMPLE_DECL,nil)) \
{ \
method(name, fn, comment, BOOST_PP_ENUM(n,META_GEN_METHODS_NAME_DESC,nil)); \
}
#define META_GEN_METHODS_NAME_DESC(z, n, _)
Definition: MetaSerializer.h:768

◆ META_GEN_METHODS_WRONG_ARGUMENT_NUMBER

#define META_GEN_METHODS_WRONG_ARGUMENT_NUMBER (   z,
  n,
 
)
Value:
template<typename R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P), typename... Args> \
void method(const char* name, R (*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)), \
const char* comment, Args...) \
{ \
invalid_method<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(); \
} \
template<typename R, typename Class BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P), typename... Args> \
void method(const char* name, R (Class::*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)), Class* This, \
const char* comment, Args...) \
{ \
invalid_method<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(); \
} \
template<typename R, typename Class BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P), typename... Args> \
void method(const char* name, R (Class::*fn)(BOOST_PP_ENUM_PARAMS_Z(z,n,P)) const, Class* This, \
const char* comment, Args...) \
{ \
invalid_method<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(); \
} \
template<typename R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P), typename... Args> \
void method(const char* name, boost::function<R (BOOST_PP_ENUM_PARAMS_Z(z,n,P))> fn, \
const char* comment, Args...) \
{ \
invalid_method<R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,P)>(); \
}

◆ META_MAKE_METHODMETA_PUSH_PARAMETER

#define META_MAKE_METHODMETA_PUSH_PARAMETER (   z,
  n,
 
)    m->parameters.push_back(MethodMeta::Parameter(createMetaHelper<P##n>()));

◆ META_MAKE_METHODMETA

#define META_MAKE_METHODMETA (   z,
  n,
 
)
Value:
template <typename R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P)> \
void createMethodMeta(const std::string& name, const std::string& comment) { \
MethodMetaPtr m(new MethodMeta(name, comment)); \
m->returnType = createMetaOrVoidHelper<R>(); \
BOOST_PP_REPEAT_ ## z(n, META_MAKE_METHODMETA_PUSH_PARAMETER, nil) \
addMethod(m); \
}
#define META_MAKE_METHODMETA_PUSH_PARAMETER(z, n, _)
Definition: MetaSerializer.h:1097

◆ META_MAKE_METHODMETA_PUSH_PARAMETERDESC

#define META_MAKE_METHODMETA_PUSH_PARAMETERDESC (   z,
  n,
 
)
Value:
m->parameters.push_back( \
MethodMeta::Parameter(createMetaHelper<P##n>(), \
name##n, description##n));

◆ META_MAKE_METHODMETA_CONSTSTRINGREF_NAME_DESC

#define META_MAKE_METHODMETA_CONSTSTRINGREF_NAME_DESC (   z,
  n,
 
)    const std::string& name##n, const std::string& description##n

◆ META_MAKE_METHODMETA_PARAMETERDESC

#define META_MAKE_METHODMETA_PARAMETERDESC (   z,
  n,
 
)
Value:
template <typename R BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,n,typename P)> \
void createMethodMeta(const std::string& name, const std::string& comment, \
MethodMetaPtr m(new MethodMeta(name, comment)); \
m->returnType = createMetaOrVoidHelper<R>(); \
BOOST_PP_REPEAT_ ## z(n, META_MAKE_METHODMETA_PUSH_PARAMETERDESC, nil) \
addMethod(m); \
}
#define META_MAKE_METHODMETA_CONSTSTRINGREF_NAME_DESC(z, n, _)
Definition: MetaSerializer.h:1118
#define META_MAKE_METHODMETA_PUSH_PARAMETERDESC(z, n, _)
Definition: MetaSerializer.h:1113