• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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