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
18inline 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
31inline 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
44inline 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
57inline 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//
71inline 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
82inline 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
95inline 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
108inline 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
121inline 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//
135inline 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

source code of boost/libs/foreach/test/utility.hpp