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
sequence_equal_byval_n(foreach_container_type & rng,char const * result)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
sequence_equal_byval_c(foreach_const_container_type & rng,char const * result)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
sequence_equal_byref_n(foreach_container_type & rng,char const * result)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
sequence_equal_byref_c(foreach_const_container_type & rng,char const * result)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 //
mutate_foreach_byref(foreach_container_type & rng)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
sequence_equal_byval_n_r(foreach_container_type & rng,char const * result)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
sequence_equal_byval_c_r(foreach_const_container_type & rng,char const * result)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
sequence_equal_byref_n_r(foreach_container_type & rng,char const * result)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
sequence_equal_byref_c_r(foreach_const_container_type & rng,char const * result)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 //
mutate_foreach_byref_r(foreach_container_type & rng)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