Mirror reflection library - Rubber type-erasure utility 0.5.13

rubber/config.hpp

Go to the documentation of this file.
00001 
00010 #ifndef RUBBER_CONFIG_1103151301_HPP
00011 #define RUBBER_CONFIG_1103151301_HPP
00012 
00013 #include <mirror/raw_ptr/raw_ptr.hpp>
00014 #include <mirror/utils/some_type.hpp>
00015 
00016 // Macro that begins the Rubber library namespace
00017 #define RUBBER_NAMESPACE_BEGIN \
00018 namespace rubber {
00019 
00020 // Macro which ends the Rubber library namespace
00021 #define RUBBER_NAMESPACE_END \
00022 } /* namespace rubber */
00023 
00037 #ifdef MIRROR_DOCUMENTATION_ONLY
00038 
00054 #define RUBBER_POLYMORPHIC_META_OBJECT 0
00055 #endif
00056 #ifndef RUBBER_POLYMORPHIC_META_OBJECT
00057 #define RUBBER_POLYMORPHIC_META_OBJECT 0
00058 #endif
00059 
00060 #ifdef MIRROR_DOCUMENTATION_ONLY
00061 
00073 #define RUBBER_NO_NAMESPACE_MEMBERS 0
00074 #endif
00075 #ifndef RUBBER_NO_NAMESPACE_MEMBERS
00076 #define RUBBER_NO_NAMESPACE_MEMBERS 0
00077 #endif
00078 
00079 #ifdef MIRROR_DOCUMENTATION_ONLY
00080 
00089 #define RUBBER_MNSO_WITH_LOCAL_NAME 0
00090 #endif
00091 #ifndef RUBBER_MNSO_WITH_LOCAL_NAME
00092 #define RUBBER_MNSO_WITH_LOCAL_NAME 0
00093 #endif
00094 
00095 #ifdef MIRROR_DOCUMENTATION_ONLY
00096 
00111 #define RUBBER_META_TYPE_OPERATIONS comma,separated,list,of,operation,wrappers
00112 #endif
00113 
00114 RUBBER_NAMESPACE_BEGIN
00115 
00116 using mirror::raw_ptr;
00117 using mirror::raw_cast;
00118 
00119 using mirror::some;
00120 using mirror::some_ref;
00121 using mirror::some_cast;
00122 
00123 namespace aux {
00124 
00125 inline int& meta_object_uid_seq(void)
00126 {
00127     static int seq = 0;
00128     return seq;
00129 }
00130 
00131 template <typename MirrorMetaObject>
00132 inline int meta_object_uid(MirrorMetaObject)
00133 {
00134     static int uid = ++meta_object_uid_seq();
00135     return uid;
00136 }
00137 
00138 template <typename TypeErased>
00139 struct return_value
00140 {
00141 #if RUBBER_POLYMORPHIC_META_OBJECT
00142     typedef const TypeErased& type;
00143 #else
00144     typedef TypeErased type;
00145 #endif
00146 };
00147 
00148 } // namespace aux
00149 
00150 RUBBER_NAMESPACE_END
00151 
00152 #endif //include guard
00153 

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.