Mirror reflection library 0.5.13

mirror/meta_std_container.hpp

Go to the documentation of this file.
00001 
00011 #ifndef MIRROR_META_STD_CONTAINER_1104181551_HPP
00012 #define MIRROR_META_STD_CONTAINER_1104181551_HPP
00013 
00014 #include <mirror/meta_container.hpp>
00015 #include <mirror/auxiliary/std_containers.hpp>
00016 
00017 MIRROR_NAMESPACE_BEGIN
00018 
00019 #ifdef MIRROR_DOCUMENTATION_ONLY
00020 
00021 
00037 #define MIRROR_REG_STD_CONTAINER_TEMPLATE_BEGIN( \
00038     TEMPLATE_PARAMS, \
00039     NAMESPACE, \
00040     CLASS, \
00041     PARAM_LIST, \
00042     ELEMENT \
00043 )
00044 #else
00045 #define MIRROR_REG_STD_CONTAINER_TEMPLATE_BEGIN( \
00046     TEMPLATE_PARAMS, \
00047     NAMESPACE, \
00048     CLASS, \
00049     PARAM_LIST, \
00050     ELEMENT \
00051 ) \
00052 namespace _container { \
00053 template < MIRROR_PP_EXPAND_ARGS TEMPLATE_PARAMS > \
00054 struct _< :: NAMESPACE :: CLASS < \
00055     MIRROR_PP_EXPAND_ARGS PARAM_LIST \
00056 > > \
00057 { \
00058     typedef :: NAMESPACE :: CLASS < \
00059         MIRROR_PP_EXPAND_ARGS PARAM_LIST \
00060     > _this; \
00061     typedef simple_container_tag kind; \
00062     struct cntnr : _std_base<_this> \
00063     { \
00064         typedef ELEMENT elem_type;
00065 #endif
00066 
00067 #ifdef MIRROR_DOCUMENTATION_ONLY
00068 
00069 
00074 #define MIRROR_REG_STD_CONTAINER_END
00075 #else
00076 #define MIRROR_REG_STD_CONTAINER_END \
00077     }; \
00078     static cntnr _cntnr(std::integral_constant<int, 0>); \
00079     typedef std::integral_constant<int, 1> cntnr_count; \
00080 }; \
00081 } /* namespace _container */
00082 #endif
00083 
00084 #ifdef MIRROR_DOCUMENTATION_ONLY
00085 
00086 
00093 #define MIRROR_REG_STD_FWD_CONTAINER_TRAVERSALS
00094 #else
00095 #define MIRROR_REG_STD_FWD_CONTAINER_TRAVERSALS \
00096     typedef mirror::aux::meta_std_cntnr_trav_fwd<_this> \
00097         default_traversal; \
00098     typedef mirror::mp::range< \
00099         mirror::aux::meta_std_cntnr_trav_fwd<_this> \
00100     > traversals;
00101 #endif
00102 
00103 #ifdef MIRROR_DOCUMENTATION_ONLY
00104 
00105 
00112 #define MIRROR_REG_STD_REV_CONTAINER_TRAVERSALS
00113 #else
00114 #define MIRROR_REG_STD_REV_CONTAINER_TRAVERSALS \
00115     typedef mirror::aux::meta_std_cntnr_trav_fwd<_this> \
00116         default_traversal; \
00117     typedef mirror::mp::range< \
00118         mirror::aux::meta_std_cntnr_trav_fwd<_this>, \
00119         mirror::aux::meta_std_cntnr_trav_bwd<_this> \
00120     > traversals;
00121 #endif
00122 
00123 #ifdef MIRROR_DOCUMENTATION_ONLY
00124 
00125 
00131 #define MIRROR_REG_STD_CONTAINER_OP(KIND, NAME)
00132 #else
00133 #define MIRROR_REG_STD_CONTAINER_OP(KIND, NAME) \
00134     mirror::aux::meta_std_ ## NAME ## _ ## KIND<_this>
00135 #endif
00136 
00137 MIRROR_NAMESPACE_END
00138 
00139 #endif //include guard
00140 

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.