utility.hpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. #ifndef BOOST_FOREACH_TEST_UTILITY_HPP
  10. #define BOOST_FOREACH_TEST_UTILITY_HPP
  11. #include <boost/config.hpp>
  12. #include <boost/foreach.hpp>
  13. ///////////////////////////////////////////////////////////////////////////////
  14. // sequence_equal_byval_n
  15. inline bool sequence_equal_byval_n( foreach_container_type & rng, char const * result )
  16. {
  17. BOOST_FOREACH( foreach_value_type i, rng )
  18. {
  19. if(0 == *result || i != *result)
  20. return false;
  21. ++result;
  22. }
  23. return 0 == *result;
  24. }
  25. ///////////////////////////////////////////////////////////////////////////////
  26. // sequence_equal_byval_c
  27. inline bool sequence_equal_byval_c( foreach_const_container_type & rng, char const * result )
  28. {
  29. BOOST_FOREACH( foreach_value_type i, rng )
  30. {
  31. if(0 == *result || i != *result)
  32. return false;
  33. ++result;
  34. }
  35. return 0 == *result;
  36. }
  37. ///////////////////////////////////////////////////////////////////////////////
  38. // sequence_equal_byref_n
  39. inline bool sequence_equal_byref_n( foreach_container_type & rng, char const * result )
  40. {
  41. BOOST_FOREACH( foreach_reference_type i, rng )
  42. {
  43. if(0 == *result || i != *result)
  44. return false;
  45. ++result;
  46. }
  47. return 0 == *result;
  48. }
  49. ///////////////////////////////////////////////////////////////////////////////
  50. // sequence_equal_byref_c
  51. inline bool sequence_equal_byref_c( foreach_const_container_type & rng, char const * result )
  52. {
  53. BOOST_FOREACH( foreach_const_reference_type i, rng )
  54. {
  55. if(0 == *result || i != *result)
  56. return false;
  57. ++result;
  58. }
  59. return 0 == *result;
  60. }
  61. ///////////////////////////////////////////////////////////////////////////////
  62. // mutate_foreach_byref
  63. //
  64. inline void mutate_foreach_byref( foreach_container_type & rng )
  65. {
  66. BOOST_FOREACH( foreach_reference_type i, rng )
  67. {
  68. ++i;
  69. }
  70. }
  71. ///////////////////////////////////////////////////////////////////////////////
  72. // sequence_equal_byval_n_r
  73. inline bool sequence_equal_byval_n_r( foreach_container_type & rng, char const * result )
  74. {
  75. BOOST_REVERSE_FOREACH( foreach_value_type i, rng )
  76. {
  77. if(0 == *result || i != *result)
  78. return false;
  79. ++result;
  80. }
  81. return 0 == *result;
  82. }
  83. ///////////////////////////////////////////////////////////////////////////////
  84. // sequence_equal_byval_c_r
  85. inline bool sequence_equal_byval_c_r( foreach_const_container_type & rng, char const * result )
  86. {
  87. BOOST_REVERSE_FOREACH( foreach_value_type i, rng )
  88. {
  89. if(0 == *result || i != *result)
  90. return false;
  91. ++result;
  92. }
  93. return 0 == *result;
  94. }
  95. ///////////////////////////////////////////////////////////////////////////////
  96. // sequence_equal_byref_n_r
  97. inline bool sequence_equal_byref_n_r( foreach_container_type & rng, char const * result )
  98. {
  99. BOOST_REVERSE_FOREACH( foreach_reference_type i, rng )
  100. {
  101. if(0 == *result || i != *result)
  102. return false;
  103. ++result;
  104. }
  105. return 0 == *result;
  106. }
  107. ///////////////////////////////////////////////////////////////////////////////
  108. // sequence_equal_byref_c_r
  109. inline bool sequence_equal_byref_c_r( foreach_const_container_type & rng, char const * result )
  110. {
  111. BOOST_REVERSE_FOREACH( foreach_const_reference_type i, rng )
  112. {
  113. if(0 == *result || i != *result)
  114. return false;
  115. ++result;
  116. }
  117. return 0 == *result;
  118. }
  119. ///////////////////////////////////////////////////////////////////////////////
  120. // mutate_foreach_byref
  121. //
  122. inline void mutate_foreach_byref_r( foreach_container_type & rng )
  123. {
  124. BOOST_REVERSE_FOREACH( foreach_reference_type i, rng )
  125. {
  126. ++i;
  127. }
  128. }
  129. #endif