// -*- C++ -*-
-// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// Copyright (C) 2005-2014 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms
// of the GNU General Public License as published by the Free Software
-// Foundation; either version 2, or (at your option) any later
+// Foundation; either version 3, or (at your option) any later
// version.
// This library is distributed in the hope that it will be useful, but
// General Public License for more details.
// You should have received a copy of the GNU General Public License
-// along with this library; see the file COPYING. If not, write to
-// the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
-// MA 02111-1307, USA.
-
-// As a special exception, you may use this file as part of a free
-// software library without restriction. Specifically, if other files
-// instantiate templates or use macros or inline functions from this
-// file, or you compile this file and link it with other files to
-// produce an executable, this file does not by itself cause the
-// resulting executable to be covered by the GNU General Public
-// License. This exception does not however invalidate any other
-// reasons why the executable file might be covered by the GNU General
-// Public License.
+// along with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
#include <common_type/priority_queue/string_form.hpp>
#include <iterator>
-namespace pb_ds
+namespace __gnu_pbds
{
-
namespace test
{
-
namespace detail
{
-
template<typename It, class Cntnr>
class push_pop_push_pop_functor
{
public:
- push_pop_push_pop_functor(It ins_it_b, It ins_it_e) : m_ins_it_b(ins_it_b),
- m_ins_it_e(ins_it_e)
+ push_pop_push_pop_functor(It ins_it_b, It ins_it_e)
+ : m_ins_it_b(ins_it_b), m_ins_it_e(ins_it_e)
{ }
void
for (std::size_t i = 0; i < resolution; ++i)
{
Cntnr cntnr;
-
for (It ins_it = m_ins_it_b; ins_it != m_ins_it_e; ++ins_it)
cntnr.push((typename Cntnr::const_reference)(ins_it->first));
-
while (!cntnr.empty())
cntnr.pop();
}
} // namespace detail
-#define PB_DS_CLASS_T_DEC \
template<typename It>
-
-#define PB_DS_CLASS_C_DEC \
- push_pop_test< \
- It>
-
- template<typename It>
- class push_pop_test : private pb_ds::test::detail::timing_test_base
+ class push_pop_test : private __gnu_pbds::test::detail::timing_test_base
{
public:
- push_pop_test(It ins_b, size_t ins_vn, size_t ins_vs, size_t ins_vm);
+ push_pop_test(It ins_b, size_t ins_vn, size_t ins_vs, size_t ins_vm)
+ : m_ins_b(ins_b), m_ins_vn(ins_vn), m_ins_vs(ins_vs), m_ins_vm(ins_vm)
+ { }
template<typename Cntnr>
void
- operator()(__gnu_cxx::typelist::detail::type_to_type<Cntnr>);
+ operator()(Cntnr);
private:
- push_pop_test(const push_pop_test& );
+ push_pop_test(const push_pop_test&);
template<typename Cntnr>
void
- push(__gnu_cxx::typelist::detail::type_to_type<Cntnr>, It ins_it_b, It ins_it_e);
+ push(Cntnr, It ins_it_b, It ins_it_e)
+ {
+ Cntnr cntnr;
+ for (It ins_it = ins_it_b; ins_it != ins_it_e; ++ins_it)
+ cntnr.push((typename Cntnr::const_reference)(*ins_it));
+ }
- private:
const It m_ins_b;
-
const size_t m_ins_vn;
const size_t m_ins_vs;
const size_t m_ins_vm;
};
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- push_pop_test(It ins_b, size_t ins_vn, size_t ins_vs, size_t ins_vm) :
- m_ins_b(ins_b),
- m_ins_vn(ins_vn),
- m_ins_vs(ins_vs),
- m_ins_vm(ins_vm)
- { }
-
- PB_DS_CLASS_T_DEC
+
+ template<typename It>
template<typename Cntnr>
void
- PB_DS_CLASS_C_DEC::
- operator()(__gnu_cxx::typelist::detail::type_to_type<Cntnr>)
+ push_pop_test<It>::
+ operator()(Cntnr)
{
- xml_result_set_performance_formatter res_set_fmt(
- string_form<Cntnr>::name(),
- string_form<Cntnr>::desc());
-
- for (size_t size_i = 0; m_ins_vn + size_i* m_ins_vs < m_ins_vm; ++size_i)
+ typedef xml_result_set_performance_formatter formatter_type;
+ formatter_type res_set_fmt(string_form<Cntnr>::name(),
+ string_form<Cntnr>::desc());
+
+ for (size_t i = 0; m_ins_vn + i * m_ins_vs < m_ins_vm; ++i)
{
- const size_t v = m_ins_vn + size_i* m_ins_vs;
-
+ const size_t v = m_ins_vn + i * m_ins_vs;
It ins_it_b = m_ins_b;
It ins_it_e = m_ins_b;
std::advance(ins_it_e, v);
- pb_ds::test::detail::push_pop_push_pop_functor<It, Cntnr>
+ __gnu_pbds::test::detail::push_pop_push_pop_functor<It, Cntnr>
fn(ins_it_b, ins_it_e);
const double res =
- pb_ds::test::detail::timing_test_base::operator()(fn);
+ __gnu_pbds::test::detail::timing_test_base::operator()(fn);
res_set_fmt.add_res(v, res / v);
}
}
-
- PB_DS_CLASS_T_DEC
- template<typename Cntnr>
- void
- PB_DS_CLASS_C_DEC::
- push(__gnu_cxx::typelist::detail::type_to_type<Cntnr>, It ins_it_b, It ins_it_e)
- {
- Cntnr cntnr;
-
- for (It ins_it = ins_it_b; ins_it != ins_it_e; ++ins_it)
- cntnr.push((typename Cntnr::const_reference)(*ins_it));
- }
-
-#undef PB_DS_CLASS_T_DEC
-
-#undef PB_DS_CLASS_C_DEC
-
} // namespace test
+} // namespace __gnu_pbds
-} // namespace pb_ds
-
-#endif // #ifndef PB_DS_PUSH_TEST_HPP
+#endif