diff options
Diffstat (limited to 'libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp')
-rw-r--r-- | libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp | 360 |
1 files changed, 161 insertions, 199 deletions
diff --git a/libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp b/libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp index 8cf8c1271fc..65a63630f6f 100644 --- a/libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp +++ b/libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp @@ -59,231 +59,193 @@ namespace pb_ds { +namespace test +{ +namespace detail +{ - namespace test - { +#define PB_DS_CLASS_T_DEC \ + template<typename Cntnr> - namespace detail - { +#define PB_DS_CLASS_C_DEC \ + regression_test_traits<Cntnr> -#define PB_DS_CLASS_T_DEC \ - template<typename Cntnr> - -#define PB_DS_CLASS_C_DEC \ - regression_test_traits< \ - Cntnr> - -#define PB_DS_TYPE_TRAITS_C_DEC \ - regression_test_type_traits< \ - Cntnr> - -#define PB_DS_NATIVE_TYPE_TRAITS_C_DEC \ - native_type_traits< \ - typename PB_DS_TYPE_TRAITS_C_DEC::key_type, \ - typename PB_DS_TYPE_TRAITS_C_DEC::mapped_type, \ - typename Cntnr::allocator> - -#define PB_DS_RESIZE_TRAITS_C_DEC \ - regression_test_resize_traits< \ - Cntnr, \ - typename Cntnr::container_category> - -#define PB_DS_SET_LOADS_TRAITS_C_DEC \ - regression_test_get_set_loacontainer_traits< \ - Cntnr, \ - typename Cntnr::container_category> - -#define PB_DS_SET_LOAD_TRAITS_C_DEC \ - regression_test_get_set_load_traits< \ - Cntnr, \ - typename Cntnr::container_category> - -#define PB_DS_NODE_UPDATOR_TRAITS_C_DEC \ - regression_test_node_update_traits< \ - Cntnr, \ - typename Cntnr::container_category> - - template<typename Cntnr> - struct regression_test_traits : private PB_DS_TYPE_TRAITS_C_DEC, - private PB_DS_NATIVE_TYPE_TRAITS_C_DEC, - private PB_DS_RESIZE_TRAITS_C_DEC, - private PB_DS_NODE_UPDATOR_TRAITS_C_DEC, - private PB_DS_SET_LOADS_TRAITS_C_DEC, - private PB_DS_SET_LOAD_TRAITS_C_DEC - { +#define PB_DS_TYPE_TRAITS_C_DEC \ + regression_test_type_traits<Cntnr> - private: - typedef PB_DS_NATIVE_TYPE_TRAITS_C_DEC native_type_traits_base; +#define PB_DS_NATIVE_TYPE_TRAITS_C_DEC \ + native_type_traits<typename PB_DS_TYPE_TRAITS_C_DEC::key_type, \ + typename PB_DS_TYPE_TRAITS_C_DEC::mapped_type, \ + typename Cntnr::allocator> - typedef PB_DS_TYPE_TRAITS_C_DEC type_traits_base; +#define PB_DS_RESIZE_TRAITS_C_DEC \ + regression_test_resize_traits<Cntnr, typename Cntnr::container_category> - public: +#define PB_DS_SET_LOADS_TRAITS_C_DEC \ + regression_test_get_set_loacontainer_traits<Cntnr, \ + typename Cntnr::container_category> - typedef typename Cntnr::key_type key_type; +#define PB_DS_SET_LOAD_TRAITS_C_DEC \ + regression_test_get_set_load_traits<Cntnr,typename Cntnr::container_category> - typedef typename Cntnr::const_key_reference const_key_reference; +#define PB_DS_NODE_UPDATOR_TRAITS_C_DEC \ + regression_test_node_update_traits<Cntnr, typename Cntnr::container_category> - typedef typename Cntnr::value_type value_type; + template<typename Cntnr> + struct regression_test_traits : private PB_DS_TYPE_TRAITS_C_DEC, + private PB_DS_NATIVE_TYPE_TRAITS_C_DEC, + private PB_DS_RESIZE_TRAITS_C_DEC, + private PB_DS_NODE_UPDATOR_TRAITS_C_DEC, + private PB_DS_SET_LOADS_TRAITS_C_DEC, + private PB_DS_SET_LOAD_TRAITS_C_DEC + { + private: + typedef PB_DS_NATIVE_TYPE_TRAITS_C_DEC native_type_traits_base; - typedef typename Cntnr::const_reference const_reference; + typedef PB_DS_TYPE_TRAITS_C_DEC type_traits_base; - typedef typename PB_DS_NATIVE_TYPE_TRAITS_C_DEC::type native_type; + public: + typedef typename Cntnr::key_type key_type; - typedef typename native_type::key_type native_key_type; + typedef typename Cntnr::const_key_reference const_key_reference; - typedef typename native_type::value_type native_value_type; + typedef typename Cntnr::value_type value_type; - enum - { - resize = PB_DS_RESIZE_TRAITS_C_DEC::value, - get_set_loads = PB_DS_SET_LOADS_TRAITS_C_DEC::value, - get_set_load = PB_DS_SET_LOAD_TRAITS_C_DEC::value, - order_statistics = - PB_DS_NODE_UPDATOR_TRAITS_C_DEC::order_statistics, - prefix_search = - PB_DS_NODE_UPDATOR_TRAITS_C_DEC::prefix_search - }; - - template<typename T> - struct erase_if_fn : public regression_test_erase_if_fn< - T> - { - - }; - - static size_t - erase_if(native_type& r_native_c) - { - typedef - regression_test_erase_if_fn< - typename native_type::value_type> - erase_if_fn; - - typename native_type::iterator it = r_native_c.begin(); - - size_t num_ersd = 0; - - while (it != r_native_c.end()) - if (erase_if_fn()(*it)) - { - ++num_ersd; - - r_native_c.erase(it); - - it = r_native_c.begin(); - } - else - ++it; - - return (num_ersd); - } - - static void - print_container(const Cntnr& r_c, std::ostream& r_os) - { - PB_DS_TYPE_TRAITS_C_DEC::print_container(r_c, r_os); - } - - public: - - template<typename Gen> - static key_type - generate_key(Gen& r_gen, size_t max) - { - return (PB_DS_TYPE_TRAITS_C_DEC::generate_key(r_gen, max)); - } - - template<typename Gen> - static value_type - generate_value(Gen& r_gen, size_t max) - { - return (PB_DS_TYPE_TRAITS_C_DEC::generate_value(r_gen, max)); - } - - static const_key_reference - extract_key(const_reference r_val) - { - return type_traits_base::extract_key(r_val); - } - - static native_key_type - native_key(const_key_reference r_key) - { - return (native_type_traits_base::native_key(r_key)); - } - - static native_value_type - native_value(const_reference r_val) - { - return (native_type_traits_base::native_value(r_val)); - } - - static const native_key_type& - extract_native_key(const native_value_type& r_val) - { - return (native_type_traits_base::extract_key(r_val)); - } - - static bool - cmp(const_reference r_val, const native_value_type& r_native_val) - { - return (val_to_string(r_val) == - native_val_to_string(r_native_val)); - } - - static std::string - val_to_string(const_reference r_val) - { - return (to_string(r_val)); - } - - static std::string - key_to_string(const_key_reference r_key) - { - return (to_string(r_key)); - } - - static std::string - native_val_to_string(const native_value_type& r_native_val) - { - return (to_string(r_native_val)); - } - - static bool - prefix_match(const_key_reference r_key, const std::string& r_native_key) - { - const size_t native_substr_len = std::min( - r_key.length(), - r_native_key.length()); - - const std::string native_substr = - r_native_key.substr(0, native_substr_len); - - return (native_substr == (const std::string& )r_key); - } + typedef typename Cntnr::const_reference const_reference; + typedef typename PB_DS_NATIVE_TYPE_TRAITS_C_DEC::type native_type; + + typedef typename native_type::key_type native_key_type; + + typedef typename native_type::value_type native_value_type; + + enum + { + resize = PB_DS_RESIZE_TRAITS_C_DEC::value, + get_set_loads = PB_DS_SET_LOADS_TRAITS_C_DEC::value, + get_set_load = PB_DS_SET_LOAD_TRAITS_C_DEC::value, + order_statistics = PB_DS_NODE_UPDATOR_TRAITS_C_DEC::order_statistics, + prefix_search = PB_DS_NODE_UPDATOR_TRAITS_C_DEC::prefix_search }; -#undef PB_DS_TYPE_TRAITS_C_DEC + template<typename T> + struct erase_if_fn : public regression_test_erase_if_fn<T> + { }; -#undef PB_DS_NATIVE_TYPE_TRAITS_C_DEC + static size_t + erase_if(native_type& r_native_c) + { + typedef regression_test_erase_if_fn<typename native_type::value_type> erase_if_fn; -#undef PB_DS_RESIZE_TRAITS_C_DEC + typename native_type::iterator it = r_native_c.begin(); + size_t num_ersd = 0; + while (it != r_native_c.end()) + if (erase_if_fn()(*it)) + { + ++num_ersd; + r_native_c.erase(it); + it = r_native_c.begin(); + } + else + ++it; + return num_ersd; + } + + static void + print_container(const Cntnr& r_c, std::ostream& r_os) + { + PB_DS_TYPE_TRAITS_C_DEC::print_container(r_c, r_os); + } -#undef PB_DS_SET_LOADS_TRAITS_C_DEC + public: -#undef PB_DS_SET_LOAD_TRAITS_C_DEC + template<typename Gen> + static key_type + generate_key(Gen& r_gen, size_t max) + { + return PB_DS_TYPE_TRAITS_C_DEC::generate_key(r_gen, max); + } -#undef PB_DS_NODE_UPDATOR_TRAITS_C_DEC + template<typename Gen> + static value_type + generate_value(Gen& r_gen, size_t max) + { + return PB_DS_TYPE_TRAITS_C_DEC::generate_value(r_gen, max); + } -#undef PB_DS_CLASS_T_DEC + static const_key_reference + extract_key(const_reference r_val) + { + return type_traits_base::extract_key(r_val); + } -#undef PB_DS_CLASS_C_DEC + static native_key_type + native_key(const_key_reference r_key) + { + return native_type_traits_base::native_key(r_key); + } + + static native_value_type + native_value(const_reference r_val) + { + return native_type_traits_base::native_value(r_val); + } - } // namespace detail + static const native_key_type& + extract_native_key(const native_value_type& r_val) + { + return native_type_traits_base::extract_key(r_val); + } - } // namespace test + static bool + cmp(const_reference r_val, const native_value_type& r_native_val) + { + return val_to_string(r_val) == native_val_to_string(r_native_val); + } + + static std::string + val_to_string(const_reference r_val) + { + return to_string(r_val); + } + + static std::string + key_to_string(const_key_reference r_key) + { + return to_string(r_key); + } + + static std::string + native_val_to_string(const native_value_type& r_native_val) + { + return to_string(r_native_val); + } + + static bool + prefix_match(const_key_reference r_key, const std::string& r_native_key) + { + const size_t native_substr_len = std::min(r_key.length(), + r_native_key.length()); + + const std::string native_substr = r_native_key.substr(0, + native_substr_len); + + return native_substr == (const std::string&) r_key; + } + + }; + +#undef PB_DS_TYPE_TRAITS_C_DEC +#undef PB_DS_NATIVE_TYPE_TRAITS_C_DEC +#undef PB_DS_RESIZE_TRAITS_C_DEC +#undef PB_DS_SET_LOADS_TRAITS_C_DEC +#undef PB_DS_SET_LOAD_TRAITS_C_DEC +#undef PB_DS_NODE_UPDATOR_TRAITS_C_DEC +#undef PB_DS_CLASS_T_DEC +#undef PB_DS_CLASS_C_DEC +} // namespace detail +} // namespace test } // namespace pb_ds -#endif // #ifndef PB_DS_REGRESSION_TEST_TRAIT_HPP +#endif |