1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // utility.hpp header file |
3 | // |
4 | // Copyright 2005 Eric Niebler. |
5 | // Distributed under the Boost Software License, Version 1.0. (See |
6 | // accompanying file LICENSE_1_0.txt or copy at |
7 | // http://www.boost.org/LICENSE_1_0.txt) |
8 | // |
9 | |
10 | #ifndef BOOST_FOREACH_TEST_UTILITY_HPP |
11 | #define BOOST_FOREACH_TEST_UTILITY_HPP |
12 | |
13 | #include <boost/config.hpp> |
14 | #include <boost/foreach.hpp> |
15 | |
16 | /////////////////////////////////////////////////////////////////////////////// |
17 | // sequence_equal_byval_n |
18 | inline bool sequence_equal_byval_n( foreach_container_type & rng, char const * result ) |
19 | { |
20 | BOOST_FOREACH( foreach_value_type i, rng ) |
21 | { |
22 | if(0 == *result || i != *result) |
23 | return false; |
24 | ++result; |
25 | } |
26 | return 0 == *result; |
27 | } |
28 | |
29 | /////////////////////////////////////////////////////////////////////////////// |
30 | // sequence_equal_byval_c |
31 | inline bool sequence_equal_byval_c( foreach_const_container_type & rng, char const * result ) |
32 | { |
33 | BOOST_FOREACH( foreach_value_type i, rng ) |
34 | { |
35 | if(0 == *result || i != *result) |
36 | return false; |
37 | ++result; |
38 | } |
39 | return 0 == *result; |
40 | } |
41 | |
42 | /////////////////////////////////////////////////////////////////////////////// |
43 | // sequence_equal_byref_n |
44 | inline bool sequence_equal_byref_n( foreach_container_type & rng, char const * result ) |
45 | { |
46 | BOOST_FOREACH( foreach_reference_type i, rng ) |
47 | { |
48 | if(0 == *result || i != *result) |
49 | return false; |
50 | ++result; |
51 | } |
52 | return 0 == *result; |
53 | } |
54 | |
55 | /////////////////////////////////////////////////////////////////////////////// |
56 | // sequence_equal_byref_c |
57 | inline bool sequence_equal_byref_c( foreach_const_container_type & rng, char const * result ) |
58 | { |
59 | BOOST_FOREACH( foreach_const_reference_type i, rng ) |
60 | { |
61 | if(0 == *result || i != *result) |
62 | return false; |
63 | ++result; |
64 | } |
65 | return 0 == *result; |
66 | } |
67 | |
68 | /////////////////////////////////////////////////////////////////////////////// |
69 | // mutate_foreach_byref |
70 | // |
71 | inline void mutate_foreach_byref( foreach_container_type & rng ) |
72 | { |
73 | BOOST_FOREACH( foreach_reference_type i, rng ) |
74 | { |
75 | ++i; |
76 | } |
77 | } |
78 | |
79 | |
80 | /////////////////////////////////////////////////////////////////////////////// |
81 | // sequence_equal_byval_n_r |
82 | inline bool sequence_equal_byval_n_r( foreach_container_type & rng, char const * result ) |
83 | { |
84 | BOOST_REVERSE_FOREACH( foreach_value_type i, rng ) |
85 | { |
86 | if(0 == *result || i != *result) |
87 | return false; |
88 | ++result; |
89 | } |
90 | return 0 == *result; |
91 | } |
92 | |
93 | /////////////////////////////////////////////////////////////////////////////// |
94 | // sequence_equal_byval_c_r |
95 | inline bool sequence_equal_byval_c_r( foreach_const_container_type & rng, char const * result ) |
96 | { |
97 | BOOST_REVERSE_FOREACH( foreach_value_type i, rng ) |
98 | { |
99 | if(0 == *result || i != *result) |
100 | return false; |
101 | ++result; |
102 | } |
103 | return 0 == *result; |
104 | } |
105 | |
106 | /////////////////////////////////////////////////////////////////////////////// |
107 | // sequence_equal_byref_n_r |
108 | inline bool sequence_equal_byref_n_r( foreach_container_type & rng, char const * result ) |
109 | { |
110 | BOOST_REVERSE_FOREACH( foreach_reference_type i, rng ) |
111 | { |
112 | if(0 == *result || i != *result) |
113 | return false; |
114 | ++result; |
115 | } |
116 | return 0 == *result; |
117 | } |
118 | |
119 | /////////////////////////////////////////////////////////////////////////////// |
120 | // sequence_equal_byref_c_r |
121 | inline bool sequence_equal_byref_c_r( foreach_const_container_type & rng, char const * result ) |
122 | { |
123 | BOOST_REVERSE_FOREACH( foreach_const_reference_type i, rng ) |
124 | { |
125 | if(0 == *result || i != *result) |
126 | return false; |
127 | ++result; |
128 | } |
129 | return 0 == *result; |
130 | } |
131 | |
132 | /////////////////////////////////////////////////////////////////////////////// |
133 | // mutate_foreach_byref |
134 | // |
135 | inline void mutate_foreach_byref_r( foreach_container_type & rng ) |
136 | { |
137 | BOOST_REVERSE_FOREACH( foreach_reference_type i, rng ) |
138 | { |
139 | ++i; |
140 | } |
141 | } |
142 | |
143 | #endif |
144 | |