diff --git a/doc/rst2html b/doc/rst2html.sh old mode 100644 new mode 100755 similarity index 100% rename from doc/rst2html rename to doc/rst2html.sh diff --git a/doc/rst2latex b/doc/rst2latex.sh old mode 100644 new mode 100755 similarity index 100% rename from doc/rst2latex rename to doc/rst2latex.sh diff --git a/include/boost/function_output_iterator.hpp b/include/boost/function_output_iterator.hpp index dd8c44d..15dbcb9 100644 --- a/include/boost/function_output_iterator.hpp +++ b/include/boost/function_output_iterator.hpp @@ -1,62 +1,14 @@ -// (C) Copyright Jeremy Siek 2001. +// (C) Copyright Andrey Semashev 2017. // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -// Revision History: - -// 27 Feb 2001 Jeremy Siek -// Initial checkin. - #ifndef BOOST_FUNCTION_OUTPUT_ITERATOR_HPP #define BOOST_FUNCTION_OUTPUT_ITERATOR_HPP -#include +// This is a deprecated header left for backward compatibility. +// Use boost/iterator/function_output_iterator.hpp instead. -namespace boost { -namespace iterators { - - template - class function_output_iterator { - typedef function_output_iterator self; - public: - typedef std::output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - explicit function_output_iterator() {} - - explicit function_output_iterator(const UnaryFunction& f) - : m_f(f) {} - - struct output_proxy { - output_proxy(UnaryFunction& f) : m_f(f) { } - template output_proxy& operator=(const T& value) { - m_f(value); - return *this; - } - UnaryFunction& m_f; - }; - output_proxy operator*() { return output_proxy(m_f); } - self& operator++() { return *this; } - self& operator++(int) { return *this; } - private: - UnaryFunction m_f; - }; - - template - inline function_output_iterator - make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) { - return function_output_iterator(f); - } - -} // namespace iterators - -using iterators::function_output_iterator; -using iterators::make_function_output_iterator; - -} // namespace boost +#include #endif // BOOST_FUNCTION_OUTPUT_ITERATOR_HPP diff --git a/include/boost/iterator/function_output_iterator.hpp b/include/boost/iterator/function_output_iterator.hpp new file mode 100644 index 0000000..51fe835 --- /dev/null +++ b/include/boost/iterator/function_output_iterator.hpp @@ -0,0 +1,62 @@ +// (C) Copyright Jeremy Siek 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Revision History: + +// 27 Feb 2001 Jeremy Siek +// Initial checkin. + +#ifndef BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP +#define BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP + +#include + +namespace boost { +namespace iterators { + + template + class function_output_iterator { + typedef function_output_iterator self; + public: + typedef std::output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + explicit function_output_iterator() {} + + explicit function_output_iterator(const UnaryFunction& f) + : m_f(f) {} + + struct output_proxy { + output_proxy(UnaryFunction& f) : m_f(f) { } + template output_proxy& operator=(const T& value) { + m_f(value); + return *this; + } + UnaryFunction& m_f; + }; + output_proxy operator*() { return output_proxy(m_f); } + self& operator++() { return *this; } + self& operator++(int) { return *this; } + private: + UnaryFunction m_f; + }; + + template + inline function_output_iterator + make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) { + return function_output_iterator(f); + } + +} // namespace iterators + +using iterators::function_output_iterator; +using iterators::make_function_output_iterator; + +} // namespace boost + +#endif // BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP diff --git a/include/boost/iterator/new_iterator_tests.hpp b/include/boost/iterator/new_iterator_tests.hpp index cb9b107..a1d3b2f 100644 --- a/include/boost/iterator/new_iterator_tests.hpp +++ b/include/boost/iterator/new_iterator_tests.hpp @@ -29,16 +29,18 @@ // (David Abrahams) # include -# include # include # include // for detail::dummy_constructor # include # include # include +# include +# include +# include # include # include -# include +# include namespace boost { diff --git a/include/boost/iterator/transform_iterator.hpp b/include/boost/iterator/transform_iterator.hpp index 67356ff..2281df8 100644 --- a/include/boost/iterator/transform_iterator.hpp +++ b/include/boost/iterator/transform_iterator.hpp @@ -47,7 +47,11 @@ namespace iterators { // the function. typedef typename ia_dflt_help< Reference +#ifdef BOOST_RESULT_OF_USE_TR1 , result_of::reference)> +#else + , result_of::reference)> +#endif >::type reference; // To get the default for Value: remove any reference on the diff --git a/include/boost/pending/iterator_tests.hpp b/include/boost/pending/iterator_tests.hpp index 1640310..b4d2efa 100644 --- a/include/boost/pending/iterator_tests.hpp +++ b/include/boost/pending/iterator_tests.hpp @@ -20,12 +20,14 @@ // (David Abrahams) # include -# include -# include # include # include // for detail::dummy_constructor # include # include +# include +# include +# include +# include namespace boost { @@ -51,28 +53,28 @@ template void trivial_iterator_test(const Iterator i, const Iterator j, T val) { Iterator k; - assert(i == i); - assert(j == j); - assert(i != j); + BOOST_TEST(i == i); + BOOST_TEST(j == j); + BOOST_TEST(i != j); #ifdef BOOST_NO_STD_ITERATOR_TRAITS T v = *i; #else typename std::iterator_traits::value_type v = *i; #endif - assert(v == val); + BOOST_TEST(v == val); boost::ignore_unused(v); #if 0 // hmm, this will give a warning for transform_iterator... perhaps // this should be separated out into a stand-alone test since there // are several situations where it can't be used, like for // integer_range::iterator. - assert(v == i->foo()); + BOOST_TEST(v == i->foo()); #endif k = i; - assert(k == k); - assert(k == i); - assert(k != j); - assert(*k == val); + BOOST_TEST(k == k); + BOOST_TEST(k == i); + BOOST_TEST(k != j); + BOOST_TEST(*k == val); boost::ignore_unused(k); } @@ -92,8 +94,8 @@ void input_iterator_test(Iterator i, T v1, T v2) { Iterator i1(i); - assert(i == i1); - assert(!(i != i1)); + BOOST_TEST(i == i1); + BOOST_TEST(!(i != i1)); // I can see no generic way to create an input iterator // that is in the domain of== of i and != i. @@ -102,24 +104,24 @@ void input_iterator_test(Iterator i, T v1, T v2) // // Iterator i2; // - // assert(i != i2); - // assert(!(i == i2)); + // BOOST_TEST(i != i2); + // BOOST_TEST(!(i == i2)); - assert(*i1 == v1); - assert(*i == v1); + BOOST_TEST(*i1 == v1); + BOOST_TEST(*i == v1); // we cannot test for equivalence of (void)++i & (void)i++ // as i is only guaranteed to be single pass. - assert(*i++ == v1); + BOOST_TEST(*i++ == v1); boost::ignore_unused(i1); i1 = i; - assert(i == i1); - assert(!(i != i1)); + BOOST_TEST(i == i1); + BOOST_TEST(!(i != i1)); - assert(*i1 == v2); - assert(*i == v2); + BOOST_TEST(*i1 == v2); + BOOST_TEST(*i == v2); boost::ignore_unused(i1); // i is dereferencable, so it must be incrementable. @@ -162,15 +164,15 @@ void forward_iterator_test(Iterator i, T v1, T v2) Iterator i1 = i, i2 = i; - assert(i == i1++); - assert(i != ++i2); + BOOST_TEST(i == i1++); + BOOST_TEST(i != ++i2); trivial_iterator_test(i, i1, v1); trivial_iterator_test(i, i2, v1); ++i; - assert(i == i1); - assert(i == i2); + BOOST_TEST(i == i1); + BOOST_TEST(i == i2); ++i1; ++i2; @@ -192,15 +194,15 @@ void bidirectional_iterator_test(Iterator i, T v1, T v2) Iterator i1 = i, i2 = i; - assert(i == i1--); - assert(i != --i2); + BOOST_TEST(i == i1--); + BOOST_TEST(i != --i2); trivial_iterator_test(i, i1, v2); trivial_iterator_test(i, i2, v2); --i; - assert(i == i1); - assert(i == i2); + BOOST_TEST(i == i1); + BOOST_TEST(i == i2); ++i1; ++i2; @@ -224,30 +226,30 @@ void random_access_iterator_test(Iterator i, int N, TrueVals vals) boost::ignore_unused(); for (c = 0; c < N-1; ++c) { - assert(i == j + c); - assert(*i == vals[c]); - assert(*i == boost::implicit_cast(j[c])); - assert(*i == *(j + c)); - assert(*i == *(c + j)); + BOOST_TEST(i == j + c); + BOOST_TEST(*i == vals[c]); + BOOST_TEST(*i == boost::implicit_cast(j[c])); + BOOST_TEST(*i == *(j + c)); + BOOST_TEST(*i == *(c + j)); ++i; - assert(i > j); - assert(i >= j); - assert(j <= i); - assert(j < i); + BOOST_TEST(i > j); + BOOST_TEST(i >= j); + BOOST_TEST(j <= i); + BOOST_TEST(j < i); } Iterator k = j + N - 1; for (c = 0; c < N-1; ++c) { - assert(i == k - c); - assert(*i == vals[N - 1 - c]); - assert(*i == boost::implicit_cast(j[N - 1 - c])); + BOOST_TEST(i == k - c); + BOOST_TEST(*i == vals[N - 1 - c]); + BOOST_TEST(*i == boost::implicit_cast(j[N - 1 - c])); Iterator q = k - c; boost::ignore_unused(q); - assert(*i == *q); - assert(i > j); - assert(i >= j); - assert(j <= i); - assert(j < i); + BOOST_TEST(*i == *q); + BOOST_TEST(i > j); + BOOST_TEST(i >= j); + BOOST_TEST(j <= i); + BOOST_TEST(j < i); --i; } } @@ -256,16 +258,16 @@ void random_access_iterator_test(Iterator i, int N, TrueVals vals) template void const_nonconst_iterator_test(Iterator i, ConstIterator j) { - assert(i != j); - assert(j != i); + BOOST_TEST(i != j); + BOOST_TEST(j != i); ConstIterator k(i); - assert(k == i); - assert(i == k); + BOOST_TEST(k == i); + BOOST_TEST(i == k); k = i; - assert(k == i); - assert(i == k); + BOOST_TEST(k == i); + BOOST_TEST(i == k); boost::ignore_unused(k); }