Mirror reflection library 0.5.13
Namespaces | Defines | Typedefs

mirror/meta_namespace.hpp File Reference

Implementation of namespace registering and reflection. More...

#include <mirror/mirror_fwd.hpp>
#include <mirror/meta_object_tags.hpp>
#include <mirror/auxiliary/scoped_named.hpp>
#include <mirror/auxiliary/global_list.hpp>
#include <mirror/ct_string/basic_string.hpp>
#include <mirror/meta_prog/only_if.hpp>
#include <string>
#include <type_traits>
Include dependency graph for meta_namespace.hpp:

Go to the source code of this file.

Namespaces

namespace  mirror
 

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


Defines

#define MIRROR_REGISTER_BASE_NAMESPACE_META_DATA(NAME, SPELLED)
#define MIRROR_REG_NAMESPACE_BEGIN
 This macro begins the registering of namespace(s) with Mirror.
#define MIRROR_REG_NAMESPACE_CTS(NAMESPACE_NAME, SPELLED)
#define MIRROR_REG_NAMESPACE(NAMESPACE_NAME)
 This macro registers a namespace with Mirror.
#define MIRROR_REG_NAMESPACE_END
 This macro ends the registering of namespace(s) with Mirror.
#define MIRROR_INIT_NAMESPACE_MEMBER_LIST(FULL_NAMESPACE_NAME)
 Macro which initializes the namespace's member list.
#define MIRROR_QREG_GLOBAL_SCOPE_NAMESPACE_CTS(NAMESPACE, SPELLED)
#define MIRROR_QREG_GLOBAL_SCOPE_NAMESPACE(NAMESPACE)
 Macro for quick registering of a single namespace under the global scope.
#define MIRROR_QREG_NESTED_NAMESPACE_CTS(PARENT_NAMESPACE, NESTED_NAMESPACE, SPELLED)
#define MIRROR_QREG_NESTED_NAMESPACE(PARENT_NAMESPACE, NESTED_NAMESPACE)
 Macro for quick registering of a namespace nested in top-level namespace.
#define MIRROR_QREG_NESTED_NESTED_NAMESPACE_CTS(GRANDPARENT_NAMESPACE, PARENT_NAMESPACE, NESTED_NAMESPACE, SPELLED)
#define MIRROR_QREG_NESTED_NESTED_NAMESPACE(GRANDPARENT_NAMESPACE, PARENT_NAMESPACE, NESTED_NAMESPACE)
 Macro for quick registering of a namespace nested in a nested namespace.
#define MIRRORED_NAMESPACE(FULL_NAMESPACE_NAME)   mirror::MetaNamespace
 Reflects the namespace passed as the FULL_NAMESPACE_NAME argument.
#define MIRRORED_GLOBAL_SCOPE()   mirror::MetaNamespace
 Reflects the global scope namespace.
#define MIRRORED_UNSPECIFIED_SCOPE()   mirror::MetaNamespace
 Reflects an unspecified (local) scope.

Typedefs

typedef _ mirror::_namespace::_parent_namespace

Detailed Description

Implementation of namespace registering and reflection.

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_QREG_GLOBAL_SCOPE_NAMESPACE_CTS (   NAMESPACE,
  SPELLED 
)
Value:
MIRROR_REG_NAMESPACE_BEGIN \
MIRROR_REG_NAMESPACE_CTS(NAMESPACE, SPELLED) \
MIRROR_REG_NAMESPACE_END \
MIRROR_INIT_NAMESPACE_MEMBER_LIST(NAMESPACE)
#define MIRROR_QREG_NESTED_NAMESPACE_CTS (   PARENT_NAMESPACE,
  NESTED_NAMESPACE,
  SPELLED 
)
Value:
MIRROR_REG_NAMESPACE_BEGIN \
namespace PARENT_NAMESPACE { \
MIRROR_REG_NAMESPACE_CTS(NESTED_NAMESPACE, SPELLED) \
} \
MIRROR_REG_NAMESPACE_END \
MIRROR_INIT_NAMESPACE_MEMBER_LIST(PARENT_NAMESPACE::NESTED_NAMESPACE)
#define MIRROR_QREG_NESTED_NESTED_NAMESPACE_CTS (   GRANDPARENT_NAMESPACE,
  PARENT_NAMESPACE,
  NESTED_NAMESPACE,
  SPELLED 
)
Value:
MIRROR_REG_NAMESPACE_BEGIN \
namespace GRANDPARENT_NAMESPACE { \
namespace PARENT_NAMESPACE { \
MIRROR_REG_NAMESPACE_CTS(NESTED_NAMESPACE, SPELLED) \
} } \
MIRROR_REG_NAMESPACE_END \
MIRROR_INIT_NAMESPACE_MEMBER_LIST( \
    GRANDPARENT_NAMESPACE::PARENT_NAMESPACE::NESTED_NAMESPACE \
)
#define MIRROR_REG_NAMESPACE_CTS (   NAMESPACE_NAME,
  SPELLED 
)
Value:
namespace NAMESPACE_NAME { \
MIRROR_REGISTER_BASE_NAMESPACE_META_DATA(NAMESPACE_NAME, SPELLED) \
}
#define MIRROR_REGISTER_BASE_NAMESPACE_META_DATA (   NAME,
  SPELLED 
)
Value:
struct _ \
{  \
    typedef meta_namespace_tag category; \
    typedef _parent_namespace scope; \
    MIRROR_IMPLEMENT_META_OBJECT_NAME_FUNCTIONS(#NAME) \
    typedef typename cts::string< \
        MIRROR_PP_EXPAND_ARGS SPELLED \
    >::type ct_name; \
}; \
typedef _ _parent_namespace;

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.