Compare commits

..

67 Commits

Author SHA1 Message Date
Neil Groves
1d91272a55 trac 6715 - iterator_range operators work automatically in derived. 2014-02-22 22:31:48 +00:00
Neil Groves
d70210e6f2 Merge branch 'hotfix/trac5811_indirected_optional' into develop 2014-02-22 16:16:19 +00:00
Neil Groves
8e7eeeb6d9 ticket 5811 - unit test to confirm already fixed. 2014-02-22 16:14:55 +00:00
Neil Groves
7cd6631cae strided.cpp unit test has the deque test removed. 2014-02-21 17:52:32 +00:00
Neil Groves
96054b0b48 unit test type_erased.cpp corrected mix of value types under test. 2014-02-21 17:50:28 +00:00
Neil Groves
b795de8310 extension_size.cpp include added to cstdint.hpp 2014-02-21 17:44:16 +00:00
Michel Morin
2735dcff18 Correct broken links to C++ standard papers. Refs #9212.
[SVN r86524]
2013-10-30 12:51:24 +00:00
Stephen Kelly
e7185c2966 Remove remaining occurances of BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
These evaded scripting.

[SVN r86249]
2013-10-11 23:22:36 +00:00
Stephen Kelly
5366172708 Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
Process #ifdef...#else...#endif blocks.

[SVN r86246]
2013-10-11 23:19:17 +00:00
Stephen Kelly
b02c60e468 Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
Process #ifndef...#else...#endif blocks.

[SVN r86245]
2013-10-11 23:17:48 +00:00
Stephen Kelly
c55650216f Remove obsolete files.
[SVN r86242]
2013-10-11 23:11:35 +00:00
Stephen Kelly
1e6ba3c885 Range: Remove obsolete GCC version checks.
[SVN r86102]
2013-10-01 08:41:42 +00:00
Stephen Kelly
4f34d95156 Remove obsolete MSVC check from pragma guard
git grep -h -B1 "^#\s*pragma once" | grep -v pragma | sort | uniq

is now clean.

[SVN r85952]
2013-09-26 13:02:51 +00:00
Stephen Kelly
650b75d2d7 Range: Remove obsolete MSVC version checks.
[SVN r85915]
2013-09-25 21:13:39 +00:00
Stephen Kelly
8af782611e Range: Remove ATL specific define for old MSVC.
[SVN r85912]
2013-09-25 21:12:40 +00:00
Neil Groves
34cea300e5 [boost][range] - fix a very odd compilation problem in range_size that only occurs on clang 4.2 on the Mac (clang 4.2 on linux is fine)
[SVN r85717]
2013-09-16 23:23:38 +00:00
Andrey Semashev
cca9739022 Fixed compilation with gcc 4.7.
[SVN r85707]
2013-09-16 17:13:20 +00:00
Neil Groves
30e6df5a15 [boost][range] - removed warnings found building with clang 3.2.
[SVN r85698]
2013-09-16 11:21:36 +00:00
Neil Groves
2285f909f6 [boost][range] correct lifetime defect in the tokenized range adapter
[SVN r85697]
2013-09-16 10:10:12 +00:00
Neil Groves
0addcfadeb [boost][range] - changed join_iterator reference type handling to address several user observations and failing clang builds.
[SVN r85692]
2013-09-15 22:15:46 +00:00
Neil Groves
426e0c39a8 [boost][range] - changed join_iterator reference type handling to address several user observations and failing clang builds.
[SVN r85691]
2013-09-15 22:15:12 +00:00
Neil Groves
f662a07bcc [boost][range] Ticket 8702 - size_type detection
[SVN r85690]
2013-09-15 21:54:32 +00:00
Neil Groves
90ce7f3703 [boost][range] - fix for ticket 6888 - unique predicate overloads
[SVN r85686]
2013-09-15 19:44:36 +00:00
Neil Groves
a59819fc6e [boost][range] - fix for ticket 8341 - has_range_iterator
[SVN r85682]
2013-09-15 18:05:49 +00:00
Tim Blechmann
2480b52f5b range: silence some warnings
[SVN r85584]
2013-09-06 08:51:00 +00:00
Nathan Ridge
b4f00e3c18 [range] Fixed a bug in join_iterator where joining a const range and a non-const range led to a compiler error (refs #8483).
[SVN r85400]
2013-08-20 06:06:12 +00:00
Nathan Ridge
b0c1cf556f [range] Fixed a bug in istream_range() that prevented it from working with character types other than 'char' (refs #7407).
[SVN r84707]
2013-06-09 02:34:36 +00:00
Nathan Ridge
8be23dd1aa [range] Fix off-by-one error in implementation of irange() (refs #7731).
[SVN r84701]
2013-06-08 20:41:43 +00:00
Nathan Ridge
1eb5554da9 [range] Choose the appropriate implementation of BOOST_RANGE_EXTRACT_OPTIONAL_TYPE() based on BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS rather than BOOST_NO_PARTIAL_TEMPLATE_SPECIALIZATION (refs #8453).
[SVN r84663]
2013-06-06 23:06:55 +00:00
Nathan Ridge
3d3631744f [range] Don't include <istream> unnecessarily in istream_range.hpp (refs #7408).
[SVN r84644]
2013-06-05 00:55:37 +00:00
Nathan Ridge
991bd7f8be [range] Fixed a failing test on gcc 4.2 (refs #6944).
[SVN r84643]
2013-06-05 00:42:41 +00:00
Nathan Ridge
c908e04144 [range] Make iterator of 'indexed' adaptor default-constructible (refs #7827).
[SVN r84617]
2013-06-03 09:00:46 +00:00
Nathan Ridge
1c18f42e83 [range] Use correct iterator concepts when checking Boost.Range concepts (refs #6944).
[SVN r84566]
2013-05-30 23:16:51 +00:00
Nathan Ridge
fe79a8efdd [range] allow iterator_range to be instantiated with a pointer to an array as the iterator type (refs #8338)
[SVN r83596]
2013-03-27 02:16:11 +00:00
Nathan Ridge
4971da58ee [range] fixed #7926 (missing prototypes for lower_bound and upper_bound in docs)
[SVN r82621]
2013-01-26 03:59:06 +00:00
Nathan Ridge
45a1acb980 [range] fix some minor typos in comments - fixes #7916
[SVN r82594]
2013-01-24 09:10:47 +00:00
Nathan Ridge
f228ab608a [range] fixed #7866 (minor typo in docs)
[SVN r82486]
2013-01-14 09:04:57 +00:00
Nathan Ridge
cbd915a988 [range] fixed #5314 (small mistakes in range adaptor examples)
[SVN r82346]
2013-01-04 01:18:36 +00:00
Nathan Ridge
fc88bc06ad [range] fixed #7843 (missing example in docs for 'tokenized' range adaptor)
[SVN r82345]
2013-01-04 00:58:17 +00:00
Nathan Ridge
4a44cc75c9 [range] refactor use of examples in documentation to avoid redundancy
[SVN r82344]
2013-01-03 23:44:30 +00:00
Nathan Ridge
86b169dab3 [range] fixed #5440 (typo in documentation for 'inner_product' algorithm)
[SVN r82327]
2013-01-03 01:06:39 +00:00
Nathan Ridge
36843ccdba [range] docs for writing adaptors: removed clarification added in r82315 (it was redundant); fixed typos that messed up numbering
[SVN r82326]
2013-01-03 01:01:55 +00:00
Nathan Ridge
17e4f7024d [range] fixed #5160 (typo in replace_copy_if() example on intro page for range adaptors)
[SVN r82325]
2013-01-02 23:41:58 +00:00
Nathan Ridge
3379affd4a [range] fixed #7585 (typo in documentation for 'indexed' adaptor)
[SVN r82316]
2013-01-02 08:09:46 +00:00
Nathan Ridge
958b4fbf6e [range] small clarification in documentation for how to write a range adaptor
[SVN r82315]
2013-01-02 08:05:30 +00:00
Nathan Ridge
61979ff421 [range] fixed #6212 (missing step in documentation for how to write a range adaptor)
[SVN r82314]
2013-01-02 07:51:21 +00:00
Nathan Ridge
1d51c3afb2 [range] fixed #5775 (typo in the documentation of pop_heap())
[SVN r82313]
2013-01-02 05:27:02 +00:00
Nathan Ridge
b7f443e583 [range] corrected undesirable namespace nesting in algorithm/search_n.hpp; fixes #6103
[SVN r82071]
2012-12-18 09:25:08 +00:00
Nathan Ridge
f49e347772 [range] added missing includes to any_range.hpp and related files; fixes #5603
[SVN r81890]
2012-12-13 07:48:50 +00:00
Nathan Ridge
bf4ca510ea [range] fixed some doc typos (patch by Michel Morin)
[SVN r81889]
2012-12-13 07:09:11 +00:00
Nathan Ridge
665c4a3234 [range] fixed a typo in the docs, introduced in r77990, that messed up the sections
[SVN r81888]
2012-12-13 07:01:39 +00:00
Neil Groves
dceccc9de9 [boost][range] - Added the missing include of boost/utility/enable_if.hpp to boost/range/algorithm/for_each.hpp
[SVN r79180]
2012-06-29 21:49:37 +00:00
Dave Abrahams
a72eae6099 Replace all uses of boost/utility.hpp with more-granular includes. Solves modularization dependency nightmare.
[SVN r78502]
2012-05-18 04:44:04 +00:00
Neil Groves
5a04c9e05b [boost][range] - Ticket 5993 - Accumulate Concept Check constness.
[SVN r77993]
2012-04-15 12:24:53 +00:00
Neil Groves
e6279d4436 [boost][range] - Ticket 6149 - as_literal causing unnecessary copy (on very silly compilers)
[SVN r77992]
2012-04-15 12:18:02 +00:00
Neil Groves
11238e4c19 [boost][range] - Trac 5971 - size() should return an unsigned type.
[SVN r77990]
2012-04-15 11:52:01 +00:00
Gennadiy Rozental
1cb6a99c80 eliminated unit_test_framework
[SVN r74719]
2011-10-05 09:13:05 +00:00
Bryce Adelstein-Lelbach
c4bd4bf4ce Remove tabs.
[SVN r72190]
2011-05-26 18:23:57 +00:00
Neil Groves
41b76f8f5c [boost][range] - Ticket 5236 - Improved test coverage to ensure that the result for a random access strided range is consistent with that of a bidirectional strided range.
[SVN r72108]
2011-05-22 22:15:14 +00:00
Neil Groves
846f11a96c [boost][range] - Ticket 5236 - Strided reversing past begin issue resolved.
[SVN r72107]
2011-05-22 22:06:30 +00:00
Neil Groves
8810c4c4aa [boost][range] - Ticket 5547 - Boost.Range join() ambiguous with Boost.Algorithm join() function. Put the Boost.Range join function into the boost::range namespace and brought out with 'using'
[SVN r72106]
2011-05-22 21:19:53 +00:00
Neil Groves
91428c2110 [boost][range] - Ticket 5530 - adaptor example fails to compile. This change adds tests for all of the .cpp example files for the range adaptors, and fixes a few small issues with the examples shown by the new tests.
[SVN r72104]
2011-05-22 21:03:01 +00:00
Neil Groves
44c26a3356 [boost][range] - Ticket 5486 - Removal of unnecessary variables from adjacent_filtered_range. This removes the requirement for the predicate to be default constructible.
[SVN r72102]
2011-05-22 20:33:06 +00:00
Neil Groves
b06fca8378 [boost][range] - Ticket 5556 - is_sorted namespace issue under GCC 4.5
[SVN r72101]
2011-05-22 20:20:20 +00:00
Neil Groves
3b3889b70f [boost][range] - Ticket 5485 - doubly defined BOOST_DEFINE_RANGE_ADAPTOR_1 macro.
[SVN r72098]
2011-05-22 20:01:12 +00:00
Neil Groves
5ed6116490 [boost][range] - ticket 5544 - fix for termination of irange - done properly for negative step sizes.
[SVN r72097]
2011-05-22 19:59:59 +00:00
Neil Groves
df1a3a334f [boost][range] - ticket 5544 - fix for termination of irange.
[SVN r72070]
2011-05-22 11:16:53 +00:00
142 changed files with 725 additions and 1135 deletions

View File

@@ -171,7 +171,7 @@
[def __metafunctions__ [@boost:/libs/mpl/doc/refmanual/metafunction.html metafunctions]]
[def __concept_check__ [@boost:/libs/concept_check/index.html Boost Concept Check library]]
[def __boost_array__ [@boost:/libs/array/index.html boost::array]]
[def __the_forwarding_problem__ [@http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]]
[def __the_forwarding_problem__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]]
[def __sgi_inner_product__ [@http://www.sgi.com/tech/stl/inner_product.html inner_product]]
[def __sgi_partial_sum__ [@http://www.sgi.com/tech/stl/partial_sum.html partial_sum]]

View File

@@ -11,23 +11,13 @@
#ifndef BOOST_RANGE_HPP_27_07_04
#define BOOST_RANGE_HPP_27_07_04
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif
#if _MSC_VER == 1300 // experiment
#include <boost/range/detail/collection_traits.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/sub_range.hpp>
#else
#include <boost/range/functions.hpp>
#include <boost/range/metafunctions.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/sub_range.hpp>
#endif // _MSC_VER == 1300 // experiment
#endif

0
include/boost/range/adaptor/argument_fwd.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/copied.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/filtered.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/map.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/reversed.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/sliced.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/strided.hpp Normal file → Executable file
View File

View File

@@ -52,9 +52,9 @@ namespace boost
template< class T, class U, class V >
struct regex_holder
{
const T& re;
const U& sub;
V f;
T re;
U sub;
V f;
regex_holder( const T& rex, const U& subm, V flag ) :
re(rex), sub(subm), f(flag)

0
include/boost/range/adaptor/transformed.hpp Normal file → Executable file
View File

0
include/boost/range/adaptor/uniqued.hpp Normal file → Executable file
View File

0
include/boost/range/adaptors.hpp Normal file → Executable file
View File

View File

@@ -19,7 +19,7 @@
// were originally written by Vladimir Prus'
// <ghost@cs.msu.su> code from Boost Wiki
#if defined(_MSC_VER) && _MSC_VER >= 1000
#if defined(_MSC_VER)
#pragma once
#endif

0
include/boost/range/algorithm/adjacent_find.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/binary_search.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/copy_backward.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/count.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/count_if.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/equal_range.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/fill.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/fill_n.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/find.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/find_end.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/find_first_of.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/find_if.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/generate.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/heap_algorithm.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/inplace_merge.hpp Normal file → Executable file
View File

View File

0
include/boost/range/algorithm/lower_bound.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/max_element.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/merge.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/min_element.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/mismatch.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/nth_element.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/partial_sort.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/partial_sort_copy.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/partition.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/permutation.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/random_shuffle.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/remove.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/remove_copy.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/remove_copy_if.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/remove_if.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/replace.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/replace_copy.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/replace_copy_if.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/replace_if.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/reverse.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/reverse_copy.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/rotate.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/rotate_copy.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/search.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/set_algorithm.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/sort.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/stable_partition.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/stable_sort.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/swap_ranges.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/transform.hpp Normal file → Executable file
View File

View File

@@ -89,11 +89,11 @@ inline BOOST_DEDUCED_TYPENAME range_return<ForwardRange, return_begin_found>::ty
unique( ForwardRange& rng, BinaryPredicate pred )
{
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
return ::boost::range::unique<return_begin_found>(rng);
return ::boost::range::unique<return_begin_found>(rng, pred);
}
/// \overload
template< class ForwardRange, class BinaryPredicate >
inline BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type
inline BOOST_DEDUCED_TYPENAME range_return<const ForwardRange, return_begin_found>::type
unique( const ForwardRange& rng, BinaryPredicate pred )
{
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));

0
include/boost/range/algorithm/unique_copy.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm/upper_bound.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/erase.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/for_each.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/insert.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/is_sorted.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/overwrite.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/push_back.hpp Normal file → Executable file
View File

0
include/boost/range/algorithm_ext/push_front.hpp Normal file → Executable file
View File

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_AS_ARRAY_HPP
#define BOOST_RANGE_AS_ARRAY_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_AS_LITERAL_HPP
#define BOOST_RANGE_AS_LITERAL_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

View File

@@ -35,15 +35,6 @@
#endif
#if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLESTRING)
#if (_MSC_VER < 1310) // from <boost/regex/mfc.hpp>, but dubious
#define BOOST_RANGE_ATL_HAS_OLD_CSIMPLESTRING
#endif
#endif
// forward declarations
//

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_BEGIN_HPP
#define BOOST_RANGE_BEGIN_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif
@@ -26,9 +26,7 @@
namespace boost
{
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
!BOOST_WORKAROUND(__GNUC__, < 3) \
/**/
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
namespace range_detail
{
#endif
@@ -85,9 +83,7 @@ namespace range_detail
}
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
!BOOST_WORKAROUND(__GNUC__, < 3) \
/**/
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
} // namespace 'range_detail'
#endif
@@ -100,9 +96,7 @@ namespace range_adl_barrier
template< class T >
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
{
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
!BOOST_WORKAROUND(__GNUC__, < 3) \
/**/
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
using namespace range_detail;
#endif
return range_begin( r );
@@ -111,9 +105,7 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
template< class T >
inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
{
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
!BOOST_WORKAROUND(__GNUC__, < 3) \
/**/
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
using namespace range_detail;
#endif
return range_begin( r );

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_CATEGORY_HPP
#define BOOST_RANGE_CATEGORY_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

0
include/boost/range/combine.hpp Normal file → Executable file
View File

View File

@@ -13,7 +13,7 @@
#include <boost/detail/workaround.hpp>
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif
@@ -26,18 +26,14 @@
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
# define BOOST_RANGE_DEDUCED_TYPENAME typename
#else
# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) && !defined(_MSC_EXTENSIONS)
# define BOOST_RANGE_DEDUCED_TYPENAME typename
# else
# define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
# endif
#define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
#endif
#ifdef BOOST_RANGE_NO_ARRAY_SUPPORT
#error "macro already defined!"
#endif
#if BOOST_WORKAROUND( BOOST_MSVC, < 1300 ) || BOOST_WORKAROUND( __MWERKS__, <= 0x3003 )
#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 )
#define BOOST_RANGE_NO_ARRAY_SUPPORT 1
#endif
@@ -48,6 +44,12 @@
#define BOOST_RANGE_ARRAY_REF() (&boost_range_array)
#endif
#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
# define BOOST_RANGE_UNUSED __attribute__((unused))
#else
# define BOOST_RANGE_UNUSED
#endif
#endif

View File

@@ -11,15 +11,12 @@
#ifndef BOOST_RANGE_CONST_ITERATOR_HPP
#define BOOST_RANGE_CONST_ITERATOR_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif
#include <boost/range/config.hpp>
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
#include <boost/range/detail/const_iterator.hpp>
#else
#include <boost/range/detail/extract_optional_type.hpp>
#include <boost/type_traits/remove_const.hpp>
@@ -62,6 +59,5 @@ namespace boost
} // namespace boost
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
#endif

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_CONST_REVERSE_ITERATOR_HPP
#define BOOST_RANGE_CONST_REVERSE_ITERATOR_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP
#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

View File

@@ -15,9 +15,6 @@
#include <boost/detail/workaround.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/detail/common.hpp>
#if BOOST_WORKAROUND(BOOST_MSVC, < 1310)
# include <boost/range/value_type.hpp>
#endif
namespace boost
{
@@ -62,19 +59,11 @@ namespace boost
template<>
struct range_begin<array_>
{
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
template< typename T, std::size_t sz >
static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
{
return boost_range_array;
}
#else
template<typename T>
static BOOST_RANGE_DEDUCED_TYPENAME range_value<T>::type* fun(T& t)
{
return t;
}
#endif
};
} // namespace 'range_detail'

0
include/boost/range/detail/collection_traits.hpp Normal file → Executable file
View File

View File

@@ -185,7 +185,6 @@ namespace boost {
// Array container traits ---------------------------------------------------------------
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// array traits ( partial specialization )
template< typename T >
struct array_traits;
@@ -204,125 +203,6 @@ namespace boost {
BOOST_STATIC_CONSTANT( size_type, array_size = sz );
};
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// array traits ( no partial specialization )
/*
without partial specialization we are able to
provide support only for a limited number of
types. Currently the primitive numeric types
are supported
*/
template< typename T, typename BaseT >
struct array_traits_impl
{
typedef BaseT value_type;
typedef BaseT* iterator;
typedef const BaseT* const_iterator;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
// size of the array
BOOST_STATIC_CONSTANT( size_type, array_size = sizeof(T)/sizeof(BaseT) );
};
template< typename T, typename BaseT >
struct array_traits_impl_selector
{
typedef array_traits_impl<T,BaseT> type;
};
struct array_traits_void
{
typedef void type;
};
template< typename T, typename BaseT >
struct array_traits_cv_selector
{
typedef BOOST_STRING_TYPENAME
::boost::mpl::eval_if<
::boost::is_convertible<T,BaseT*>,
array_traits_impl_selector<T,BaseT>,
::boost::mpl::eval_if<
::boost::is_convertible<T,const BaseT*>,
array_traits_impl_selector<T, const BaseT>,
::boost::mpl::eval_if<
::boost::is_convertible<T, volatile BaseT*>,
array_traits_impl_selector<T, volatile BaseT>,
array_traits_impl_selector<T, const volatile BaseT>
>
>
>::type type;
};
template< typename T >
struct array_traits_select
{
template< typename T1, typename T2 >
struct apply
{
typedef BOOST_STRING_TYPENAME
::boost::mpl::eval_if<
::boost::is_convertible<T,const volatile T2*>,
array_traits_cv_selector<T,T2>,
::boost::mpl::identity<T1> >::type type;
};
};
template< typename T >
struct array_traits_selector
{
private:
// supported array base types
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
typedef BOOST_STRING_TYPENAME
::boost::mpl::vector10<
wchar_t,
#else // BOOST_NO_INTRINSIC_WCHAR_T
typedef BOOST_STRING_TYPENAME
::boost::mpl::vector9<
#endif // BOOST_NO_INTRINSIC_WCHAR_T
char,
signed char,
unsigned char,
signed short,
unsigned short,
signed int,
unsigned int,
signed long,
unsigned long
>::type array_base_types;
public:
typedef BOOST_STRING_TYPENAME
::boost::mpl::fold<
array_base_types,
::boost::algorithm::detail::array_traits_void,
::boost::algorithm::detail::array_traits_select<T> >::type type;
};
template< typename T >
struct array_traits
{
typedef BOOST_STRING_TYPENAME
array_traits_selector<T>::type traits_type;
typedef BOOST_STRING_TYPENAME
traits_type::value_type value_type;
typedef BOOST_STRING_TYPENAME
traits_type::iterator iterator;
typedef BOOST_STRING_TYPENAME
traits_type::const_iterator const_iterator;
typedef BOOST_STRING_TYPENAME
traits_type::size_type size_type;
typedef BOOST_STRING_TYPENAME
traits_type::difference_type difference_type;
BOOST_STATIC_CONSTANT( size_type, array_size = traits_type::array_size );
};
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// array length resolving
/*

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_DETAIL_COMMON_HPP
#define BOOST_RANGE_DETAIL_COMMON_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

View File

@@ -1,71 +0,0 @@
// Boost.Range library
//
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
// distribution is subject to 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)
//
// For more information, see http://www.boost.org/libs/range/
//
#ifndef BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
#define BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
#include <boost/range/detail/common.hpp>
#include <boost/range/detail/remove_extent.hpp>
//////////////////////////////////////////////////////////////////////////////
// missing partial specialization workaround.
//////////////////////////////////////////////////////////////////////////////
namespace boost
{
namespace range_detail
{
template< typename T >
struct range_const_iterator_;
template<>
struct range_const_iterator_<std_container_>
{
template< typename C >
struct pts
{
typedef BOOST_RANGE_DEDUCED_TYPENAME C::const_iterator type;
};
};
template<>
struct range_const_iterator_<std_pair_>
{
template< typename P >
struct pts
{
typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
};
};
template<>
struct range_const_iterator_<array_>
{
template< typename T >
struct pts
{
typedef const BOOST_RANGE_DEDUCED_TYPENAME
remove_extent<T>::type* type;
};
};
}
template< typename C >
class range_const_iterator
{
typedef BOOST_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
public:
typedef BOOST_DEDUCED_TYPENAME range_detail::range_const_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
};
}
#endif

View File

0
include/boost/range/detail/difference_type.hpp Normal file → Executable file
View File

0
include/boost/range/detail/empty.hpp Normal file → Executable file
View File

View File

@@ -14,15 +14,9 @@
#include <boost/config.hpp> // BOOST_MSVC
#include <boost/detail/workaround.hpp>
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
# include <boost/range/detail/vc6/end.hpp>
#else
# include <boost/range/detail/implementation_help.hpp>
# include <boost/range/iterator.hpp>
# include <boost/range/detail/common.hpp>
# if BOOST_WORKAROUND(BOOST_MSVC, < 1310)
# include <boost/range/detail/remove_extent.hpp>
# endif
#include <boost/range/detail/implementation_help.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/detail/common.hpp>
namespace boost
{
@@ -68,19 +62,11 @@ namespace boost
template<>
struct range_end<array_>
{
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
template< typename T, std::size_t sz >
static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
{
return boost::range_detail::array_end( boost_range_array );
}
#else
template<typename T>
static BOOST_RANGE_DEDUCED_TYPENAME remove_extent<T>::type* fun(T& t)
{
return t + remove_extent<T>::size;
}
#endif
};
} // namespace 'range_detail'
@@ -97,5 +83,4 @@ namespace boost
} // namespace 'boost'
# endif // VC6
#endif

View File

@@ -10,7 +10,7 @@
#ifndef BOOST_RANGE_DETAIL_EXTRACT_OPTIONAL_TYPE_HPP_INCLUDED
#define BOOST_RANGE_DETAIL_EXTRACT_OPTIONAL_TYPE_HPP_INCLUDED
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#if defined(_MSC_VER)
# pragma once
#endif

14
include/boost/range/detail/implementation_help.hpp Normal file → Executable file
View File

@@ -21,13 +21,13 @@
#include <wchar.h>
#endif
namespace boost
namespace boost
{
namespace range_detail
{
template <typename T>
inline void boost_range_silence_warning( const T& ) { }
/////////////////////////////////////////////////////////////////////
// end() help
/////////////////////////////////////////////////////////////////////
@@ -36,7 +36,7 @@ namespace boost
{
return s + strlen( s );
}
#ifndef BOOST_NO_CWCHAR
inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
{
@@ -51,7 +51,7 @@ namespace boost
;
return s;
}
#endif
#endif
template< class Char >
inline Char* str_end( Char* s )
@@ -64,7 +64,7 @@ namespace boost
{
return boost_range_array + sz;
}
template< class T, std::size_t sz >
inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] )
{
@@ -74,7 +74,7 @@ namespace boost
/////////////////////////////////////////////////////////////////////
// size() help
/////////////////////////////////////////////////////////////////////
template< class Char >
inline std::size_t str_size( const Char* const& s )
{
@@ -96,7 +96,7 @@ namespace boost
}
} // namespace 'range_detail'
} // namespace 'boost'

View File

@@ -1,78 +0,0 @@
// Boost.Range library
//
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
// distribution is subject to 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)
//
// For more information, see http://www.boost.org/libs/range/
//
#ifndef BOOST_RANGE_DETAIL_ITERATOR_HPP
#define BOOST_RANGE_DETAIL_ITERATOR_HPP
#include <boost/range/detail/common.hpp>
#include <boost/range/detail/remove_extent.hpp>
#include <boost/static_assert.hpp>
//////////////////////////////////////////////////////////////////////////////
// missing partial specialization workaround.
//////////////////////////////////////////////////////////////////////////////
namespace boost
{
namespace range_detail
{
template< typename T >
struct range_iterator_ {
template< typename C >
struct pts
{
typedef int type;
};
};
template<>
struct range_iterator_<std_container_>
{
template< typename C >
struct pts
{
typedef BOOST_RANGE_DEDUCED_TYPENAME C::iterator type;
};
};
template<>
struct range_iterator_<std_pair_>
{
template< typename P >
struct pts
{
typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
};
};
template<>
struct range_iterator_<array_>
{
template< typename T >
struct pts
{
typedef BOOST_RANGE_DEDUCED_TYPENAME
remove_extent<T>::type* type;
};
};
}
template< typename C >
class range_mutable_iterator
{
typedef BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
public:
typedef typename range_detail::range_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
};
}
#endif

View File

@@ -23,6 +23,10 @@
#include <boost/range/empty.hpp>
#include <boost/range/detail/demote_iterator_traversal_tag.hpp>
#include <boost/range/value_type.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/next_prior.hpp>
namespace boost
@@ -71,7 +75,9 @@ public:
Reference dereference(unsigned int selected) const
{
return selected ? *m_it2 : *m_it1;
if (selected)
return *m_it2;
return *m_it1;
}
bool equal(const join_iterator_union& other, unsigned int selected) const
@@ -144,7 +150,7 @@ template<typename Iterator1
>::type
>::value,
typename add_const<
typename iterator_reference<Iterator2>::type
typename iterator_reference<Iterator1>::type
>::type,
typename iterator_reference<Iterator1>::type
>::type

0
include/boost/range/detail/misc_concept.hpp Normal file → Executable file
View File

View File

@@ -168,7 +168,7 @@ namespace boost
typedef boost::iterator_range<
BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type > type;
static type pack(BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type found,
static type pack(BOOST_DEDUCED_TYPENAME range_iterator<SinglePassRange>::type,
SinglePassRange& rng)
{
return type(boost::begin(rng), boost::end(rng));

0
include/boost/range/detail/remove_extent.hpp Normal file → Executable file
View File

0
include/boost/range/detail/sfinae.hpp Normal file → Executable file
View File

View File

@@ -1,159 +0,0 @@
// Boost.Range library
//
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
// distribution is subject to 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)
//
// For more information, see http://www.boost.org/libs/range/
//
#ifndef BOOST_RANGE_DETAIL_SIZE_HPP
#define BOOST_RANGE_DETAIL_SIZE_HPP
#include <boost/config.hpp> // BOOST_MSVC
#include <boost/detail/workaround.hpp>
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
# include <boost/range/detail/vc6/size.hpp>
#else
# include <boost/range/detail/implementation_help.hpp>
# include <boost/range/detail/size_type.hpp>
# include <boost/range/detail/common.hpp>
# if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
# include <boost/range/detail/remove_extent.hpp>
# endif
# include <iterator>
namespace boost
{
namespace range_detail
{
template< typename T >
struct range_size_;
//////////////////////////////////////////////////////////////////////
// default
//////////////////////////////////////////////////////////////////////
template<>
struct range_size_<std_container_>
{
template< typename C >
static BOOST_RANGE_DEDUCED_TYPENAME C::size_type fun( const C& c )
{
return c.size();
};
};
//////////////////////////////////////////////////////////////////////
// pair
//////////////////////////////////////////////////////////////////////
template<>
struct range_size_<std_pair_>
{
template< typename P >
static BOOST_RANGE_DEDUCED_TYPENAME range_size<P>::type
fun( const P& p )
{
return std::distance( p.first, p.second );
}
};
//////////////////////////////////////////////////////////////////////
// array
//////////////////////////////////////////////////////////////////////
template<>
struct range_size_<array_>
{
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
template< typename T, std::size_t sz >
static std::size_t fun( T BOOST_RANGE_ARRAY_REF()[sz] )
{
return sz;
}
#else
template<typename T>
static std::size_t fun(T& t)
{
return remove_extent<T>::size;
}
#endif
};
template<>
struct range_size_<char_array_>
{
template< typename T, std::size_t sz >
static std::size_t fun( T BOOST_RANGE_ARRAY_REF()[sz] )
{
return boost::range_detail::array_size( boost_range_array );
}
};
template<>
struct range_size_<wchar_t_array_>
{
template< typename T, std::size_t sz >
static std::size_t fun( T BOOST_RANGE_ARRAY_REF()[sz] )
{
return boost::range_detail::array_size( boost_range_array );
}
};
//////////////////////////////////////////////////////////////////////
// string
//////////////////////////////////////////////////////////////////////
template<>
struct range_size_<char_ptr_>
{
static std::size_t fun( const char* s )
{
return boost::range_detail::str_size( s );
}
};
template<>
struct range_size_<const_char_ptr_>
{
static std::size_t fun( const char* s )
{
return boost::range_detail::str_size( s );
}
};
template<>
struct range_size_<wchar_t_ptr_>
{
static std::size_t fun( const wchar_t* s )
{
return boost::range_detail::str_size( s );
}
};
template<>
struct range_size_<const_wchar_t_ptr_>
{
static std::size_t fun( const wchar_t* s )
{
return boost::range_detail::str_size( s );
}
};
} // namespace 'range_detail'
template< typename C >
BOOST_RANGE_DEDUCED_TYPENAME range_size<C>::type
size( const C& c )
{
return range_detail::range_size_< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
}
} // namespace 'boost'
# endif
#endif

View File

@@ -11,7 +11,7 @@
#ifndef BOOST_RANGE_DETAIL_SIZER_HPP
#define BOOST_RANGE_DETAIL_SIZER_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#if defined(_MSC_VER)
# pragma once
#endif

Some files were not shown because too many files have changed in this diff Show More