Mirror reflection library 0.5.13
Classes | Namespaces | Defines | Typedefs | Functions

mirror/specifier_tags.hpp File Reference

Declaration of tags for various specifier keywords like virtual, public/protected/private, static, etc. More...

#include <mirror/preprocessor.hpp>
#include <mirror/meta_prog/range.hpp>
#include <string>
Include dependency graph for specifier_tags.hpp:

Go to the source code of this file.

Classes

struct  mirror::spec__tag
 Tag for a "non-specifier". More...
struct  mirror::spec_inheritance_type_tag
 Common base for inheritance type tags. More...
struct  mirror::spec_virtual_tag
 Tag indicating that the base level construct is virtual. More...
struct  mirror::spec_non_virtual_tag
 Tag indicating that the base level construct is non-virtual. More...
struct  mirror::spec_storage_class_tag
 Common base for storage class or linkage tags. More...
struct  mirror::spec_static_tag
 Tag indicating that the base level construct has static storage class. More...
struct  mirror::spec_mutable_tag
 Tag indicating that the base level construct has mutable storage class. More...
struct  mirror::spec_auto_tag
 Tag indicating that the base level construct has automatic storage class. More...
struct  mirror::spec_extern_tag
 Tag indicating that the base level construct has extern storage class. More...
struct  mirror::spec_register_tag
 Tag indicating that the base level construct has register storage class. More...
struct  mirror::spec_thread_local_tag
 Tag indicating that the base level construct has thread_local storage class. More...
struct  mirror::spec_constness_tag
 Common base for constness tags. More...
struct  mirror::spec_const_tag
 Tag indicating that the base level construct is const. More...
struct  mirror::spec_non_const_tag
 Tag indicating that the base level construct is not const. More...
struct  mirror::spec_access_type_tag
 Common base for access type tags. More...
struct  mirror::spec_private_tag
 Tag indicating that the base level construct has private access. More...
struct  mirror::spec_protected_tag
 Tag indicating that the base level construct has protected access. More...
struct  mirror::spec_public_tag
 Tag indicating that the base level construct has public access. More...
struct  mirror::spec_elaborated_type_tag
 Common base for elaborated type tags. More...
struct  mirror::spec_struct_tag
 Tag indicating that the reflected elaborated type is declared as 'struct'. More...
struct  mirror::spec_class_tag
 Tag indicating that the reflected elaborated type is declared as 'class'. More...
struct  mirror::spec_union_tag
 Tag indicating that the reflected elaborated type is declared as 'union'. More...
struct  mirror::spec_enum_tag
 Tag indicating that the reflected elaborated type is declared as 'enum'. More...
struct  mirror::spec_type_tag
 Tag indicating that the reflected type is a non-elaborated type. More...
struct  mirror::spec___tag
 Special specifier tag for selecting the default specifier in a context. More...
struct  mirror::type_category< T >
 Meta-function template returning the ElaboratedTypeTag for a type. More...
struct  mirror::inheritance_type_tags
 Returns a range of all inheritance type specifier tags. More...
struct  mirror::storage_class_tags
 Returns a range of all storage class specifier tags. More...
struct  mirror::constness_tags
 Returns a range of all constness specifier tags. More...
struct  mirror::access_type_tags
 Returns a range of all access type specifier tags. More...
struct  mirror::elaborated_type_tags
 Returns a range of all elaborated type specifier tags. More...

Namespaces

namespace  mirror
 

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


Defines

#define MIRROR_IMPLEMENT_SPECIFIER_TAG_KEYWORD_FUNCTIONS(KEYWORD_STR, UID)
#define MIRROR_FOR_EACH_SPEC_BASE_none(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_inheritance_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_TYPE_inheritance_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_virtual(MACRO, DATA, SEP_MACRO)   MACRO(inheritance_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_non_virtual(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_storage_class(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_TYPE_storage_class(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_static(MACRO, DATA, SEP_MACRO)   MACRO(storage_class, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_mutable(MACRO, DATA, SEP_MACRO)   MACRO(storage_class, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_auto(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_extern(MACRO, DATA, SEP_MACRO)   MACRO(storage_class, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_register(MACRO, DATA, SEP_MACRO)   MACRO(storage_class, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_thread_local(MACRO, DATA, SEP_MACRO)   MACRO(storage_class, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_constness(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_TYPE_constness(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_const(MACRO, DATA, SEP_MACRO)   MACRO(constness, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_non_const(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_access_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_TYPE_access_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_private(MACRO, DATA, SEP_MACRO)   MACRO(access_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_protected(MACRO, DATA, SEP_MACRO)   MACRO(access_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_public(MACRO, DATA, SEP_MACRO)   MACRO(access_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_elaborated_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_TYPE_elaborated_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPEC_BASE_struct(MACRO, DATA, SEP_MACRO)   MACRO(elaborated_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_class(MACRO, DATA, SEP_MACRO)   MACRO(elaborated_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_union(MACRO, DATA, SEP_MACRO)   MACRO(elaborated_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_enum(MACRO, DATA, SEP_MACRO)   MACRO(elaborated_type, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_type(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPECIFIER(MACRO, DATA)
#define MIRROR_FOR_EACH_SPECIFIER_BASE(SPEC, MACRO, DATA, SEP_MACRO)   MIRROR_FOR_EACH_SPEC_BASE_##SPEC(MACRO, DATA, SEP_MACRO)
#define MIRROR_FOR_EACH_SPECIFIER_TYPE(SPEC, MACRO, DATA, SEP_MACRO)   MIRROR_FOR_EACH_SPEC_TYPE_##SPEC(MACRO, DATA, SEP_MACRO)
#define MIRROR_HLPR_MAKE_SPEC_TAG_LISTS(SPEC, X)   spec_ ## SPEC ## _tag

Typedefs

typedef spec__tag mirror::spec_none_tag

Functions

template<typename T >
type_category< T >::type mirror::categorize_type (const T &)
 Function returning the ElaboratedTypeTag for the type of its argument.

Detailed Description

Declaration of tags for various specifier keywords like virtual, public/protected/private, static, etc.

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_SPEC_BASE_auto (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(storage_class, DATA) \
    SEP_MACRO() \
    MACRO(none, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_non_const (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(constness, DATA) \
    SEP_MACRO() \
    MACRO(none, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_non_virtual (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(inheritance_type, DATA) \
    SEP_MACRO() \
    MACRO(none, DATA)
#define MIRROR_FOR_EACH_SPEC_BASE_type (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(elaborated_type, DATA) \
    SEP_MACRO() \
    MACRO(none, DATA)
#define MIRROR_FOR_EACH_SPEC_TYPE_access_type (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(private, DATA) \
    SEP_MACRO() \
    MACRO(protected, DATA) \
    SEP_MACRO() \
    MACRO(public, DATA)
#define MIRROR_FOR_EACH_SPEC_TYPE_constness (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(const, DATA) \
    SEP_MACRO() \
    MACRO(non_const, DATA)
#define MIRROR_FOR_EACH_SPEC_TYPE_elaborated_type (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(struct, DATA) \
    SEP_MACRO() \
    MACRO(class, DATA) \
    SEP_MACRO() \
    MACRO(union, DATA) \
    SEP_MACRO() \
    MACRO(enum, DATA) \
    SEP_MACRO() \
    MACRO(type, DATA)
#define MIRROR_FOR_EACH_SPEC_TYPE_inheritance_type (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(virtual, DATA) \
    SEP_MACRO() \
    MACRO(non_virtual, DATA)
#define MIRROR_FOR_EACH_SPEC_TYPE_storage_class (   MACRO,
  DATA,
  SEP_MACRO 
)
Value:
MACRO(static, DATA) \
    SEP_MACRO() \
    MACRO(mutable, DATA) \
    SEP_MACRO() \
    MACRO(auto, DATA) \
    SEP_MACRO() \
    MACRO(extern, DATA) \
    SEP_MACRO() \
    MACRO(register, DATA) \
    SEP_MACRO() \
    MACRO(thread_local, DATA)
#define MIRROR_FOR_EACH_SPECIFIER (   MACRO,
  DATA 
)
Value:
MACRO(none,      false, false,  1, DATA) \
    MACRO(inheritance_type, false,  true,  2, DATA) \
    MACRO(non_virtual,      false, false,  3, DATA) \
    MACRO(virtual,     true, false,  4, DATA) \
    MACRO(storage_class,    false,  true,  5, DATA) \
    MACRO(auto,      false, false,  6, DATA) \
    MACRO(extern,       true, false,  7, DATA) \
    MACRO(static,       true, false,  8, DATA) \
    MACRO(mutable,     true, false,  9, DATA) \
    MACRO(register,   true, false, 10, DATA) \
    MACRO(thread_local,      true, false, 11, DATA) \
    MACRO(constness,    false,  true, 12, DATA) \
    MACRO(non_const,    false, false, 13, DATA) \
    MACRO(const,         true, false, 14, DATA) \
    MACRO(access_type,      false,  true, 15, DATA) \
    MACRO(private,     true, false, 16, DATA) \
    MACRO(protected,     true, false, 17, DATA) \
    MACRO(public,       true, false, 18, DATA) \
    MACRO(elaborated_type,  false,  true, 19, DATA) \
    MACRO(type,      false, false, 20, DATA) \
    MACRO(class,         true, false, 21, DATA) \
    MACRO(struct,       true, false, 22, DATA) \
    MACRO(union,         true, false, 23, DATA) \
    MACRO(enum,       true, false, 24, DATA)
#define MIRROR_IMPLEMENT_SPECIFIER_TAG_KEYWORD_FUNCTIONS (   KEYWORD_STR,
  UID 
)
Value:
static std::string keyword(void) \
    { \
        return std::string(KEYWORD_STR, sizeof(KEYWORD_STR) - 1); \
    } \
    static std::integral_constant<int, UID> _uid(void)\
    { \
        return std::integral_constant<int, UID>(); \
    }

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.