Mirror reflection library 0.5.13
Classes | Namespaces | Defines | Functions

mirror/meta_object_tags.hpp File Reference

Declaration of trait/tag types for tag dispatching for Mirror's meta-objects. More...

#include <mirror/config.hpp>
#include <type_traits>
Include dependency graph for meta_object_tags.hpp:

Go to the source code of this file.

Classes

struct  mirror::non_meta_object_tag
 Tag used for recognizing types which are not Mirror meta-objects. More...
struct  mirror::meta_object_tag
 Tag for types which conform to the Mirror's MetaObject concept. More...
struct  mirror::meta_named_object_tag
 Tag for types conforming to the Mirror's MetaNamedObject concept. More...
struct  mirror::meta_meta_object_tag
 Tag for types conforming to the Mirror's MetaMetaObject concept. More...
struct  mirror::meta_scoped_object_tag
 Tag for types conforming to the Mirror's MetaScopedObject concept. More...
struct  mirror::meta_named_scoped_object_tag
 Tag for types conforming to the Mirror's MetaNamedScopedObject concept. More...
struct  mirror::meta_scope_tag
 Tag for types conforming to the Mirror's MetaScope concept. More...
struct  mirror::meta_unspecified_scope_tag
 Tag for types conforming to the MetaScope concept for an unspecified scope. More...
struct  mirror::meta_namespace_tag
 Tag for types conforming to the Mirror's MetaNamespace concept. More...
struct  mirror::meta_global_scope_tag
 Tag for types conforming to the MetaNamespace concept for the global scope. More...
struct  mirror::meta_type_tag
 Tag for types conforming to the Mirror's MetaType concept. More...
struct  mirror::meta_templated_type_tag
 Tag for types conforming to the Mirror's MetaTemplatedType concept. More...
struct  mirror::meta_type_template_tag
 Tag for types conforming to the Mirror's MetaTypeTemplate concept. More...
struct  mirror::meta_typedef_tag
 Tag for types conforming to the Mirror's MetaTypedef concept. More...
struct  mirror::meta_class_tag
 Tag for types conforming to the Mirror's MetaClass concept. More...
struct  mirror::meta_class_member_tag
 Tag for types conforming to the Mirror's MetaClassMember concept. More...
struct  mirror::meta_templated_class_tag
 Tag for types conforming to the Mirror's MetaTemplatedClass concept. More...
struct  mirror::meta_enum_tag
 Tag for types conforming to the Mirror's MetaEnum concept. More...
struct  mirror::meta_enum_value_tag
 Tag for types conforming to the Mirror's MetaEnumValue concept. More...
struct  mirror::meta_inheritance_tag
 Tag for types conforming to the Mirror's MetaInheritance concept. More...
struct  mirror::meta_variable_tag
 Tag for types conforming to the Mirror's MetaVariable concept. More...
struct  mirror::meta_plain_variable_tag
 Tag for types conforming to the Mirror's MetaPlainVariable concept. More...
struct  mirror::meta_free_variable_tag
 Tag for types conforming to the Mirror's MetaFreeVariable concept. More...
struct  mirror::meta_plain_free_variable_tag
 Tag for types conforming to the Mirror's MetaPlainFreeVariable concept. More...
struct  mirror::meta_member_variable_tag
 Tag for types conforming to the Mirror's MetaMemberVariable concept. More...
struct  mirror::meta_plain_member_variable_tag
 Tag for types conforming to the Mirror's MetaPlainMemberVariable concept. More...
struct  mirror::meta_parameter_tag
 Tag for types conforming to the Mirror's MetaParameter concept. More...
struct  mirror::meta_function_tag
 Tag for types conforming to the Mirror's MetaFunction concept. More...
struct  mirror::meta_member_function_tag
 Tag for types conforming to the Mirror's MetaMemberFunction concept. More...
struct  mirror::meta_constructor_tag
 Tag for types conforming to the Mirror's MetaConstructor concept. More...
struct  mirror::meta_conversion_operator_tag
 Tag for types conforming to the Mirror's MetaConversionOperator concept. More...
struct  mirror::meta_overloaded_functions_tag
 Tag for types conforming to the Mirror's MetaOverloadedFunctions concept. More...
struct  mirror::meta_locator_tag
 Tag for types conforming to the Mirror's MetaLocator concept. More...
struct  mirror::meta_traversal_tag
 Tag for types conforming to the Mirror's MetaTraversal concept. More...
struct  mirror::meta_inserter_tag
 Tag for types conforming to the Mirror's MetaInserter concept. More...
struct  mirror::meta_eraser_tag
 Tag for types conforming to the Mirror's MetaEraser concept. More...
struct  mirror::meta_container_tag
 Tag for types conforming to the Mirror's MetaContainer concept. More...
struct  mirror::meta_object_category< T >
 Template meta-function for getting the category tag of a type. More...
struct  mirror::meta_object_kind< T, CategoryTags >
 Template meta-function for getting a category tag of a type. More...

Namespaces

namespace  mirror
 

All Mirror's types, classes, functions, etc. are defined in this namespace.


Defines

#define MIRROR_META_OBJECT_NAME_object(MACRO, DATA)   MACRO(Object, DATA)
#define MIRROR_FOR_EACH_MO_BASE_object(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_named_object(MACRO, DATA)   MACRO(NamedObject, DATA)
#define MIRROR_FOR_EACH_MO_BASE_named_object(MACRO, DATA, SEP_MACRO)   MACRO(object, DATA)
#define MIRROR_META_OBJECT_NAME_meta_object(MACRO, DATA)   MACRO(MetaObject, DATA)
#define MIRROR_FOR_EACH_MO_BASE_meta_object(MACRO, DATA, SEP_MACRO)   MACRO(named_object, DATA)
#define MIRROR_META_OBJECT_NAME_scoped_object(MACRO, DATA)   MACRO(ScopedObject, DATA)
#define MIRROR_FOR_EACH_MO_BASE_scoped_object(MACRO, DATA, SEP_MACRO)   MACRO(object, DATA)
#define MIRROR_META_OBJECT_NAME_named_scoped_object(MACRO, DATA)   MACRO(NamedScopedObject, DATA)
#define MIRROR_FOR_EACH_MO_BASE_named_scoped_object(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_scope(MACRO, DATA)   MACRO(Scope, DATA)
#define MIRROR_FOR_EACH_MO_BASE_scope(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_unspecified_scope(MACRO, DATA)   MACRO(Scope, DATA)
#define MIRROR_FOR_EACH_MO_BASE_unspecified_scope(MACRO, DATA, SEP_MACRO)   MACRO(scope, DATA)
#define MIRROR_META_OBJECT_NAME_namespace(MACRO, DATA)   MACRO(Namespace, DATA)
#define MIRROR_FOR_EACH_MO_BASE_namespace(MACRO, DATA, SEP_MACRO)   MACRO(scope, DATA)
#define MIRROR_META_OBJECT_NAME_global_scope(MACRO, DATA)   MACRO(GlobalScope, DATA)
#define MIRROR_FOR_EACH_MO_BASE_global_scope(MACRO, DATA, SEP_MACRO)   MACRO(namespace, DATA)
#define MIRROR_META_OBJECT_NAME_type(MACRO, DATA)   MACRO(Type, DATA)
#define MIRROR_FOR_EACH_MO_BASE_type(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_templated_type(MACRO, DATA)   MACRO(TemplatedType, DATA)
#define MIRROR_FOR_EACH_MO_BASE_templated_type(MACRO, DATA, SEP_MACRO)   MACRO(type, DATA)
#define MIRROR_META_OBJECT_NAME_type_template(MACRO, DATA)   MACRO(TypeTemplate, DATA)
#define MIRROR_FOR_EACH_MO_BASE_type_template(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_typedef(MACRO, DATA)   MACRO(Typedef, DATA)
#define MIRROR_FOR_EACH_MO_BASE_typedef(MACRO, DATA, SEP_MACRO)   MACRO(type, DATA)
#define MIRROR_META_OBJECT_NAME_class(MACRO, DATA)   MACRO(Class, DATA)
#define MIRROR_FOR_EACH_MO_BASE_class(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_class_member(MACRO, DATA)   MACRO(ClassMember, DATA)
#define MIRROR_FOR_EACH_MO_BASE_class_member(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_templated_class(MACRO, DATA)   MACRO(TemplatedClass, DATA)
#define MIRROR_FOR_EACH_MO_BASE_templated_class(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_enum(MACRO, DATA)   MACRO(Enum, DATA)
#define MIRROR_FOR_EACH_MO_BASE_enum(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_enum_value(MACRO, DATA)   MACRO(EnumValue, DATA)
#define MIRROR_FOR_EACH_MO_BASE_enum_value(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_inheritance(MACRO, DATA)   MACRO(Inheritance, DATA)
#define MIRROR_FOR_EACH_MO_BASE_inheritance(MACRO, DATA, SEP_MACRO)   MACRO(object, DATA)
#define MIRROR_META_OBJECT_NAME_variable(MACRO, DATA)   MACRO(Variable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_variable(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_plain_variable(MACRO, DATA)   MACRO(PlainVariable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_plain_variable(MACRO, DATA, SEP_MACRO)   MACRO(variable, DATA)
#define MIRROR_META_OBJECT_NAME_free_variable(MACRO, DATA)   MACRO(FreeVariable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_free_variable(MACRO, DATA, SEP_MACRO)   MACRO(variable, DATA)
#define MIRROR_META_OBJECT_NAME_plain_free_variable(MACRO, DATA)   MACRO(PlainFreeVariable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_plain_free_variable(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_member_variable(MACRO, DATA)   MACRO(MemberVariable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_member_variable(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_plain_member_variable(MACRO, DATA)   MACRO(PlainMemberVariable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_plain_member_variable(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_parameter(MACRO, DATA)   MACRO(Parameter, DATA)
#define MIRROR_FOR_EACH_MO_BASE_parameter(MACRO, DATA, SEP_MACRO)   MACRO(variable, DATA)
#define MIRROR_META_OBJECT_NAME_function(MACRO, DATA)   MACRO(Function, DATA)
#define MIRROR_FOR_EACH_MO_BASE_function(MACRO, DATA, SEP_MACRO)   MACRO(scope, DATA)
#define MIRROR_META_OBJECT_NAME_member_function(MACRO, DATA)   MACRO(MemberFunction, DATA)
#define MIRROR_FOR_EACH_MO_BASE_member_function(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_constructor(MACRO, DATA)   MACRO(Constructor, DATA)
#define MIRROR_FOR_EACH_MO_BASE_constructor(MACRO, DATA, SEP_MACRO)
#define MIRROR_META_OBJECT_NAME_conversion_operator(MACRO, DATA)   MACRO(ConversionOperator, DATA)
#define MIRROR_FOR_EACH_MO_BASE_conversion_operator(MACRO, DATA, SEP_MACRO)   MACRO(member_function, DATA)
#define MIRROR_META_OBJECT_NAME_overloaded_functions(MACRO, DATA)   MACRO(OverloadedFunctions, DATA)
#define MIRROR_FOR_EACH_MO_BASE_overloaded_functions(MACRO, DATA, SEP_MACRO)   MACRO(named_scoped_object, DATA)
#define MIRROR_META_OBJECT_NAME_locator(MACRO, DATA)   MACRO(Locator, DATA)
#define MIRROR_FOR_EACH_MO_BASE_locator(MACRO, DATA, SEP_MACRO)   MACRO(named_object, DATA)
#define MIRROR_META_OBJECT_NAME_traversal(MACRO, DATA)   MACRO(Traversal, DATA)
#define MIRROR_FOR_EACH_MO_BASE_traversal(MACRO, DATA, SEP_MACRO)   MACRO(named_object, DATA)
#define MIRROR_META_OBJECT_NAME_inserter(MACRO, DATA)   MACRO(Inserter, DATA)
#define MIRROR_FOR_EACH_MO_BASE_inserter(MACRO, DATA, SEP_MACRO)   MACRO(named_object, DATA)
#define MIRROR_META_OBJECT_NAME_eraser(MACRO, DATA)   MACRO(Eraser, DATA)
#define MIRROR_FOR_EACH_MO_BASE_eraser(MACRO, DATA, SEP_MACRO)   MACRO(named_object, DATA)
#define MIRROR_META_OBJECT_NAME_container(MACRO, DATA)   MACRO(Container, DATA)
#define MIRROR_FOR_EACH_MO_BASE_container(MACRO, DATA, SEP_MACRO)   MACRO(scoped_object, DATA)
#define MIRROR_FOR_EACH_META_OBJECT(MACRO, DATA)
#define MIRROR_META_OBJECT_NICE_NAME(OBJECT, MACRO, DATA)   MIRROR_META_OBJECT_NAME_##OBJECT(MACRO, DATA)
#define MIRROR_HLPR_MO_NICE_NAME_STR(OBJECT, X)   #OBJECT
#define MIRROR_META_OBJECT_NICE_NAME_STR(OBJECT)   MIRROR_META_OBJECT_NICE_NAME(OBJECT, MIRROR_HLPR_MO_NICE_NAME_STR, _)
#define MIRROR_FOR_EACH_META_OBJECT_BASE(OBJECT, MACRO, DATA, SEP_MACRO)   MIRROR_FOR_EACH_MO_BASE_##OBJECT(MACRO, DATA, SEP_MACRO)
#define MIRROR_HLPR_IMPLEMENT_EVAL_MO_TAG(OBJECT, I, X)

Functions

template<class T >
meta_object_category< T >::type mirror::categorize_meta_object (const T &inst)
 This function returns the meta-object category tag for an instance.

Detailed Description

Declaration of trait/tag types for tag dispatching for Mirror's meta-objects.

Copyright 2008-2011 Matus Chochlik. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


Define Documentation

#define MIRROR_FOR_EACH_MO_BASE_class (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(type, DATA) \
    SEP_MACRO() \
    MACRO(scope, DATA)
#define MIRROR_FOR_EACH_MO_BASE_constructor (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(function, DATA) \
    SEP_MACRO() \
    MACRO(class_member, DATA)
#define MIRROR_FOR_EACH_MO_BASE_enum (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(type, DATA) \
    SEP_MACRO() \
    MACRO(scope, DATA)
#define MIRROR_FOR_EACH_MO_BASE_member_function (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(function, DATA) \
    SEP_MACRO() \
    MACRO(class_member, DATA)
#define MIRROR_FOR_EACH_MO_BASE_member_variable (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(variable, DATA) \
    SEP_MACRO() \
    MACRO(class_member, DATA)
#define MIRROR_FOR_EACH_MO_BASE_named_scoped_object (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(named_object, DATA) \
    SEP_MACRO() \
    MACRO(scoped_object, DATA)
#define MIRROR_FOR_EACH_MO_BASE_plain_free_variable (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(free_variable, DATA) \
    SEP_MACRO() \
    MACRO(plain_variable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_plain_member_variable (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(member_variable, DATA) \
    SEP_MACRO() \
    MACRO(plain_variable, DATA)
#define MIRROR_FOR_EACH_MO_BASE_templated_class (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(templated_type, DATA) \
    SEP_MACRO() \
    MACRO(class, DATA)
#define MIRROR_HLPR_IMPLEMENT_EVAL_MO_TAG (   OBJECT,
  I,
 
)
Value:
template <> \
struct eval_meta_object_tag< mirror::meta_ ## OBJECT ## _tag > \
{ \
    typedef mirror::meta_ ## OBJECT ## _tag type; \
};

Copyright © 2006-2011 Matus Chochlik, University of Zilina, Zilina, Slovakia.
<matus.chochlik -at- fri.uniza.sk>
<chochlik -at -gmail.com>
Documentation generated on Fri Dec 16 2011 by Doxygen (version 1.7.3).
Important note: Although the 'boostified' version of Mirror uses the Boost C++ libraries Coding Guidelines and is implemented inside of the boost namespace, it IS NOT an officially reviewed and accepted Boost library. Mirror is being developed with the intention to be submitted for review for inclusion to the Boost C++ libraries.