Mirror reflection library 0.5.13
|
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