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>
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 |
|
) |
| |
#define MIRROR_QREG_NESTED_NAMESPACE_CTS |
( |
|
PARENT_NAMESPACE, |
|
|
|
NESTED_NAMESPACE, |
|
|
|
SPELLED |
|
) |
| |
#define MIRROR_QREG_NESTED_NESTED_NAMESPACE_CTS |
( |
|
GRANDPARENT_NAMESPACE, |
|
|
|
PARENT_NAMESPACE, |
|
|
|
NESTED_NAMESPACE, |
|
|
|
SPELLED |
|
) |
| |
#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;