Mirror reflection library - Rubber type-erasure utility 0.5.13
|
Compile-time meta-object wrappers. More...
#include <rubber/config.hpp>
#include <puddle/categories.hpp>
Go to the source code of this file.
Namespaces | |
namespace | rubber |
The Rubber type-erasure utility for the Mirror meta-objects is defined in this namespace. | |
Defines | |
#define | RUBBER_HELPER_MAKE_TAG_TO_META_OBJECT_MAP(OBJECT, I, X) |
Functions | |
template<typename Wrapper > | |
puddle::meta_object_category | rubber::categorize_wrapper (Wrapper *) |
template<class TypeErased , class MirrorMetaObject > | |
aux::return_value< TypeErased > ::type | rubber::wrap_into (const MirrorMetaObject &mo) |
template<class MetaObjectTag , class MirrorMetaObject > | |
aux::return_value< typename wrapper_by_tag< MetaObjectTag > ::type >::type | rubber::wrap_by_tag (const MirrorMetaObject &mo) |
template<class MirrorMetaObject > | |
aux::return_value< typename wrapper_by_tag< typename mirror::meta_object_category < MirrorMetaObject >::type > ::type >::type | rubber::wrap (void) |
template<class MirrorMetaObject , class TypeErased > | |
aux::return_value< TypeErased > ::type | rubber::wrap_shaped (void) |
Compile-time meta-object wrappers.
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 RUBBER_HELPER_MAKE_TAG_TO_META_OBJECT_MAP | ( | OBJECT, | |
I, | |||
X | |||
) |
class meta_ ## OBJECT; \ template <> \ struct wrapper_by_tag<mirror::meta_ ## OBJECT ## _tag> \ { \ typedef meta_ ## OBJECT type; \ }; \ template <> \ struct tag_by_wrapper<meta_ ## OBJECT> \ { \ typedef mirror::meta_ ## OBJECT ## _tag type; \ }; \