Mirror reflection library 0.5.13
|
00001 00010 #ifndef MIRROR_CT_STRING_DEFAULT_1105240825_HPP 00011 #define MIRROR_CT_STRING_DEFAULT_1105240825_HPP 00012 00013 #include <mirror/config.hpp> 00014 #include <mirror/ct_string/basic_string.hpp> 00015 #include <mirror/ct_string/evaluate.hpp> 00016 00017 MIRROR_NAMESPACE_BEGIN 00018 namespace cts { 00019 00021 00026 template <typename CTString> 00027 struct char_type 00028 #ifndef MIRROR_DOCUMENTATION_ONLY 00029 : char_type<typename evaluate<CTString>::type> 00030 { }; 00031 #else 00032 { 00034 typedef unspecified_char_type type; 00035 }; 00036 #endif 00037 00039 00047 template <typename CTString> 00048 struct empty 00049 #ifndef MIRROR_DOCUMENTATION_ONLY 00050 : empty<typename evaluate<CTString>::type> 00051 #else 00052 : BooleanConstantType 00053 #endif 00054 { }; 00055 00057 00065 template <typename CTString> 00066 struct nonempty 00067 #ifndef MIRROR_DOCUMENTATION_ONLY 00068 : nonempty<typename evaluate<CTString>::type> 00069 #else 00070 : BooleanConstantType 00071 #endif 00072 { }; 00073 00075 00084 template <typename CTString> 00085 struct size 00086 #ifndef MIRROR_DOCUMENTATION_ONLY 00087 : size<typename evaluate<CTString>::type> 00088 #else 00089 : IntegralConstantType 00090 #endif 00091 { }; 00092 00094 00103 template <typename CTString> 00104 struct length 00105 #ifndef MIRROR_DOCUMENTATION_ONLY 00106 : length<typename evaluate<CTString>::type> 00107 #else 00108 : IntegralConstantType 00109 #endif 00110 { }; 00111 00113 00118 template <typename CTString1, typename CTString2> 00119 struct equal 00120 #ifndef MIRROR_DOCUMENTATION_ONLY 00121 : equal< 00122 typename evaluate<CTString1>::type, 00123 typename evaluate<CTString2>::type 00124 > 00125 #else 00126 : BooleanConstantType 00127 #endif 00128 { }; 00129 00131 00136 template <typename CTString1, typename CTString2> 00137 struct nonequal 00138 #ifndef MIRROR_DOCUMENTATION_ONLY 00139 : nonequal< 00140 typename evaluate<CTString1>::type, 00141 typename evaluate<CTString2>::type 00142 > 00143 #else 00144 : BooleanConstantType 00145 #endif 00146 { }; 00147 00149 00157 template <typename CTString> 00158 struct front 00159 #ifndef MIRROR_DOCUMENTATION_ONLY 00160 : front<typename evaluate<CTString>::type> 00161 #else 00162 : CharacterConstantType 00163 #endif 00164 { }; 00165 00167 00176 template <typename CTString> 00177 struct step_front 00178 #ifndef MIRROR_DOCUMENTATION_ONLY 00179 : step_front<typename evaluate<CTString>::type> 00180 { }; 00181 #else 00182 { 00184 typedef CompileTimeString type; 00185 }; 00186 #endif 00187 00189 00194 template <typename ... CTStrings> 00195 struct concat 00196 #ifndef MIRROR_DOCUMENTATION_ONLY 00197 : concat<typename evaluate<CTStrings>::type...> 00198 { }; 00199 #else 00200 { 00202 typedef CompileTimeString type; 00203 }; 00204 #endif 00205 00207 00214 template <typename CTString, typename Length> 00215 struct head 00216 #ifndef MIRROR_DOCUMENTATION_ONLY 00217 : head< 00218 typename evaluate<CTString>::type, 00219 typename Length::type 00220 > { }; 00221 #else 00222 { 00224 typedef CompileTimeString type; 00225 }; 00226 #endif 00227 00229 00237 template <typename CTString, int Length> 00238 struct head_c; 00239 00241 00250 template <typename CTString, typename Length> 00251 struct tail 00252 #ifndef MIRROR_DOCUMENTATION_ONLY 00253 : tail< 00254 typename evaluate<CTString>::type, 00255 typename Length::type 00256 > { }; 00257 #else 00258 { 00260 typedef CompileTimeString type; 00261 }; 00262 #endif 00263 00265 00273 template <typename CTString, int Length> 00274 struct tail_c; 00275 00277 00285 template <typename CTString1, typename CTString2> 00286 struct find 00287 #ifndef MIRROR_DOCUMENTATION_ONLY 00288 : find< 00289 typename evaluate<CTString1>::type, 00290 typename evaluate<CTString2>::type 00291 > { }; 00292 #else 00293 { 00295 typedef CompileTimeString type; 00296 }; 00297 #endif 00298 00300 00307 template <typename CTString, typename Start, typename Length> 00308 struct slice 00309 #ifndef MIRROR_DOCUMENTATION_ONLY 00310 ; 00311 #else 00312 { 00314 typedef CompileTimeString type; 00315 }; 00316 #endif 00317 00319 00326 template <typename CTString, int Start, int Length> 00327 struct slice_c; 00328 00330 00338 template <typename CTString, typename Length> 00339 struct skip_front 00340 #ifndef MIRROR_DOCUMENTATION_ONLY 00341 ; 00342 #else 00343 { 00345 typedef CompileTimeString type; 00346 }; 00347 #endif 00348 00350 00358 template <typename CTString, int Count> 00359 struct skip_front_c; 00360 00362 00369 template <typename CTString, typename Position> 00370 struct at 00371 #ifndef MIRROR_DOCUMENTATION_ONLY 00372 ; 00373 #else 00374 : CharacterConstantType 00375 { }; 00376 #endif 00377 00379 00386 template <typename CTString, int Position> 00387 struct at_c; 00388 00390 00398 template <typename CTString1, typename CTString2> 00399 struct starts_with 00400 #ifndef MIRROR_DOCUMENTATION_ONLY 00401 ; 00402 #else 00403 : BooleanConstantType 00404 { }; 00405 #endif 00406 00407 00409 00417 template <typename CTString1, typename CTString2> 00418 struct ends_with 00419 #ifndef MIRROR_DOCUMENTATION_ONLY 00420 ; 00421 #else 00422 : BooleanConstantType 00423 { }; 00424 #endif 00425 00427 00434 template <typename CTString1, typename CTString2> 00435 struct contains 00436 #ifndef MIRROR_DOCUMENTATION_ONLY 00437 ; 00438 #else 00439 : BooleanConstantType 00440 { }; 00441 #endif 00442 00444 00451 template <typename CTString1, typename CTString2> 00452 struct lacks 00453 #ifndef MIRROR_DOCUMENTATION_ONLY 00454 ; 00455 #else 00456 : BooleanConstantType 00457 { }; 00458 #endif 00459 00460 } // namespace cts 00461 MIRROR_NAMESPACE_END 00462 00463 #endif //include guard 00464