passenger 3.9.1.beta → 3.9.2.beta

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (1643) hide show
  1. data/.travis.yml +13 -0
  2. data/CONTRIBUTING.md +287 -0
  3. data/INSTALL.md +7 -0
  4. data/NEWS +32 -0
  5. data/README.md +46 -0
  6. data/Rakefile +2 -2
  7. data/bin/passenger +1 -1
  8. data/bin/passenger-config +1 -1
  9. data/bin/passenger-install-apache2-module +1 -1
  10. data/bin/passenger-install-nginx-module +1 -1
  11. data/bin/passenger-memory-stats +1 -1
  12. data/bin/passenger-status +1 -1
  13. data/build/agents.rb +7 -7
  14. data/build/apache2.rb +2 -2
  15. data/build/basics.rb +3 -7
  16. data/build/common_library.rb +14 -7
  17. data/build/cplusplus_support.rb +1 -1
  18. data/build/cxx_tests.rb +19 -7
  19. data/build/documentation.rb +1 -1
  20. data/build/integration_tests.rb +2 -2
  21. data/build/misc.rb +6 -6
  22. data/build/nginx.rb +1 -1
  23. data/build/oxt_tests.rb +1 -1
  24. data/build/packaging.rb +13 -23
  25. data/build/rake_extensions.rb +1 -1
  26. data/build/rpm.rb +1 -1
  27. data/build/ruby_extension.rb +2 -2
  28. data/build/ruby_tests.rb +4 -4
  29. data/build/test_basics.rb +15 -2
  30. data/dev/copy_boost_headers.rb +18 -8
  31. data/dev/find_owner_pipe_leaks.rb +1 -1
  32. data/dev/render_error_pages.rb +1 -1
  33. data/dev/run_travis.sh +39 -0
  34. data/doc/Architectural overview.html +55 -21
  35. data/doc/{DebuggingAndStressTesting.txt.md → DebuggingAndStressTesting.md} +12 -1
  36. data/doc/Security of user switching support.html +47 -16
  37. data/doc/Users guide Apache.html +802 -378
  38. data/doc/Users guide Apache.idmap.txt +85 -209
  39. data/doc/Users guide Apache.txt +65 -338
  40. data/doc/Users guide Nginx.html +715 -252
  41. data/doc/Users guide Nginx.idmap.txt +71 -147
  42. data/doc/Users guide Nginx.txt +29 -245
  43. data/doc/Users guide Standalone.html +45 -14
  44. data/doc/Users guide Standalone.idmap.txt +0 -2
  45. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +1 -1
  46. data/doc/users_guide_snippets/installation.txt +604 -0
  47. data/doc/users_guide_snippets/support_information.txt +5 -4
  48. data/doc/users_guide_snippets/tips.txt +54 -1
  49. data/ext/apache2/Bucket.cpp +1 -1
  50. data/ext/apache2/Bucket.h +1 -1
  51. data/ext/apache2/Configuration.cpp +2 -14
  52. data/ext/apache2/Configuration.h +1 -1
  53. data/ext/apache2/Configuration.hpp +3 -22
  54. data/ext/apache2/DirectoryMapper.h +1 -1
  55. data/ext/apache2/Hooks.cpp +5 -5
  56. data/ext/apache2/Hooks.h +1 -1
  57. data/ext/apache2/mod_passenger.c +1 -1
  58. data/ext/boost/aligned_storage.hpp +181 -0
  59. data/ext/boost/array.hpp +446 -0
  60. data/ext/boost/cerrno.hpp +331 -0
  61. data/ext/boost/chrono/ceil.hpp +36 -0
  62. data/ext/boost/chrono/clock_string.hpp +25 -0
  63. data/ext/boost/chrono/config.hpp +215 -0
  64. data/ext/boost/chrono/detail/is_evenly_divisible_by.hpp +31 -0
  65. data/ext/boost/chrono/detail/static_assert.hpp +30 -0
  66. data/ext/boost/chrono/detail/system.hpp +29 -0
  67. data/ext/boost/chrono/duration.hpp +795 -0
  68. data/ext/boost/chrono/system_clocks.hpp +233 -0
  69. data/ext/boost/chrono/time_point.hpp +379 -0
  70. data/ext/boost/concept_check.hpp +5 -5
  71. data/ext/boost/config/compiler/borland.hpp +29 -27
  72. data/ext/boost/config/compiler/clang.hpp +40 -26
  73. data/ext/boost/config/compiler/codegear.hpp +20 -19
  74. data/ext/boost/config/compiler/common_edg.hpp +27 -25
  75. data/ext/boost/config/compiler/cray.hpp +24 -22
  76. data/ext/boost/config/compiler/digitalmars.hpp +26 -24
  77. data/ext/boost/config/compiler/gcc.hpp +32 -30
  78. data/ext/boost/config/compiler/gcc_xml.hpp +26 -25
  79. data/ext/boost/config/compiler/hp_acc.hpp +26 -24
  80. data/ext/boost/config/compiler/intel.hpp +26 -24
  81. data/ext/boost/config/compiler/metrowerks.hpp +27 -25
  82. data/ext/boost/config/compiler/mpw.hpp +27 -25
  83. data/ext/boost/config/compiler/pathscale.hpp +41 -41
  84. data/ext/boost/config/compiler/pgi.hpp +70 -29
  85. data/ext/boost/config/compiler/sunpro_cc.hpp +27 -25
  86. data/ext/boost/config/compiler/vacpp.hpp +36 -26
  87. data/ext/boost/config/compiler/visualc.hpp +80 -57
  88. data/ext/boost/config/stdlib/dinkumware.hpp +25 -22
  89. data/ext/boost/config/stdlib/libcomo.hpp +23 -20
  90. data/ext/boost/config/stdlib/libcpp.hpp +5 -4
  91. data/ext/boost/config/stdlib/libstdcpp3.hpp +34 -25
  92. data/ext/boost/config/stdlib/modena.hpp +23 -20
  93. data/ext/boost/config/stdlib/msl.hpp +23 -20
  94. data/ext/boost/config/stdlib/roguewave.hpp +23 -20
  95. data/ext/boost/config/stdlib/sgi.hpp +23 -20
  96. data/ext/boost/config/stdlib/stlport.hpp +23 -24
  97. data/ext/boost/config/stdlib/vacpp.hpp +23 -20
  98. data/ext/boost/config/suffix.hpp +266 -75
  99. data/ext/boost/container/container_fwd.hpp +39 -43
  100. data/ext/boost/date_time/adjust_functors.hpp +1 -1
  101. data/ext/boost/date_time/c_time.hpp +1 -1
  102. data/ext/boost/date_time/compiler_config.hpp +1 -1
  103. data/ext/boost/date_time/constrained_value.hpp +1 -1
  104. data/ext/boost/date_time/date.hpp +3 -3
  105. data/ext/boost/date_time/date_clock_device.hpp +1 -1
  106. data/ext/boost/date_time/date_defs.hpp +1 -1
  107. data/ext/boost/date_time/date_duration.hpp +9 -9
  108. data/ext/boost/date_time/date_duration_types.hpp +1 -1
  109. data/ext/boost/date_time/date_facet.hpp +7 -4
  110. data/ext/boost/date_time/date_format_simple.hpp +1 -1
  111. data/ext/boost/date_time/date_formatting.hpp +4 -2
  112. data/ext/boost/date_time/date_formatting_limited.hpp +1 -1
  113. data/ext/boost/date_time/date_formatting_locales.hpp +1 -1
  114. data/ext/boost/date_time/date_generator_formatter.hpp +1 -1
  115. data/ext/boost/date_time/date_generator_parser.hpp +1 -1
  116. data/ext/boost/date_time/date_generators.hpp +35 -35
  117. data/ext/boost/date_time/date_iterator.hpp +15 -15
  118. data/ext/boost/date_time/date_names_put.hpp +26 -26
  119. data/ext/boost/date_time/date_parsing.hpp +3 -1
  120. data/ext/boost/date_time/dst_rules.hpp +2 -2
  121. data/ext/boost/date_time/filetime_functions.hpp +1 -1
  122. data/ext/boost/date_time/format_date_parser.hpp +1 -7
  123. data/ext/boost/date_time/gregorian/conversion.hpp +1 -1
  124. data/ext/boost/date_time/gregorian/formatters.hpp +1 -1
  125. data/ext/boost/date_time/gregorian/formatters_limited.hpp +1 -1
  126. data/ext/boost/date_time/gregorian/greg_calendar.hpp +1 -1
  127. data/ext/boost/date_time/gregorian/greg_date.hpp +1 -1
  128. data/ext/boost/date_time/gregorian/greg_day.hpp +1 -1
  129. data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
  130. data/ext/boost/date_time/gregorian/greg_duration.hpp +1 -1
  131. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
  132. data/ext/boost/date_time/gregorian/greg_month.hpp +1 -1
  133. data/ext/boost/date_time/gregorian/greg_weekday.hpp +1 -1
  134. data/ext/boost/date_time/gregorian/greg_year.hpp +1 -1
  135. data/ext/boost/date_time/gregorian/greg_ymd.hpp +1 -1
  136. data/ext/boost/date_time/gregorian/gregorian.hpp +1 -1
  137. data/ext/boost/date_time/gregorian/gregorian_io.hpp +1 -1
  138. data/ext/boost/date_time/gregorian/gregorian_types.hpp +1 -1
  139. data/ext/boost/date_time/gregorian/parsers.hpp +1 -1
  140. data/ext/boost/date_time/gregorian_calendar.hpp +1 -1
  141. data/ext/boost/date_time/gregorian_calendar.ipp +1 -1
  142. data/ext/boost/date_time/int_adapter.hpp +1 -1
  143. data/ext/boost/date_time/iso_format.hpp +1 -1
  144. data/ext/boost/date_time/locale_config.hpp +1 -1
  145. data/ext/boost/date_time/microsec_time_clock.hpp +1 -1
  146. data/ext/boost/date_time/parse_format_base.hpp +1 -1
  147. data/ext/boost/date_time/period.hpp +1 -1
  148. data/ext/boost/date_time/period_formatter.hpp +5 -5
  149. data/ext/boost/date_time/period_parser.hpp +1 -1
  150. data/ext/boost/date_time/posix_time/conversion.hpp +1 -1
  151. data/ext/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
  152. data/ext/boost/date_time/posix_time/posix_time.hpp +1 -1
  153. data/ext/boost/date_time/posix_time/posix_time_config.hpp +2 -2
  154. data/ext/boost/date_time/posix_time/posix_time_duration.hpp +1 -1
  155. data/ext/boost/date_time/posix_time/posix_time_io.hpp +1 -1
  156. data/ext/boost/date_time/posix_time/posix_time_system.hpp +1 -1
  157. data/ext/boost/date_time/posix_time/ptime.hpp +1 -1
  158. data/ext/boost/date_time/posix_time/time_formatters.hpp +1 -1
  159. data/ext/boost/date_time/posix_time/time_parsers.hpp +1 -1
  160. data/ext/boost/date_time/posix_time/time_period.hpp +1 -1
  161. data/ext/boost/date_time/special_defs.hpp +1 -1
  162. data/ext/boost/date_time/special_values_formatter.hpp +1 -1
  163. data/ext/boost/date_time/string_convert.hpp +1 -1
  164. data/ext/boost/date_time/string_parse_tree.hpp +1 -1
  165. data/ext/boost/date_time/strings_from_facet.hpp +1 -1
  166. data/ext/boost/date_time/time.hpp +1 -1
  167. data/ext/boost/date_time/time_clock.hpp +1 -1
  168. data/ext/boost/date_time/time_defs.hpp +1 -1
  169. data/ext/boost/date_time/time_duration.hpp +17 -6
  170. data/ext/boost/date_time/time_facet.hpp +1 -1
  171. data/ext/boost/date_time/time_formatting_streams.hpp +1 -1
  172. data/ext/boost/date_time/time_iterator.hpp +17 -17
  173. data/ext/boost/date_time/time_parsing.hpp +6 -3
  174. data/ext/boost/date_time/time_resolution_traits.hpp +1 -1
  175. data/ext/boost/date_time/time_system_counted.hpp +1 -1
  176. data/ext/boost/date_time/time_system_split.hpp +1 -1
  177. data/ext/boost/date_time/wrapping_int.hpp +27 -27
  178. data/ext/boost/date_time/year_month_day.hpp +1 -1
  179. data/ext/boost/detail/container_fwd.hpp +162 -0
  180. data/ext/boost/detail/is_incrementable.hpp +134 -0
  181. data/ext/boost/detail/scoped_enum_emulation.hpp +337 -0
  182. data/ext/boost/exception/detail/attribute_noreturn.hpp +1 -1
  183. data/ext/boost/exception/detail/error_info_impl.hpp +2 -1
  184. data/ext/boost/exception/detail/exception_ptr.hpp +7 -2
  185. data/ext/boost/exception/exception.hpp +29 -2
  186. data/ext/boost/exception/info.hpp +1 -1
  187. data/ext/boost/foreach.hpp +1128 -0
  188. data/ext/boost/foreach_fwd.hpp +51 -0
  189. data/ext/boost/function/function_template.hpp +50 -1
  190. data/ext/boost/functional/hash.hpp +7 -0
  191. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +29 -0
  192. data/ext/boost/functional/hash/detail/float_functions.hpp +246 -0
  193. data/ext/boost/functional/hash/detail/hash_float.hpp +268 -0
  194. data/ext/boost/functional/hash/detail/limits.hpp +61 -0
  195. data/ext/boost/functional/hash/extensions.hpp +367 -0
  196. data/ext/boost/functional/hash/hash.hpp +509 -0
  197. data/ext/boost/functional/hash/hash_fwd.hpp +40 -0
  198. data/ext/boost/functional/hash_fwd.hpp +7 -0
  199. data/ext/boost/indirect_reference.hpp +43 -0
  200. data/ext/boost/integer.hpp +19 -15
  201. data/ext/boost/integer/static_log2.hpp +127 -0
  202. data/ext/boost/integer_traits.hpp +1 -1
  203. data/ext/boost/iterator/iterator_facade.hpp +32 -36
  204. data/ext/boost/iterator/reverse_iterator.hpp +1 -1
  205. data/ext/boost/iterator/transform_iterator.hpp +1 -1
  206. data/ext/boost/lambda/core.hpp +79 -0
  207. data/ext/boost/lambda/detail/actions.hpp +174 -0
  208. data/ext/boost/lambda/detail/arity_code.hpp +110 -0
  209. data/ext/boost/lambda/detail/function_adaptors.hpp +789 -0
  210. data/ext/boost/lambda/detail/is_instance_of.hpp +104 -0
  211. data/ext/boost/lambda/detail/lambda_config.hpp +48 -0
  212. data/ext/boost/lambda/detail/lambda_functor_base.hpp +615 -0
  213. data/ext/boost/lambda/detail/lambda_functors.hpp +324 -0
  214. data/ext/boost/lambda/detail/lambda_fwd.hpp +74 -0
  215. data/ext/boost/lambda/detail/lambda_traits.hpp +578 -0
  216. data/ext/boost/lambda/detail/member_ptr.hpp +737 -0
  217. data/ext/boost/lambda/detail/operator_actions.hpp +139 -0
  218. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +271 -0
  219. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +917 -0
  220. data/ext/boost/lambda/detail/operators.hpp +370 -0
  221. data/ext/boost/lambda/detail/ret.hpp +325 -0
  222. data/ext/boost/lambda/detail/return_type_traits.hpp +282 -0
  223. data/ext/boost/lambda/detail/select_functions.hpp +74 -0
  224. data/ext/boost/lambda/lambda.hpp +34 -0
  225. data/ext/boost/lexical_cast.hpp +807 -497
  226. data/ext/boost/libs/system/src/error_code.cpp +430 -0
  227. data/ext/boost/libs/system/src/local_free_on_destruction.hpp +40 -0
  228. data/ext/boost/libs/thread/src/future.cpp +61 -0
  229. data/ext/boost/{src → libs/thread/src}/pthread/once.cpp +28 -9
  230. data/ext/boost/{src → libs/thread/src}/pthread/thread.cpp +139 -47
  231. data/ext/boost/{src → libs/thread/src}/pthread/timeconv.inl +0 -0
  232. data/ext/boost/{src → libs/thread/src}/tss_null.cpp +2 -2
  233. data/ext/boost/math/policies/policy.hpp +4 -4
  234. data/ext/boost/math/special_functions/fpclassify.hpp +10 -6
  235. data/ext/boost/math/special_functions/math_fwd.hpp +226 -0
  236. data/ext/boost/math/tools/config.hpp +10 -1
  237. data/ext/boost/move/move.hpp +70 -19
  238. data/ext/boost/mpl/O1_size.hpp +1 -1
  239. data/ext/boost/mpl/O1_size_fwd.hpp +1 -1
  240. data/ext/boost/mpl/accumulate.hpp +39 -0
  241. data/ext/boost/mpl/advance.hpp +1 -1
  242. data/ext/boost/mpl/advance_fwd.hpp +1 -1
  243. data/ext/boost/mpl/alias.hpp +21 -0
  244. data/ext/boost/mpl/always.hpp +1 -1
  245. data/ext/boost/mpl/and.hpp +1 -1
  246. data/ext/boost/mpl/apply.hpp +1 -1
  247. data/ext/boost/mpl/apply_fwd.hpp +1 -1
  248. data/ext/boost/mpl/apply_wrap.hpp +1 -1
  249. data/ext/boost/mpl/arg.hpp +1 -1
  250. data/ext/boost/mpl/arg_fwd.hpp +1 -1
  251. data/ext/boost/mpl/arithmetic.hpp +25 -0
  252. data/ext/boost/mpl/as_sequence.hpp +38 -0
  253. data/ext/boost/mpl/assert.hpp +1 -1
  254. data/ext/boost/mpl/at.hpp +1 -1
  255. data/ext/boost/mpl/at_fwd.hpp +1 -1
  256. data/ext/boost/mpl/aux_/O1_size_impl.hpp +1 -1
  257. data/ext/boost/mpl/aux_/adl_barrier.hpp +1 -1
  258. data/ext/boost/mpl/aux_/advance_backward.hpp +1 -1
  259. data/ext/boost/mpl/aux_/advance_forward.hpp +1 -1
  260. data/ext/boost/mpl/aux_/apply_1st.hpp +35 -0
  261. data/ext/boost/mpl/aux_/arg_typedef.hpp +1 -1
  262. data/ext/boost/mpl/aux_/arithmetic_op.hpp +1 -1
  263. data/ext/boost/mpl/aux_/arity.hpp +1 -1
  264. data/ext/boost/mpl/aux_/arity_spec.hpp +1 -1
  265. data/ext/boost/mpl/aux_/at_impl.hpp +1 -1
  266. data/ext/boost/mpl/aux_/back_impl.hpp +43 -0
  267. data/ext/boost/mpl/aux_/basic_bind.hpp +21 -0
  268. data/ext/boost/mpl/aux_/begin_end_impl.hpp +1 -1
  269. data/ext/boost/mpl/aux_/clear_impl.hpp +1 -1
  270. data/ext/boost/mpl/aux_/common_name_wknd.hpp +1 -1
  271. data/ext/boost/mpl/aux_/comparison_op.hpp +1 -1
  272. data/ext/boost/mpl/aux_/config/adl.hpp +1 -1
  273. data/ext/boost/mpl/aux_/config/arrays.hpp +1 -1
  274. data/ext/boost/mpl/aux_/config/bind.hpp +1 -1
  275. data/ext/boost/mpl/aux_/config/compiler.hpp +1 -1
  276. data/ext/boost/mpl/aux_/config/ctps.hpp +1 -1
  277. data/ext/boost/mpl/aux_/config/dependent_nttp.hpp +35 -0
  278. data/ext/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +27 -0
  279. data/ext/boost/mpl/aux_/config/dtp.hpp +1 -1
  280. data/ext/boost/mpl/aux_/config/eti.hpp +1 -1
  281. data/ext/boost/mpl/aux_/config/forwarding.hpp +1 -1
  282. data/ext/boost/mpl/aux_/config/gcc.hpp +1 -1
  283. data/ext/boost/mpl/aux_/config/has_apply.hpp +1 -1
  284. data/ext/boost/mpl/aux_/config/has_xxx.hpp +1 -1
  285. data/ext/boost/mpl/aux_/config/integral.hpp +1 -1
  286. data/ext/boost/mpl/aux_/config/intel.hpp +1 -1
  287. data/ext/boost/mpl/aux_/config/lambda.hpp +1 -1
  288. data/ext/boost/mpl/aux_/config/msvc.hpp +1 -1
  289. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +1 -1
  290. data/ext/boost/mpl/aux_/config/nttp.hpp +1 -1
  291. data/ext/boost/mpl/aux_/config/operators.hpp +33 -0
  292. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
  293. data/ext/boost/mpl/aux_/config/pp_counter.hpp +1 -1
  294. data/ext/boost/mpl/aux_/config/preprocessor.hpp +1 -1
  295. data/ext/boost/mpl/aux_/config/static_constant.hpp +1 -1
  296. data/ext/boost/mpl/aux_/config/ttp.hpp +1 -1
  297. data/ext/boost/mpl/aux_/config/typeof.hpp +1 -1
  298. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +1 -1
  299. data/ext/boost/mpl/aux_/config/workaround.hpp +1 -1
  300. data/ext/boost/mpl/aux_/contains_impl.hpp +1 -1
  301. data/ext/boost/mpl/aux_/count_args.hpp +105 -0
  302. data/ext/boost/mpl/aux_/count_impl.hpp +44 -0
  303. data/ext/boost/mpl/aux_/empty_impl.hpp +43 -0
  304. data/ext/boost/mpl/aux_/erase_impl.hpp +69 -0
  305. data/ext/boost/mpl/aux_/erase_key_impl.hpp +32 -0
  306. data/ext/boost/mpl/aux_/filter_iter.hpp +140 -0
  307. data/ext/boost/mpl/aux_/fold_impl.hpp +1 -1
  308. data/ext/boost/mpl/aux_/fold_impl_body.hpp +365 -0
  309. data/ext/boost/mpl/aux_/fold_op.hpp +37 -0
  310. data/ext/boost/mpl/aux_/fold_pred.hpp +37 -0
  311. data/ext/boost/mpl/aux_/front_impl.hpp +41 -0
  312. data/ext/boost/mpl/aux_/full_lambda.hpp +1 -1
  313. data/ext/boost/mpl/aux_/has_apply.hpp +1 -1
  314. data/ext/boost/mpl/aux_/has_begin.hpp +1 -1
  315. data/ext/boost/mpl/aux_/has_key_impl.hpp +34 -0
  316. data/ext/boost/mpl/aux_/has_rebind.hpp +99 -0
  317. data/ext/boost/mpl/aux_/has_size.hpp +1 -1
  318. data/ext/boost/mpl/aux_/has_tag.hpp +1 -1
  319. data/ext/boost/mpl/aux_/has_type.hpp +1 -1
  320. data/ext/boost/mpl/aux_/include_preprocessed.hpp +1 -1
  321. data/ext/boost/mpl/aux_/insert_impl.hpp +68 -0
  322. data/ext/boost/mpl/aux_/insert_range_impl.hpp +77 -0
  323. data/ext/boost/mpl/aux_/inserter_algorithm.hpp +1 -1
  324. data/ext/boost/mpl/aux_/integral_wrapper.hpp +1 -1
  325. data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +1 -1
  326. data/ext/boost/mpl/aux_/iter_apply.hpp +1 -1
  327. data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +1 -1
  328. data/ext/boost/mpl/aux_/iter_fold_impl.hpp +1 -1
  329. data/ext/boost/mpl/aux_/iter_push_front.hpp +36 -0
  330. data/ext/boost/mpl/aux_/joint_iter.hpp +120 -0
  331. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +1 -1
  332. data/ext/boost/mpl/aux_/lambda_no_ctps.hpp +193 -0
  333. data/ext/boost/mpl/aux_/lambda_spec.hpp +1 -1
  334. data/ext/boost/mpl/aux_/lambda_support.hpp +1 -1
  335. data/ext/boost/mpl/aux_/largest_int.hpp +1 -1
  336. data/ext/boost/mpl/aux_/logical_op.hpp +165 -0
  337. data/ext/boost/mpl/aux_/msvc_dtw.hpp +68 -0
  338. data/ext/boost/mpl/aux_/msvc_eti_base.hpp +1 -1
  339. data/ext/boost/mpl/aux_/msvc_is_class.hpp +58 -0
  340. data/ext/boost/mpl/aux_/msvc_never_true.hpp +1 -1
  341. data/ext/boost/mpl/aux_/msvc_type.hpp +1 -1
  342. data/ext/boost/mpl/aux_/na.hpp +1 -1
  343. data/ext/boost/mpl/aux_/na_assert.hpp +1 -1
  344. data/ext/boost/mpl/aux_/na_fwd.hpp +1 -1
  345. data/ext/boost/mpl/aux_/na_spec.hpp +1 -1
  346. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
  347. data/ext/boost/mpl/aux_/nttp_decl.hpp +1 -1
  348. data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +1 -1
  349. data/ext/boost/mpl/aux_/numeric_op.hpp +1 -1
  350. data/ext/boost/mpl/aux_/order_impl.hpp +76 -0
  351. data/ext/boost/mpl/aux_/overload_names.hpp +48 -0
  352. data/ext/boost/mpl/aux_/partition_op.hpp +58 -0
  353. data/ext/boost/mpl/aux_/pop_back_impl.hpp +34 -0
  354. data/ext/boost/mpl/aux_/pop_front_impl.hpp +44 -0
  355. data/ext/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp +97 -0
  356. data/ext/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp +97 -0
  357. data/ext/boost/mpl/aux_/preprocessed/bcc/and.hpp +69 -0
  358. data/ext/boost/mpl/aux_/preprocessed/bcc/apply.hpp +169 -0
  359. data/ext/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp +52 -0
  360. data/ext/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp +461 -0
  361. data/ext/boost/mpl/aux_/preprocessed/bcc/arg.hpp +117 -0
  362. data/ext/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp +300 -0
  363. data/ext/boost/mpl/aux_/preprocessed/bcc/bind.hpp +397 -0
  364. data/ext/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp +46 -0
  365. data/ext/boost/mpl/aux_/preprocessed/bcc/bitand.hpp +147 -0
  366. data/ext/boost/mpl/aux_/preprocessed/bcc/bitor.hpp +147 -0
  367. data/ext/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp +147 -0
  368. data/ext/boost/mpl/aux_/preprocessed/bcc/deque.hpp +323 -0
  369. data/ext/boost/mpl/aux_/preprocessed/bcc/divides.hpp +146 -0
  370. data/ext/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp +94 -0
  371. data/ext/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp +180 -0
  372. data/ext/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp +558 -0
  373. data/ext/boost/mpl/aux_/preprocessed/bcc/greater.hpp +94 -0
  374. data/ext/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp +94 -0
  375. data/ext/boost/mpl/aux_/preprocessed/bcc/inherit.hpp +139 -0
  376. data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp +133 -0
  377. data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp +180 -0
  378. data/ext/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp +229 -0
  379. data/ext/boost/mpl/aux_/preprocessed/bcc/less.hpp +94 -0
  380. data/ext/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp +94 -0
  381. data/ext/boost/mpl/aux_/preprocessed/bcc/list.hpp +323 -0
  382. data/ext/boost/mpl/aux_/preprocessed/bcc/list_c.hpp +328 -0
  383. data/ext/boost/mpl/aux_/preprocessed/bcc/map.hpp +323 -0
  384. data/ext/boost/mpl/aux_/preprocessed/bcc/minus.hpp +146 -0
  385. data/ext/boost/mpl/aux_/preprocessed/bcc/modulus.hpp +101 -0
  386. data/ext/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp +94 -0
  387. data/ext/boost/mpl/aux_/preprocessed/bcc/or.hpp +69 -0
  388. data/ext/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp +105 -0
  389. data/ext/boost/mpl/aux_/preprocessed/bcc/plus.hpp +146 -0
  390. data/ext/boost/mpl/aux_/preprocessed/bcc/quote.hpp +119 -0
  391. data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp +295 -0
  392. data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp +295 -0
  393. data/ext/boost/mpl/aux_/preprocessed/bcc/set.hpp +323 -0
  394. data/ext/boost/mpl/aux_/preprocessed/bcc/set_c.hpp +328 -0
  395. data/ext/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp +99 -0
  396. data/ext/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp +99 -0
  397. data/ext/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp +40 -0
  398. data/ext/boost/mpl/aux_/preprocessed/bcc/times.hpp +146 -0
  399. data/ext/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp +97 -0
  400. data/ext/boost/mpl/aux_/preprocessed/bcc/vector.hpp +323 -0
  401. data/ext/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp +309 -0
  402. data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp +97 -0
  403. data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp +97 -0
  404. data/ext/boost/mpl/aux_/preprocessed/bcc551/and.hpp +69 -0
  405. data/ext/boost/mpl/aux_/preprocessed/bcc551/apply.hpp +169 -0
  406. data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp +52 -0
  407. data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp +456 -0
  408. data/ext/boost/mpl/aux_/preprocessed/bcc551/arg.hpp +123 -0
  409. data/ext/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp +306 -0
  410. data/ext/boost/mpl/aux_/preprocessed/bcc551/bind.hpp +403 -0
  411. data/ext/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp +46 -0
  412. data/ext/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp +147 -0
  413. data/ext/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp +147 -0
  414. data/ext/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp +147 -0
  415. data/ext/boost/mpl/aux_/preprocessed/bcc551/deque.hpp +323 -0
  416. data/ext/boost/mpl/aux_/preprocessed/bcc551/divides.hpp +146 -0
  417. data/ext/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp +94 -0
  418. data/ext/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp +180 -0
  419. data/ext/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp +558 -0
  420. data/ext/boost/mpl/aux_/preprocessed/bcc551/greater.hpp +94 -0
  421. data/ext/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp +94 -0
  422. data/ext/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp +141 -0
  423. data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp +133 -0
  424. data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp +180 -0
  425. data/ext/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp +229 -0
  426. data/ext/boost/mpl/aux_/preprocessed/bcc551/less.hpp +94 -0
  427. data/ext/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp +94 -0
  428. data/ext/boost/mpl/aux_/preprocessed/bcc551/list.hpp +323 -0
  429. data/ext/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp +328 -0
  430. data/ext/boost/mpl/aux_/preprocessed/bcc551/map.hpp +323 -0
  431. data/ext/boost/mpl/aux_/preprocessed/bcc551/minus.hpp +146 -0
  432. data/ext/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp +101 -0
  433. data/ext/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp +94 -0
  434. data/ext/boost/mpl/aux_/preprocessed/bcc551/or.hpp +69 -0
  435. data/ext/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp +105 -0
  436. data/ext/boost/mpl/aux_/preprocessed/bcc551/plus.hpp +146 -0
  437. data/ext/boost/mpl/aux_/preprocessed/bcc551/quote.hpp +11 -0
  438. data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp +295 -0
  439. data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp +295 -0
  440. data/ext/boost/mpl/aux_/preprocessed/bcc551/set.hpp +323 -0
  441. data/ext/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp +328 -0
  442. data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp +99 -0
  443. data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp +99 -0
  444. data/ext/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp +40 -0
  445. data/ext/boost/mpl/aux_/preprocessed/bcc551/times.hpp +146 -0
  446. data/ext/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp +97 -0
  447. data/ext/boost/mpl/aux_/preprocessed/bcc551/vector.hpp +323 -0
  448. data/ext/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp +309 -0
  449. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp +97 -0
  450. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp +97 -0
  451. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp +69 -0
  452. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp +169 -0
  453. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp +52 -0
  454. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp +456 -0
  455. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp +117 -0
  456. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp +300 -0
  457. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp +397 -0
  458. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp +46 -0
  459. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp +147 -0
  460. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp +147 -0
  461. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp +147 -0
  462. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp +323 -0
  463. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp +146 -0
  464. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp +94 -0
  465. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp +180 -0
  466. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp +558 -0
  467. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp +94 -0
  468. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp +94 -0
  469. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp +139 -0
  470. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp +133 -0
  471. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp +180 -0
  472. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp +229 -0
  473. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp +94 -0
  474. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp +94 -0
  475. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp +323 -0
  476. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp +328 -0
  477. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp +323 -0
  478. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp +146 -0
  479. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp +101 -0
  480. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp +94 -0
  481. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp +69 -0
  482. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp +105 -0
  483. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp +146 -0
  484. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp +11 -0
  485. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp +295 -0
  486. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp +295 -0
  487. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp +323 -0
  488. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp +328 -0
  489. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp +99 -0
  490. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp +99 -0
  491. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp +40 -0
  492. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp +146 -0
  493. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp +97 -0
  494. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp +323 -0
  495. data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp +309 -0
  496. data/ext/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp +97 -0
  497. data/ext/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp +97 -0
  498. data/ext/boost/mpl/aux_/preprocessed/dmc/and.hpp +69 -0
  499. data/ext/boost/mpl/aux_/preprocessed/dmc/apply.hpp +169 -0
  500. data/ext/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp +52 -0
  501. data/ext/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp +84 -0
  502. data/ext/boost/mpl/aux_/preprocessed/dmc/arg.hpp +123 -0
  503. data/ext/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp +406 -0
  504. data/ext/boost/mpl/aux_/preprocessed/dmc/bind.hpp +515 -0
  505. data/ext/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp +53 -0
  506. data/ext/boost/mpl/aux_/preprocessed/dmc/bitand.hpp +147 -0
  507. data/ext/boost/mpl/aux_/preprocessed/dmc/bitor.hpp +147 -0
  508. data/ext/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp +147 -0
  509. data/ext/boost/mpl/aux_/preprocessed/dmc/deque.hpp +323 -0
  510. data/ext/boost/mpl/aux_/preprocessed/dmc/divides.hpp +146 -0
  511. data/ext/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp +94 -0
  512. data/ext/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp +180 -0
  513. data/ext/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp +536 -0
  514. data/ext/boost/mpl/aux_/preprocessed/dmc/greater.hpp +94 -0
  515. data/ext/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp +94 -0
  516. data/ext/boost/mpl/aux_/preprocessed/dmc/inherit.hpp +141 -0
  517. data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp +133 -0
  518. data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp +180 -0
  519. data/ext/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp +229 -0
  520. data/ext/boost/mpl/aux_/preprocessed/dmc/less.hpp +94 -0
  521. data/ext/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp +94 -0
  522. data/ext/boost/mpl/aux_/preprocessed/dmc/list.hpp +323 -0
  523. data/ext/boost/mpl/aux_/preprocessed/dmc/list_c.hpp +328 -0
  524. data/ext/boost/mpl/aux_/preprocessed/dmc/map.hpp +323 -0
  525. data/ext/boost/mpl/aux_/preprocessed/dmc/minus.hpp +146 -0
  526. data/ext/boost/mpl/aux_/preprocessed/dmc/modulus.hpp +101 -0
  527. data/ext/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp +94 -0
  528. data/ext/boost/mpl/aux_/preprocessed/dmc/or.hpp +69 -0
  529. data/ext/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp +105 -0
  530. data/ext/boost/mpl/aux_/preprocessed/dmc/plus.hpp +146 -0
  531. data/ext/boost/mpl/aux_/preprocessed/dmc/quote.hpp +123 -0
  532. data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp +231 -0
  533. data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp +231 -0
  534. data/ext/boost/mpl/aux_/preprocessed/dmc/set.hpp +323 -0
  535. data/ext/boost/mpl/aux_/preprocessed/dmc/set_c.hpp +328 -0
  536. data/ext/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp +99 -0
  537. data/ext/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp +99 -0
  538. data/ext/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp +11 -0
  539. data/ext/boost/mpl/aux_/preprocessed/dmc/times.hpp +146 -0
  540. data/ext/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp +94 -0
  541. data/ext/boost/mpl/aux_/preprocessed/dmc/vector.hpp +323 -0
  542. data/ext/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp +309 -0
  543. data/ext/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp +440 -0
  544. data/ext/boost/mpl/aux_/preprocessed/gcc/bitand.hpp +147 -0
  545. data/ext/boost/mpl/aux_/preprocessed/gcc/bitor.hpp +147 -0
  546. data/ext/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp +147 -0
  547. data/ext/boost/mpl/aux_/preprocessed/gcc/deque.hpp +323 -0
  548. data/ext/boost/mpl/aux_/preprocessed/gcc/divides.hpp +146 -0
  549. data/ext/boost/mpl/aux_/preprocessed/gcc/inherit.hpp +141 -0
  550. data/ext/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp +229 -0
  551. data/ext/boost/mpl/aux_/preprocessed/gcc/list_c.hpp +328 -0
  552. data/ext/boost/mpl/aux_/preprocessed/gcc/map.hpp +323 -0
  553. data/ext/boost/mpl/aux_/preprocessed/gcc/modulus.hpp +101 -0
  554. data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp +231 -0
  555. data/ext/boost/mpl/aux_/preprocessed/gcc/set.hpp +323 -0
  556. data/ext/boost/mpl/aux_/preprocessed/gcc/set_c.hpp +328 -0
  557. data/ext/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp +99 -0
  558. data/ext/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp +99 -0
  559. data/ext/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp +94 -0
  560. data/ext/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp +309 -0
  561. data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp +132 -0
  562. data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp +132 -0
  563. data/ext/boost/mpl/aux_/preprocessed/msvc60/and.hpp +73 -0
  564. data/ext/boost/mpl/aux_/preprocessed/msvc60/apply.hpp +166 -0
  565. data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp +46 -0
  566. data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp +247 -0
  567. data/ext/boost/mpl/aux_/preprocessed/msvc60/arg.hpp +123 -0
  568. data/ext/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp +328 -0
  569. data/ext/boost/mpl/aux_/preprocessed/msvc60/bind.hpp +432 -0
  570. data/ext/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp +46 -0
  571. data/ext/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp +149 -0
  572. data/ext/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp +149 -0
  573. data/ext/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp +149 -0
  574. data/ext/boost/mpl/aux_/preprocessed/msvc60/deque.hpp +556 -0
  575. data/ext/boost/mpl/aux_/preprocessed/msvc60/divides.hpp +148 -0
  576. data/ext/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp +102 -0
  577. data/ext/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp +293 -0
  578. data/ext/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp +554 -0
  579. data/ext/boost/mpl/aux_/preprocessed/msvc60/greater.hpp +102 -0
  580. data/ext/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp +102 -0
  581. data/ext/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp +166 -0
  582. data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp +133 -0
  583. data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp +293 -0
  584. data/ext/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp +229 -0
  585. data/ext/boost/mpl/aux_/preprocessed/msvc60/less.hpp +102 -0
  586. data/ext/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp +102 -0
  587. data/ext/boost/mpl/aux_/preprocessed/msvc60/list.hpp +556 -0
  588. data/ext/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp +534 -0
  589. data/ext/boost/mpl/aux_/preprocessed/msvc60/map.hpp +556 -0
  590. data/ext/boost/mpl/aux_/preprocessed/msvc60/minus.hpp +148 -0
  591. data/ext/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp +115 -0
  592. data/ext/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp +102 -0
  593. data/ext/boost/mpl/aux_/preprocessed/msvc60/or.hpp +73 -0
  594. data/ext/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp +105 -0
  595. data/ext/boost/mpl/aux_/preprocessed/msvc60/plus.hpp +148 -0
  596. data/ext/boost/mpl/aux_/preprocessed/msvc60/quote.hpp +11 -0
  597. data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp +343 -0
  598. data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp +343 -0
  599. data/ext/boost/mpl/aux_/preprocessed/msvc60/set.hpp +556 -0
  600. data/ext/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp +534 -0
  601. data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp +114 -0
  602. data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp +114 -0
  603. data/ext/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp +46 -0
  604. data/ext/boost/mpl/aux_/preprocessed/msvc60/times.hpp +148 -0
  605. data/ext/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp +109 -0
  606. data/ext/boost/mpl/aux_/preprocessed/msvc60/vector.hpp +556 -0
  607. data/ext/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp +534 -0
  608. data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp +97 -0
  609. data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp +97 -0
  610. data/ext/boost/mpl/aux_/preprocessed/msvc70/and.hpp +71 -0
  611. data/ext/boost/mpl/aux_/preprocessed/msvc70/apply.hpp +160 -0
  612. data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp +46 -0
  613. data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp +138 -0
  614. data/ext/boost/mpl/aux_/preprocessed/msvc70/arg.hpp +123 -0
  615. data/ext/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp +328 -0
  616. data/ext/boost/mpl/aux_/preprocessed/msvc70/bind.hpp +432 -0
  617. data/ext/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp +46 -0
  618. data/ext/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp +151 -0
  619. data/ext/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp +151 -0
  620. data/ext/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp +151 -0
  621. data/ext/boost/mpl/aux_/preprocessed/msvc70/deque.hpp +556 -0
  622. data/ext/boost/mpl/aux_/preprocessed/msvc70/divides.hpp +150 -0
  623. data/ext/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp +102 -0
  624. data/ext/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp +245 -0
  625. data/ext/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp +554 -0
  626. data/ext/boost/mpl/aux_/preprocessed/msvc70/greater.hpp +102 -0
  627. data/ext/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp +102 -0
  628. data/ext/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp +166 -0
  629. data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp +133 -0
  630. data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp +245 -0
  631. data/ext/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp +229 -0
  632. data/ext/boost/mpl/aux_/preprocessed/msvc70/less.hpp +102 -0
  633. data/ext/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp +102 -0
  634. data/ext/boost/mpl/aux_/preprocessed/msvc70/list.hpp +556 -0
  635. data/ext/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp +534 -0
  636. data/ext/boost/mpl/aux_/preprocessed/msvc70/map.hpp +556 -0
  637. data/ext/boost/mpl/aux_/preprocessed/msvc70/minus.hpp +150 -0
  638. data/ext/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp +115 -0
  639. data/ext/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp +102 -0
  640. data/ext/boost/mpl/aux_/preprocessed/msvc70/or.hpp +71 -0
  641. data/ext/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp +105 -0
  642. data/ext/boost/mpl/aux_/preprocessed/msvc70/plus.hpp +150 -0
  643. data/ext/boost/mpl/aux_/preprocessed/msvc70/quote.hpp +116 -0
  644. data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp +295 -0
  645. data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp +295 -0
  646. data/ext/boost/mpl/aux_/preprocessed/msvc70/set.hpp +556 -0
  647. data/ext/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp +534 -0
  648. data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp +114 -0
  649. data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp +114 -0
  650. data/ext/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp +46 -0
  651. data/ext/boost/mpl/aux_/preprocessed/msvc70/times.hpp +150 -0
  652. data/ext/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp +109 -0
  653. data/ext/boost/mpl/aux_/preprocessed/msvc70/vector.hpp +556 -0
  654. data/ext/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp +534 -0
  655. data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp +97 -0
  656. data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp +97 -0
  657. data/ext/boost/mpl/aux_/preprocessed/mwcw/and.hpp +69 -0
  658. data/ext/boost/mpl/aux_/preprocessed/mwcw/apply.hpp +169 -0
  659. data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp +52 -0
  660. data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp +456 -0
  661. data/ext/boost/mpl/aux_/preprocessed/mwcw/arg.hpp +123 -0
  662. data/ext/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp +440 -0
  663. data/ext/boost/mpl/aux_/preprocessed/mwcw/bind.hpp +561 -0
  664. data/ext/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp +52 -0
  665. data/ext/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp +147 -0
  666. data/ext/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp +147 -0
  667. data/ext/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp +147 -0
  668. data/ext/boost/mpl/aux_/preprocessed/mwcw/deque.hpp +323 -0
  669. data/ext/boost/mpl/aux_/preprocessed/mwcw/divides.hpp +146 -0
  670. data/ext/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp +94 -0
  671. data/ext/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp +180 -0
  672. data/ext/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp +554 -0
  673. data/ext/boost/mpl/aux_/preprocessed/mwcw/greater.hpp +94 -0
  674. data/ext/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp +94 -0
  675. data/ext/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp +141 -0
  676. data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp +133 -0
  677. data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp +180 -0
  678. data/ext/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp +229 -0
  679. data/ext/boost/mpl/aux_/preprocessed/mwcw/less.hpp +94 -0
  680. data/ext/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp +94 -0
  681. data/ext/boost/mpl/aux_/preprocessed/mwcw/list.hpp +323 -0
  682. data/ext/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp +328 -0
  683. data/ext/boost/mpl/aux_/preprocessed/mwcw/map.hpp +323 -0
  684. data/ext/boost/mpl/aux_/preprocessed/mwcw/minus.hpp +146 -0
  685. data/ext/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp +101 -0
  686. data/ext/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp +94 -0
  687. data/ext/boost/mpl/aux_/preprocessed/mwcw/or.hpp +69 -0
  688. data/ext/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp +105 -0
  689. data/ext/boost/mpl/aux_/preprocessed/mwcw/plus.hpp +146 -0
  690. data/ext/boost/mpl/aux_/preprocessed/mwcw/quote.hpp +123 -0
  691. data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp +231 -0
  692. data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp +231 -0
  693. data/ext/boost/mpl/aux_/preprocessed/mwcw/set.hpp +323 -0
  694. data/ext/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp +328 -0
  695. data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp +99 -0
  696. data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp +99 -0
  697. data/ext/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp +11 -0
  698. data/ext/boost/mpl/aux_/preprocessed/mwcw/times.hpp +146 -0
  699. data/ext/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp +94 -0
  700. data/ext/boost/mpl/aux_/preprocessed/mwcw/vector.hpp +323 -0
  701. data/ext/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp +309 -0
  702. data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp +97 -0
  703. data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp +97 -0
  704. data/ext/boost/mpl/aux_/preprocessed/no_ctps/and.hpp +73 -0
  705. data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp +268 -0
  706. data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp +50 -0
  707. data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp +78 -0
  708. data/ext/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp +123 -0
  709. data/ext/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp +486 -0
  710. data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp +590 -0
  711. data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp +52 -0
  712. data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp +134 -0
  713. data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp +134 -0
  714. data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp +134 -0
  715. data/ext/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp +556 -0
  716. data/ext/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp +133 -0
  717. data/ext/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp +94 -0
  718. data/ext/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp +245 -0
  719. data/ext/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp +554 -0
  720. data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp +94 -0
  721. data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp +94 -0
  722. data/ext/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp +166 -0
  723. data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp +133 -0
  724. data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp +245 -0
  725. data/ext/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp +229 -0
  726. data/ext/boost/mpl/aux_/preprocessed/no_ctps/less.hpp +94 -0
  727. data/ext/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp +94 -0
  728. data/ext/boost/mpl/aux_/preprocessed/no_ctps/list.hpp +556 -0
  729. data/ext/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp +534 -0
  730. data/ext/boost/mpl/aux_/preprocessed/no_ctps/map.hpp +556 -0
  731. data/ext/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp +133 -0
  732. data/ext/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp +101 -0
  733. data/ext/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp +94 -0
  734. data/ext/boost/mpl/aux_/preprocessed/no_ctps/or.hpp +73 -0
  735. data/ext/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp +105 -0
  736. data/ext/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp +133 -0
  737. data/ext/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp +116 -0
  738. data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp +295 -0
  739. data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp +295 -0
  740. data/ext/boost/mpl/aux_/preprocessed/no_ctps/set.hpp +556 -0
  741. data/ext/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp +534 -0
  742. data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp +99 -0
  743. data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp +99 -0
  744. data/ext/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp +40 -0
  745. data/ext/boost/mpl/aux_/preprocessed/no_ctps/times.hpp +133 -0
  746. data/ext/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp +109 -0
  747. data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp +556 -0
  748. data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp +534 -0
  749. data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp +97 -0
  750. data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp +97 -0
  751. data/ext/boost/mpl/aux_/preprocessed/no_ttp/and.hpp +69 -0
  752. data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp +169 -0
  753. data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp +52 -0
  754. data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp +84 -0
  755. data/ext/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp +123 -0
  756. data/ext/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp +369 -0
  757. data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp +466 -0
  758. data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp +52 -0
  759. data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp +157 -0
  760. data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp +157 -0
  761. data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp +157 -0
  762. data/ext/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp +323 -0
  763. data/ext/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp +156 -0
  764. data/ext/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp +98 -0
  765. data/ext/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp +180 -0
  766. data/ext/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp +554 -0
  767. data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp +98 -0
  768. data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp +98 -0
  769. data/ext/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp +141 -0
  770. data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp +133 -0
  771. data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp +180 -0
  772. data/ext/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp +229 -0
  773. data/ext/boost/mpl/aux_/preprocessed/no_ttp/less.hpp +98 -0
  774. data/ext/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp +98 -0
  775. data/ext/boost/mpl/aux_/preprocessed/no_ttp/list.hpp +323 -0
  776. data/ext/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp +328 -0
  777. data/ext/boost/mpl/aux_/preprocessed/no_ttp/map.hpp +323 -0
  778. data/ext/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp +156 -0
  779. data/ext/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp +111 -0
  780. data/ext/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp +98 -0
  781. data/ext/boost/mpl/aux_/preprocessed/no_ttp/or.hpp +69 -0
  782. data/ext/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp +105 -0
  783. data/ext/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp +156 -0
  784. data/ext/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp +11 -0
  785. data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp +231 -0
  786. data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp +231 -0
  787. data/ext/boost/mpl/aux_/preprocessed/no_ttp/set.hpp +323 -0
  788. data/ext/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp +328 -0
  789. data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp +110 -0
  790. data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp +110 -0
  791. data/ext/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp +40 -0
  792. data/ext/boost/mpl/aux_/preprocessed/no_ttp/times.hpp +156 -0
  793. data/ext/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp +94 -0
  794. data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp +323 -0
  795. data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp +309 -0
  796. data/ext/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp +97 -0
  797. data/ext/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp +97 -0
  798. data/ext/boost/mpl/aux_/preprocessed/plain/and.hpp +64 -0
  799. data/ext/boost/mpl/aux_/preprocessed/plain/apply.hpp +139 -0
  800. data/ext/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp +52 -0
  801. data/ext/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp +84 -0
  802. data/ext/boost/mpl/aux_/preprocessed/plain/arg.hpp +123 -0
  803. data/ext/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp +440 -0
  804. data/ext/boost/mpl/aux_/preprocessed/plain/bind.hpp +561 -0
  805. data/ext/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp +52 -0
  806. data/ext/boost/mpl/aux_/preprocessed/plain/bitand.hpp +142 -0
  807. data/ext/boost/mpl/aux_/preprocessed/plain/bitor.hpp +142 -0
  808. data/ext/boost/mpl/aux_/preprocessed/plain/bitxor.hpp +142 -0
  809. data/ext/boost/mpl/aux_/preprocessed/plain/deque.hpp +323 -0
  810. data/ext/boost/mpl/aux_/preprocessed/plain/divides.hpp +141 -0
  811. data/ext/boost/mpl/aux_/preprocessed/plain/equal_to.hpp +92 -0
  812. data/ext/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp +180 -0
  813. data/ext/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp +554 -0
  814. data/ext/boost/mpl/aux_/preprocessed/plain/greater.hpp +92 -0
  815. data/ext/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp +92 -0
  816. data/ext/boost/mpl/aux_/preprocessed/plain/inherit.hpp +125 -0
  817. data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp +133 -0
  818. data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp +180 -0
  819. data/ext/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp +228 -0
  820. data/ext/boost/mpl/aux_/preprocessed/plain/less.hpp +92 -0
  821. data/ext/boost/mpl/aux_/preprocessed/plain/less_equal.hpp +92 -0
  822. data/ext/boost/mpl/aux_/preprocessed/plain/list.hpp +323 -0
  823. data/ext/boost/mpl/aux_/preprocessed/plain/list_c.hpp +328 -0
  824. data/ext/boost/mpl/aux_/preprocessed/plain/map.hpp +323 -0
  825. data/ext/boost/mpl/aux_/preprocessed/plain/minus.hpp +141 -0
  826. data/ext/boost/mpl/aux_/preprocessed/plain/modulus.hpp +99 -0
  827. data/ext/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp +92 -0
  828. data/ext/boost/mpl/aux_/preprocessed/plain/or.hpp +64 -0
  829. data/ext/boost/mpl/aux_/preprocessed/plain/placeholders.hpp +105 -0
  830. data/ext/boost/mpl/aux_/preprocessed/plain/plus.hpp +141 -0
  831. data/ext/boost/mpl/aux_/preprocessed/plain/quote.hpp +123 -0
  832. data/ext/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp +231 -0
  833. data/ext/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp +231 -0
  834. data/ext/boost/mpl/aux_/preprocessed/plain/set.hpp +323 -0
  835. data/ext/boost/mpl/aux_/preprocessed/plain/set_c.hpp +328 -0
  836. data/ext/boost/mpl/aux_/preprocessed/plain/shift_left.hpp +97 -0
  837. data/ext/boost/mpl/aux_/preprocessed/plain/shift_right.hpp +97 -0
  838. data/ext/boost/mpl/aux_/preprocessed/plain/template_arity.hpp +11 -0
  839. data/ext/boost/mpl/aux_/preprocessed/plain/times.hpp +141 -0
  840. data/ext/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp +94 -0
  841. data/ext/boost/mpl/aux_/preprocessed/plain/vector.hpp +323 -0
  842. data/ext/boost/mpl/aux_/preprocessed/plain/vector_c.hpp +309 -0
  843. data/ext/boost/mpl/aux_/preprocessor/add.hpp +65 -0
  844. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +1 -1
  845. data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +1 -1
  846. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +1 -1
  847. data/ext/boost/mpl/aux_/preprocessor/ext_params.hpp +78 -0
  848. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +1 -1
  849. data/ext/boost/mpl/aux_/preprocessor/is_seq.hpp +54 -0
  850. data/ext/boost/mpl/aux_/preprocessor/params.hpp +1 -1
  851. data/ext/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +32 -0
  852. data/ext/boost/mpl/aux_/preprocessor/range.hpp +23 -0
  853. data/ext/boost/mpl/aux_/preprocessor/repeat.hpp +51 -0
  854. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +1 -1
  855. data/ext/boost/mpl/aux_/preprocessor/token_equal.hpp +56 -0
  856. data/ext/boost/mpl/aux_/preprocessor/tuple.hpp +29 -0
  857. data/ext/boost/mpl/aux_/ptr_to_ref.hpp +46 -0
  858. data/ext/boost/mpl/aux_/push_back_impl.hpp +1 -1
  859. data/ext/boost/mpl/aux_/push_front_impl.hpp +1 -1
  860. data/ext/boost/mpl/aux_/range_c/O1_size.hpp +31 -0
  861. data/ext/boost/mpl/aux_/range_c/back.hpp +34 -0
  862. data/ext/boost/mpl/aux_/range_c/empty.hpp +37 -0
  863. data/ext/boost/mpl/aux_/range_c/front.hpp +33 -0
  864. data/ext/boost/mpl/aux_/range_c/iterator.hpp +106 -0
  865. data/ext/boost/mpl/aux_/range_c/size.hpp +37 -0
  866. data/ext/boost/mpl/aux_/range_c/tag.hpp +24 -0
  867. data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +1 -1
  868. data/ext/boost/mpl/aux_/reverse_fold_impl_body.hpp +412 -0
  869. data/ext/boost/mpl/aux_/reverse_iter_fold_impl.hpp +43 -0
  870. data/ext/boost/mpl/aux_/sequence_wrapper.hpp +292 -0
  871. data/ext/boost/mpl/aux_/shift_op.hpp +87 -0
  872. data/ext/boost/mpl/aux_/single_element_iter.hpp +118 -0
  873. data/ext/boost/mpl/aux_/size_impl.hpp +1 -1
  874. data/ext/boost/mpl/aux_/sort_impl.hpp +121 -0
  875. data/ext/boost/mpl/aux_/static_cast.hpp +1 -1
  876. data/ext/boost/mpl/aux_/template_arity.hpp +1 -1
  877. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +1 -1
  878. data/ext/boost/mpl/aux_/test.hpp +32 -0
  879. data/ext/boost/mpl/aux_/test/assert.hpp +29 -0
  880. data/ext/boost/mpl/aux_/test/data.hpp +25 -0
  881. data/ext/boost/mpl/aux_/test/test_case.hpp +21 -0
  882. data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +1 -1
  883. data/ext/boost/mpl/aux_/transform_iter.hpp +123 -0
  884. data/ext/boost/mpl/aux_/type_wrapper.hpp +1 -1
  885. data/ext/boost/mpl/aux_/unwrap.hpp +47 -0
  886. data/ext/boost/mpl/aux_/value_wknd.hpp +1 -1
  887. data/ext/boost/mpl/aux_/yes_no.hpp +1 -1
  888. data/ext/boost/mpl/back.hpp +39 -0
  889. data/ext/boost/mpl/back_fwd.hpp +1 -1
  890. data/ext/boost/mpl/back_inserter.hpp +1 -1
  891. data/ext/boost/mpl/base.hpp +35 -0
  892. data/ext/boost/mpl/begin.hpp +19 -0
  893. data/ext/boost/mpl/begin_end.hpp +1 -1
  894. data/ext/boost/mpl/begin_end_fwd.hpp +1 -1
  895. data/ext/boost/mpl/bind.hpp +1 -1
  896. data/ext/boost/mpl/bind_fwd.hpp +1 -1
  897. data/ext/boost/mpl/bitand.hpp +45 -0
  898. data/ext/boost/mpl/bitor.hpp +45 -0
  899. data/ext/boost/mpl/bitwise.hpp +24 -0
  900. data/ext/boost/mpl/bitxor.hpp +23 -0
  901. data/ext/boost/mpl/bool.hpp +1 -1
  902. data/ext/boost/mpl/bool_fwd.hpp +1 -1
  903. data/ext/boost/mpl/char.hpp +22 -0
  904. data/ext/boost/mpl/char_fwd.hpp +27 -0
  905. data/ext/boost/mpl/clear.hpp +1 -1
  906. data/ext/boost/mpl/clear_fwd.hpp +1 -1
  907. data/ext/boost/mpl/comparison.hpp +1 -1
  908. data/ext/boost/mpl/contains.hpp +1 -1
  909. data/ext/boost/mpl/contains_fwd.hpp +1 -1
  910. data/ext/boost/mpl/copy.hpp +58 -0
  911. data/ext/boost/mpl/copy_if.hpp +96 -0
  912. data/ext/boost/mpl/count.hpp +40 -0
  913. data/ext/boost/mpl/count_fwd.hpp +24 -0
  914. data/ext/boost/mpl/count_if.hpp +79 -0
  915. data/ext/boost/mpl/deque.hpp +58 -0
  916. data/ext/boost/mpl/deref.hpp +1 -1
  917. data/ext/boost/mpl/distance.hpp +1 -1
  918. data/ext/boost/mpl/distance_fwd.hpp +1 -1
  919. data/ext/boost/mpl/divides.hpp +21 -0
  920. data/ext/boost/mpl/empty.hpp +39 -0
  921. data/ext/boost/mpl/empty_base.hpp +59 -0
  922. data/ext/boost/mpl/empty_fwd.hpp +1 -1
  923. data/ext/boost/mpl/empty_sequence.hpp +42 -0
  924. data/ext/boost/mpl/end.hpp +19 -0
  925. data/ext/boost/mpl/equal.hpp +112 -0
  926. data/ext/boost/mpl/equal_to.hpp +1 -1
  927. data/ext/boost/mpl/erase.hpp +42 -0
  928. data/ext/boost/mpl/erase_fwd.hpp +24 -0
  929. data/ext/boost/mpl/erase_key.hpp +41 -0
  930. data/ext/boost/mpl/erase_key_fwd.hpp +24 -0
  931. data/ext/boost/mpl/eval_if.hpp +1 -1
  932. data/ext/boost/mpl/filter_view.hpp +46 -0
  933. data/ext/boost/mpl/find.hpp +1 -1
  934. data/ext/boost/mpl/find_if.hpp +1 -1
  935. data/ext/boost/mpl/fold.hpp +1 -1
  936. data/ext/boost/mpl/for_each.hpp +116 -0
  937. data/ext/boost/mpl/front.hpp +39 -0
  938. data/ext/boost/mpl/front_fwd.hpp +1 -1
  939. data/ext/boost/mpl/front_inserter.hpp +1 -1
  940. data/ext/boost/mpl/greater.hpp +1 -1
  941. data/ext/boost/mpl/greater_equal.hpp +1 -1
  942. data/ext/boost/mpl/has_key.hpp +41 -0
  943. data/ext/boost/mpl/has_key_fwd.hpp +25 -0
  944. data/ext/boost/mpl/has_xxx.hpp +1 -1
  945. data/ext/boost/mpl/identity.hpp +1 -1
  946. data/ext/boost/mpl/if.hpp +1 -1
  947. data/ext/boost/mpl/index_if.hpp +60 -0
  948. data/ext/boost/mpl/index_of.hpp +39 -0
  949. data/ext/boost/mpl/inherit.hpp +229 -0
  950. data/ext/boost/mpl/inherit_linearly.hpp +39 -0
  951. data/ext/boost/mpl/insert.hpp +41 -0
  952. data/ext/boost/mpl/insert_fwd.hpp +24 -0
  953. data/ext/boost/mpl/insert_range.hpp +41 -0
  954. data/ext/boost/mpl/insert_range_fwd.hpp +24 -0
  955. data/ext/boost/mpl/inserter.hpp +1 -1
  956. data/ext/boost/mpl/int.hpp +1 -1
  957. data/ext/boost/mpl/int_fwd.hpp +1 -1
  958. data/ext/boost/mpl/integral_c.hpp +1 -1
  959. data/ext/boost/mpl/integral_c_fwd.hpp +1 -1
  960. data/ext/boost/mpl/integral_c_tag.hpp +1 -1
  961. data/ext/boost/mpl/is_placeholder.hpp +67 -0
  962. data/ext/boost/mpl/is_sequence.hpp +112 -0
  963. data/ext/boost/mpl/iter_fold.hpp +1 -1
  964. data/ext/boost/mpl/iter_fold_if.hpp +1 -1
  965. data/ext/boost/mpl/iterator_category.hpp +35 -0
  966. data/ext/boost/mpl/iterator_range.hpp +1 -1
  967. data/ext/boost/mpl/iterator_tags.hpp +1 -1
  968. data/ext/boost/mpl/joint_view.hpp +65 -0
  969. data/ext/boost/mpl/key_type.hpp +42 -0
  970. data/ext/boost/mpl/key_type_fwd.hpp +25 -0
  971. data/ext/boost/mpl/lambda.hpp +1 -1
  972. data/ext/boost/mpl/lambda_fwd.hpp +1 -1
  973. data/ext/boost/mpl/less.hpp +1 -1
  974. data/ext/boost/mpl/less_equal.hpp +1 -1
  975. data/ext/boost/mpl/limits/arity.hpp +1 -1
  976. data/ext/boost/mpl/limits/list.hpp +1 -1
  977. data/ext/boost/mpl/limits/map.hpp +21 -0
  978. data/ext/boost/mpl/limits/set.hpp +21 -0
  979. data/ext/boost/mpl/limits/string.hpp +21 -0
  980. data/ext/boost/mpl/limits/unrolling.hpp +21 -0
  981. data/ext/boost/mpl/limits/vector.hpp +1 -1
  982. data/ext/boost/mpl/list.hpp +1 -1
  983. data/ext/boost/mpl/list/aux_/O1_size.hpp +1 -1
  984. data/ext/boost/mpl/list/aux_/begin_end.hpp +1 -1
  985. data/ext/boost/mpl/list/aux_/clear.hpp +1 -1
  986. data/ext/boost/mpl/list/aux_/empty.hpp +1 -1
  987. data/ext/boost/mpl/list/aux_/front.hpp +1 -1
  988. data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +1 -1
  989. data/ext/boost/mpl/list/aux_/item.hpp +1 -1
  990. data/ext/boost/mpl/list/aux_/iterator.hpp +1 -1
  991. data/ext/boost/mpl/list/aux_/numbered.hpp +68 -0
  992. data/ext/boost/mpl/list/aux_/numbered_c.hpp +71 -0
  993. data/ext/boost/mpl/list/aux_/pop_front.hpp +1 -1
  994. data/ext/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp +164 -0
  995. data/ext/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp +173 -0
  996. data/ext/boost/mpl/list/aux_/preprocessed/plain/list30.hpp +189 -0
  997. data/ext/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp +183 -0
  998. data/ext/boost/mpl/list/aux_/preprocessed/plain/list40.hpp +209 -0
  999. data/ext/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp +193 -0
  1000. data/ext/boost/mpl/list/aux_/preprocessed/plain/list50.hpp +229 -0
  1001. data/ext/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp +203 -0
  1002. data/ext/boost/mpl/list/aux_/push_back.hpp +1 -1
  1003. data/ext/boost/mpl/list/aux_/push_front.hpp +1 -1
  1004. data/ext/boost/mpl/list/aux_/size.hpp +1 -1
  1005. data/ext/boost/mpl/list/aux_/tag.hpp +1 -1
  1006. data/ext/boost/mpl/list/list0.hpp +1 -1
  1007. data/ext/boost/mpl/list/list0_c.hpp +31 -0
  1008. data/ext/boost/mpl/list/list10.hpp +1 -1
  1009. data/ext/boost/mpl/list/list10_c.hpp +43 -0
  1010. data/ext/boost/mpl/list/list20.hpp +1 -1
  1011. data/ext/boost/mpl/list/list20_c.hpp +43 -0
  1012. data/ext/boost/mpl/list/list30.hpp +43 -0
  1013. data/ext/boost/mpl/list/list30_c.hpp +43 -0
  1014. data/ext/boost/mpl/list/list40.hpp +43 -0
  1015. data/ext/boost/mpl/list/list40_c.hpp +43 -0
  1016. data/ext/boost/mpl/list/list50.hpp +43 -0
  1017. data/ext/boost/mpl/list/list50_c.hpp +43 -0
  1018. data/ext/boost/mpl/list_c.hpp +60 -0
  1019. data/ext/boost/mpl/logical.hpp +1 -1
  1020. data/ext/boost/mpl/long.hpp +1 -1
  1021. data/ext/boost/mpl/long_fwd.hpp +1 -1
  1022. data/ext/boost/mpl/lower_bound.hpp +143 -0
  1023. data/ext/boost/mpl/map.hpp +57 -0
  1024. data/ext/boost/mpl/map/aux_/at_impl.hpp +144 -0
  1025. data/ext/boost/mpl/map/aux_/begin_end_impl.hpp +50 -0
  1026. data/ext/boost/mpl/map/aux_/clear_impl.hpp +35 -0
  1027. data/ext/boost/mpl/map/aux_/contains_impl.hpp +43 -0
  1028. data/ext/boost/mpl/map/aux_/empty_impl.hpp +34 -0
  1029. data/ext/boost/mpl/map/aux_/erase_impl.hpp +41 -0
  1030. data/ext/boost/mpl/map/aux_/erase_key_impl.hpp +53 -0
  1031. data/ext/boost/mpl/map/aux_/has_key_impl.hpp +44 -0
  1032. data/ext/boost/mpl/map/aux_/include_preprocessed.hpp +53 -0
  1033. data/ext/boost/mpl/map/aux_/insert_impl.hpp +72 -0
  1034. data/ext/boost/mpl/map/aux_/item.hpp +138 -0
  1035. data/ext/boost/mpl/map/aux_/iterator.hpp +169 -0
  1036. data/ext/boost/mpl/map/aux_/key_type_impl.hpp +36 -0
  1037. data/ext/boost/mpl/map/aux_/map0.hpp +74 -0
  1038. data/ext/boost/mpl/map/aux_/numbered.hpp +110 -0
  1039. data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp +350 -0
  1040. data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp +370 -0
  1041. data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp +390 -0
  1042. data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp +410 -0
  1043. data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp +430 -0
  1044. data/ext/boost/mpl/map/aux_/preprocessed/plain/map10.hpp +290 -0
  1045. data/ext/boost/mpl/map/aux_/preprocessed/plain/map20.hpp +310 -0
  1046. data/ext/boost/mpl/map/aux_/preprocessed/plain/map30.hpp +330 -0
  1047. data/ext/boost/mpl/map/aux_/preprocessed/plain/map40.hpp +350 -0
  1048. data/ext/boost/mpl/map/aux_/preprocessed/plain/map50.hpp +370 -0
  1049. data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp +150 -0
  1050. data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp +170 -0
  1051. data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp +190 -0
  1052. data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp +210 -0
  1053. data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp +230 -0
  1054. data/ext/boost/mpl/map/aux_/size_impl.hpp +33 -0
  1055. data/ext/boost/mpl/map/aux_/tag.hpp +24 -0
  1056. data/ext/boost/mpl/map/aux_/value_type_impl.hpp +36 -0
  1057. data/ext/boost/mpl/map/map0.hpp +36 -0
  1058. data/ext/boost/mpl/map/map10.hpp +44 -0
  1059. data/ext/boost/mpl/map/map20.hpp +44 -0
  1060. data/ext/boost/mpl/map/map30.hpp +44 -0
  1061. data/ext/boost/mpl/map/map40.hpp +44 -0
  1062. data/ext/boost/mpl/map/map50.hpp +44 -0
  1063. data/ext/boost/mpl/math/fixed_c.hpp +36 -0
  1064. data/ext/boost/mpl/math/is_even.hpp +54 -0
  1065. data/ext/boost/mpl/math/rational_c.hpp +37 -0
  1066. data/ext/boost/mpl/max.hpp +19 -0
  1067. data/ext/boost/mpl/max_element.hpp +72 -0
  1068. data/ext/boost/mpl/min.hpp +19 -0
  1069. data/ext/boost/mpl/min_element.hpp +40 -0
  1070. data/ext/boost/mpl/min_max.hpp +46 -0
  1071. data/ext/boost/mpl/minus.hpp +1 -1
  1072. data/ext/boost/mpl/modulus.hpp +22 -0
  1073. data/ext/boost/mpl/multiplies.hpp +1 -1
  1074. data/ext/boost/mpl/multiset/aux_/count_impl.hpp +82 -0
  1075. data/ext/boost/mpl/multiset/aux_/insert_impl.hpp +34 -0
  1076. data/ext/boost/mpl/multiset/aux_/item.hpp +114 -0
  1077. data/ext/boost/mpl/multiset/aux_/multiset0.hpp +34 -0
  1078. data/ext/boost/mpl/multiset/aux_/tag.hpp +23 -0
  1079. data/ext/boost/mpl/multiset/multiset0.hpp +36 -0
  1080. data/ext/boost/mpl/negate.hpp +1 -1
  1081. data/ext/boost/mpl/next.hpp +1 -1
  1082. data/ext/boost/mpl/next_prior.hpp +1 -1
  1083. data/ext/boost/mpl/not.hpp +1 -1
  1084. data/ext/boost/mpl/not_equal_to.hpp +1 -1
  1085. data/ext/boost/mpl/numeric_cast.hpp +1 -1
  1086. data/ext/boost/mpl/or.hpp +1 -1
  1087. data/ext/boost/mpl/order.hpp +41 -0
  1088. data/ext/boost/mpl/order_fwd.hpp +25 -0
  1089. data/ext/boost/mpl/pair.hpp +1 -1
  1090. data/ext/boost/mpl/pair_view.hpp +169 -0
  1091. data/ext/boost/mpl/partition.hpp +53 -0
  1092. data/ext/boost/mpl/placeholders.hpp +1 -1
  1093. data/ext/boost/mpl/plus.hpp +1 -1
  1094. data/ext/boost/mpl/pop_back.hpp +39 -0
  1095. data/ext/boost/mpl/pop_back_fwd.hpp +1 -1
  1096. data/ext/boost/mpl/pop_front.hpp +39 -0
  1097. data/ext/boost/mpl/pop_front_fwd.hpp +1 -1
  1098. data/ext/boost/mpl/print.hpp +74 -0
  1099. data/ext/boost/mpl/prior.hpp +1 -1
  1100. data/ext/boost/mpl/protect.hpp +1 -1
  1101. data/ext/boost/mpl/push_back.hpp +1 -1
  1102. data/ext/boost/mpl/push_back_fwd.hpp +1 -1
  1103. data/ext/boost/mpl/push_front.hpp +1 -1
  1104. data/ext/boost/mpl/push_front_fwd.hpp +1 -1
  1105. data/ext/boost/mpl/quote.hpp +1 -1
  1106. data/ext/boost/mpl/range_c.hpp +48 -0
  1107. data/ext/boost/mpl/remove.hpp +52 -0
  1108. data/ext/boost/mpl/remove_if.hpp +1 -1
  1109. data/ext/boost/mpl/replace.hpp +55 -0
  1110. data/ext/boost/mpl/replace_if.hpp +88 -0
  1111. data/ext/boost/mpl/reverse.hpp +38 -0
  1112. data/ext/boost/mpl/reverse_fold.hpp +1 -1
  1113. data/ext/boost/mpl/reverse_iter_fold.hpp +56 -0
  1114. data/ext/boost/mpl/same_as.hpp +1 -1
  1115. data/ext/boost/mpl/sequence_tag.hpp +1 -1
  1116. data/ext/boost/mpl/sequence_tag_fwd.hpp +1 -1
  1117. data/ext/boost/mpl/set.hpp +57 -0
  1118. data/ext/boost/mpl/set/aux_/at_impl.hpp +40 -0
  1119. data/ext/boost/mpl/set/aux_/begin_end_impl.hpp +43 -0
  1120. data/ext/boost/mpl/set/aux_/clear_impl.hpp +35 -0
  1121. data/ext/boost/mpl/set/aux_/empty_impl.hpp +34 -0
  1122. data/ext/boost/mpl/set/aux_/erase_impl.hpp +41 -0
  1123. data/ext/boost/mpl/set/aux_/erase_key_impl.hpp +53 -0
  1124. data/ext/boost/mpl/set/aux_/has_key_impl.hpp +60 -0
  1125. data/ext/boost/mpl/set/aux_/include_preprocessed.hpp +42 -0
  1126. data/ext/boost/mpl/set/aux_/insert_impl.hpp +65 -0
  1127. data/ext/boost/mpl/set/aux_/item.hpp +80 -0
  1128. data/ext/boost/mpl/set/aux_/iterator.hpp +98 -0
  1129. data/ext/boost/mpl/set/aux_/key_type_impl.hpp +34 -0
  1130. data/ext/boost/mpl/set/aux_/numbered.hpp +48 -0
  1131. data/ext/boost/mpl/set/aux_/numbered_c.hpp +48 -0
  1132. data/ext/boost/mpl/set/aux_/preprocessed/plain/set10.hpp +140 -0
  1133. data/ext/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp +145 -0
  1134. data/ext/boost/mpl/set/aux_/preprocessed/plain/set20.hpp +168 -0
  1135. data/ext/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp +154 -0
  1136. data/ext/boost/mpl/set/aux_/preprocessed/plain/set30.hpp +195 -0
  1137. data/ext/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp +164 -0
  1138. data/ext/boost/mpl/set/aux_/preprocessed/plain/set40.hpp +221 -0
  1139. data/ext/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp +174 -0
  1140. data/ext/boost/mpl/set/aux_/preprocessed/plain/set50.hpp +250 -0
  1141. data/ext/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp +184 -0
  1142. data/ext/boost/mpl/set/aux_/set0.hpp +69 -0
  1143. data/ext/boost/mpl/set/aux_/size_impl.hpp +33 -0
  1144. data/ext/boost/mpl/set/aux_/tag.hpp +24 -0
  1145. data/ext/boost/mpl/set/aux_/value_type_impl.hpp +34 -0
  1146. data/ext/boost/mpl/set/set0.hpp +35 -0
  1147. data/ext/boost/mpl/set/set0_c.hpp +32 -0
  1148. data/ext/boost/mpl/set/set10.hpp +44 -0
  1149. data/ext/boost/mpl/set/set10_c.hpp +45 -0
  1150. data/ext/boost/mpl/set/set20.hpp +44 -0
  1151. data/ext/boost/mpl/set/set20_c.hpp +45 -0
  1152. data/ext/boost/mpl/set/set30.hpp +44 -0
  1153. data/ext/boost/mpl/set/set30_c.hpp +45 -0
  1154. data/ext/boost/mpl/set/set40.hpp +44 -0
  1155. data/ext/boost/mpl/set/set40_c.hpp +45 -0
  1156. data/ext/boost/mpl/set/set50.hpp +44 -0
  1157. data/ext/boost/mpl/set/set50_c.hpp +45 -0
  1158. data/ext/boost/mpl/set_c.hpp +60 -0
  1159. data/ext/boost/mpl/shift_left.hpp +22 -0
  1160. data/ext/boost/mpl/shift_right.hpp +22 -0
  1161. data/ext/boost/mpl/single_view.hpp +38 -0
  1162. data/ext/boost/mpl/size.hpp +1 -1
  1163. data/ext/boost/mpl/size_fwd.hpp +1 -1
  1164. data/ext/boost/mpl/size_t.hpp +1 -1
  1165. data/ext/boost/mpl/size_t_fwd.hpp +1 -1
  1166. data/ext/boost/mpl/sizeof.hpp +36 -0
  1167. data/ext/boost/mpl/sort.hpp +27 -0
  1168. data/ext/boost/mpl/stable_partition.hpp +75 -0
  1169. data/ext/boost/mpl/string.hpp +607 -0
  1170. data/ext/boost/mpl/switch.hpp +49 -0
  1171. data/ext/boost/mpl/tag.hpp +1 -1
  1172. data/ext/boost/mpl/times.hpp +1 -1
  1173. data/ext/boost/mpl/transform.hpp +145 -0
  1174. data/ext/boost/mpl/transform_view.hpp +46 -0
  1175. data/ext/boost/mpl/unique.hpp +85 -0
  1176. data/ext/boost/mpl/unpack_args.hpp +150 -0
  1177. data/ext/boost/mpl/upper_bound.hpp +141 -0
  1178. data/ext/boost/mpl/value_type.hpp +42 -0
  1179. data/ext/boost/mpl/value_type_fwd.hpp +25 -0
  1180. data/ext/boost/mpl/vector.hpp +1 -1
  1181. data/ext/boost/mpl/vector/aux_/O1_size.hpp +1 -1
  1182. data/ext/boost/mpl/vector/aux_/at.hpp +1 -1
  1183. data/ext/boost/mpl/vector/aux_/back.hpp +1 -1
  1184. data/ext/boost/mpl/vector/aux_/begin_end.hpp +1 -1
  1185. data/ext/boost/mpl/vector/aux_/clear.hpp +1 -1
  1186. data/ext/boost/mpl/vector/aux_/empty.hpp +1 -1
  1187. data/ext/boost/mpl/vector/aux_/front.hpp +1 -1
  1188. data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +1 -1
  1189. data/ext/boost/mpl/vector/aux_/item.hpp +1 -1
  1190. data/ext/boost/mpl/vector/aux_/iterator.hpp +1 -1
  1191. data/ext/boost/mpl/vector/aux_/numbered.hpp +218 -0
  1192. data/ext/boost/mpl/vector/aux_/numbered_c.hpp +77 -0
  1193. data/ext/boost/mpl/vector/aux_/pop_back.hpp +1 -1
  1194. data/ext/boost/mpl/vector/aux_/pop_front.hpp +1 -1
  1195. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp +1528 -0
  1196. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp +149 -0
  1197. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp +1804 -0
  1198. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp +195 -0
  1199. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp +2124 -0
  1200. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp +238 -0
  1201. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp +2444 -0
  1202. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp +281 -0
  1203. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp +2764 -0
  1204. data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp +325 -0
  1205. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp +149 -0
  1206. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp +195 -0
  1207. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp +1464 -0
  1208. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp +238 -0
  1209. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp +1784 -0
  1210. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp +281 -0
  1211. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp +2104 -0
  1212. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp +325 -0
  1213. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp +154 -0
  1214. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp +163 -0
  1215. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp +179 -0
  1216. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp +173 -0
  1217. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp +199 -0
  1218. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp +183 -0
  1219. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp +219 -0
  1220. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp +193 -0
  1221. data/ext/boost/mpl/vector/aux_/push_back.hpp +1 -1
  1222. data/ext/boost/mpl/vector/aux_/push_front.hpp +1 -1
  1223. data/ext/boost/mpl/vector/aux_/size.hpp +1 -1
  1224. data/ext/boost/mpl/vector/aux_/tag.hpp +1 -1
  1225. data/ext/boost/mpl/vector/aux_/vector0.hpp +1 -1
  1226. data/ext/boost/mpl/vector/vector0.hpp +1 -1
  1227. data/ext/boost/mpl/vector/vector0_c.hpp +31 -0
  1228. data/ext/boost/mpl/vector/vector10.hpp +1 -1
  1229. data/ext/boost/mpl/vector/vector10_c.hpp +46 -0
  1230. data/ext/boost/mpl/vector/vector20.hpp +1 -1
  1231. data/ext/boost/mpl/vector/vector20_c.hpp +46 -0
  1232. data/ext/boost/mpl/vector/vector30.hpp +45 -0
  1233. data/ext/boost/mpl/vector/vector30_c.hpp +47 -0
  1234. data/ext/boost/mpl/vector/vector40.hpp +45 -0
  1235. data/ext/boost/mpl/vector/vector40_c.hpp +46 -0
  1236. data/ext/boost/mpl/vector/vector50.hpp +45 -0
  1237. data/ext/boost/mpl/vector/vector50_c.hpp +46 -0
  1238. data/ext/boost/mpl/vector_c.hpp +61 -0
  1239. data/ext/boost/mpl/void.hpp +1 -1
  1240. data/ext/boost/mpl/void_fwd.hpp +1 -1
  1241. data/ext/boost/mpl/zip_view.hpp +65 -0
  1242. data/ext/boost/numeric/conversion/converter_policies.hpp +8 -0
  1243. data/ext/boost/optional/optional.hpp +2 -2
  1244. data/ext/boost/pointee.hpp +74 -0
  1245. data/ext/boost/preprocessor/{control/deduce_d.hpp → dec.hpp} +3 -8
  1246. data/ext/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
  1247. data/ext/boost/preprocessor/enum_shifted_params.hpp +17 -0
  1248. data/ext/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
  1249. data/ext/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
  1250. data/ext/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
  1251. data/ext/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
  1252. data/ext/boost/preprocessor/repeat_2nd.hpp +17 -0
  1253. data/ext/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
  1254. data/ext/boost/range/algorithm/equal.hpp +15 -5
  1255. data/ext/boost/range/as_literal.hpp +1 -1
  1256. data/ext/boost/range/size.hpp +3 -3
  1257. data/ext/boost/range/size_type.hpp +33 -23
  1258. data/ext/boost/ratio/config.hpp +86 -0
  1259. data/ext/boost/ratio/detail/mpl/abs.hpp +89 -0
  1260. data/ext/boost/ratio/detail/mpl/gcd.hpp +124 -0
  1261. data/ext/boost/ratio/detail/mpl/lcm.hpp +126 -0
  1262. data/ext/boost/ratio/detail/mpl/sign.hpp +89 -0
  1263. data/ext/boost/ratio/detail/overflow_helpers.hpp +367 -0
  1264. data/ext/boost/ratio/ratio.hpp +233 -0
  1265. data/ext/boost/ratio/ratio_fwd.hpp +84 -0
  1266. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -3
  1267. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +150 -0
  1268. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +27 -2
  1269. data/ext/boost/swap.hpp +12 -0
  1270. data/ext/boost/system/api_config.hpp +42 -0
  1271. data/ext/boost/system/config.hpp +69 -0
  1272. data/ext/boost/system/error_code.hpp +513 -0
  1273. data/ext/boost/system/system_error.hpp +80 -0
  1274. data/ext/boost/thread/barrier.hpp +4 -4
  1275. data/ext/boost/thread/cv_status.hpp +26 -0
  1276. data/ext/boost/thread/detail/config.hpp +119 -5
  1277. data/ext/boost/thread/detail/delete.hpp +45 -0
  1278. data/ext/boost/thread/detail/memory.hpp +156 -0
  1279. data/ext/boost/thread/detail/move.hpp +181 -1
  1280. data/ext/boost/thread/detail/platform.hpp +3 -1
  1281. data/ext/boost/thread/detail/thread.hpp +254 -157
  1282. data/ext/boost/thread/detail/thread_interruption.hpp +12 -11
  1283. data/ext/boost/thread/exceptions.hpp +125 -136
  1284. data/ext/boost/thread/future.hpp +778 -353
  1285. data/ext/boost/thread/locks.hpp +548 -347
  1286. data/ext/boost/thread/once.hpp +3 -1
  1287. data/ext/boost/thread/pthread/condition_variable.hpp +140 -31
  1288. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +143 -15
  1289. data/ext/boost/thread/pthread/mutex.hpp +76 -24
  1290. data/ext/boost/thread/pthread/once.hpp +53 -22
  1291. data/ext/boost/thread/pthread/recursive_mutex.hpp +74 -27
  1292. data/ext/boost/thread/pthread/shared_mutex.hpp +250 -2
  1293. data/ext/boost/thread/pthread/thread_data.hpp +109 -6
  1294. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +4 -4
  1295. data/ext/boost/thread/reverse_lock.hpp +58 -0
  1296. data/ext/boost/thread/shared_lock_guard.hpp +52 -0
  1297. data/ext/boost/thread/shared_mutex.hpp +7 -2
  1298. data/ext/boost/thread/thread.hpp +2 -1
  1299. data/ext/boost/thread/v2/thread.hpp +56 -0
  1300. data/ext/boost/thread/xtime.hpp +4 -4
  1301. data/ext/boost/throw_exception.hpp +13 -4
  1302. data/ext/boost/tuple/detail/tuple_basic.hpp +980 -0
  1303. data/ext/boost/tuple/tuple.hpp +90 -0
  1304. data/ext/boost/type_traits/add_cv.hpp +48 -0
  1305. data/ext/boost/type_traits/common_type.hpp +158 -0
  1306. data/ext/boost/type_traits/cv_traits.hpp +24 -0
  1307. data/ext/boost/type_traits/decay.hpp +44 -0
  1308. data/ext/boost/type_traits/detail/bool_trait_def.hpp +1 -1
  1309. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +1 -1
  1310. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +1 -1
  1311. data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +1 -1
  1312. data/ext/boost/type_traits/detail/type_trait_def.hpp +1 -1
  1313. data/ext/boost/type_traits/detail/type_trait_undef.hpp +1 -1
  1314. data/ext/boost/type_traits/has_nothrow_assign.hpp +44 -0
  1315. data/ext/boost/type_traits/has_trivial_assign.hpp +57 -0
  1316. data/ext/boost/type_traits/intrinsics.hpp +4 -3
  1317. data/ext/boost/type_traits/is_compound.hpp +46 -0
  1318. data/ext/boost/type_traits/is_empty.hpp +229 -0
  1319. data/ext/boost/type_traits/is_object.hpp +53 -0
  1320. data/ext/boost/type_traits/is_stateless.hpp +48 -0
  1321. data/ext/boost/type_traits/object_traits.hpp +33 -0
  1322. data/ext/boost/type_traits/remove_bounds.hpp +48 -0
  1323. data/ext/boost/type_traits/remove_volatile.hpp +88 -0
  1324. data/ext/boost/type_traits/same_traits.hpp +15 -0
  1325. data/ext/boost/type_traits/transform_traits.hpp +21 -0
  1326. data/ext/boost/typeof/message.hpp +8 -0
  1327. data/ext/boost/typeof/native.hpp +60 -0
  1328. data/ext/boost/typeof/typeof.hpp +218 -0
  1329. data/ext/boost/utility/declval.hpp +7 -2
  1330. data/ext/boost/utility/detail/result_of_iterate.hpp +98 -32
  1331. data/ext/boost/utility/result_of.hpp +92 -8
  1332. data/ext/boost/version.hpp +32 -0
  1333. data/ext/common/Account.h +1 -1
  1334. data/ext/common/AccountsDatabase.cpp +1 -1
  1335. data/ext/common/AccountsDatabase.h +1 -1
  1336. data/ext/common/AgentsStarter.cpp +5 -6
  1337. data/ext/common/AgentsStarter.h +4 -4
  1338. data/ext/common/AgentsStarter.hpp +4 -6
  1339. data/ext/common/AnsiColorConstants.h +1 -1
  1340. data/ext/common/ApplicationPool2/Common.h +62 -2
  1341. data/ext/common/ApplicationPool2/ComponentInfo.h +1 -1
  1342. data/ext/common/ApplicationPool2/Group.h +411 -150
  1343. data/ext/common/ApplicationPool2/Implementation.cpp +367 -86
  1344. data/ext/common/ApplicationPool2/Options.h +6 -2
  1345. data/ext/common/ApplicationPool2/PipeWatcher.h +1 -1
  1346. data/ext/common/ApplicationPool2/Pool.h +260 -137
  1347. data/ext/common/ApplicationPool2/Process.h +28 -27
  1348. data/ext/common/ApplicationPool2/Session.h +4 -2
  1349. data/ext/common/ApplicationPool2/Socket.h +1 -1
  1350. data/ext/common/ApplicationPool2/Spawner.h +133 -77
  1351. data/ext/common/ApplicationPool2/SuperGroup.h +16 -15
  1352. data/ext/common/BackgroundEventLoop.cpp +1 -1
  1353. data/ext/common/BackgroundEventLoop.h +1 -1
  1354. data/ext/common/Constants.h +2 -2
  1355. data/ext/common/EventedBufferedInput.h +1 -1
  1356. data/ext/common/EventedClient.h +1 -1
  1357. data/ext/common/EventedMessageServer.h +1 -1
  1358. data/ext/common/EventedServer.h +1 -1
  1359. data/ext/common/Exceptions.h +1 -1
  1360. data/ext/common/FileDescriptor.h +1 -1
  1361. data/ext/common/HttpConstants.h +8 -8
  1362. data/ext/common/IniFile.h +1 -1
  1363. data/ext/common/Logging.cpp +45 -20
  1364. data/ext/common/Logging.h +16 -65
  1365. data/ext/common/MessageClient.h +1 -1
  1366. data/ext/common/MessageReadersWriters.h +1 -1
  1367. data/ext/common/MessageServer.h +1 -1
  1368. data/ext/common/MultiLibeio.cpp +1 -1
  1369. data/ext/common/MultiLibeio.h +1 -1
  1370. data/ext/common/RandomGenerator.h +1 -1
  1371. data/ext/common/ResourceLocator.h +1 -1
  1372. data/ext/common/SafeLibev.h +1 -1
  1373. data/ext/common/ServerInstanceDir.h +1 -1
  1374. data/ext/common/StaticString.h +1 -1
  1375. data/ext/common/StringListCreator.h +1 -1
  1376. data/ext/common/UnionStation.h +1 -1
  1377. data/ext/common/Utils.cpp +6 -1
  1378. data/ext/common/Utils.h +9 -1
  1379. data/ext/common/Utils/BlockingQueue.h +1 -1
  1380. data/ext/common/Utils/CachedFileStat.cpp +1 -1
  1381. data/ext/common/Utils/CachedFileStat.h +1 -1
  1382. data/ext/common/Utils/CachedFileStat.hpp +1 -1
  1383. data/ext/common/Utils/FileChangeChecker.h +1 -1
  1384. data/ext/common/Utils/HashMap.h +1 -1
  1385. data/ext/common/Utils/HttpHeaderBufferer.h +1 -1
  1386. data/ext/common/Utils/IOUtils.cpp +3 -3
  1387. data/ext/common/Utils/IOUtils.h +1 -1
  1388. data/ext/common/Utils/MemZeroGuard.h +1 -1
  1389. data/ext/common/Utils/MemoryBarrier.h +1 -1
  1390. data/ext/common/Utils/MessageIO.h +1 -1
  1391. data/ext/common/Utils/MessagePassing.h +304 -0
  1392. data/ext/common/Utils/ProcessMetricsCollector.h +1 -1
  1393. data/ext/common/Utils/ScopeGuard.h +1 -1
  1394. data/ext/common/Utils/StrIntUtils.cpp +40 -1
  1395. data/ext/common/Utils/StrIntUtils.h +7 -1
  1396. data/ext/common/Utils/StringMap.h +1 -1
  1397. data/ext/common/Utils/SystemTime.cpp +1 -1
  1398. data/ext/common/Utils/SystemTime.h +1 -1
  1399. data/ext/common/Utils/Timer.h +1 -1
  1400. data/ext/common/Utils/VariantMap.h +1 -1
  1401. data/ext/common/agents/Base.cpp +182 -10
  1402. data/ext/common/agents/Base.h +1 -1
  1403. data/ext/common/agents/HelperAgent/AgentOptions.h +1 -1
  1404. data/ext/common/agents/HelperAgent/BacktracesServer.h +1 -1
  1405. data/ext/common/agents/HelperAgent/FileBackedPipe.h +1 -1
  1406. data/ext/common/agents/HelperAgent/Main.cpp +13 -5
  1407. data/ext/common/agents/HelperAgent/RequestHandler.cpp +1 -1
  1408. data/ext/common/agents/HelperAgent/RequestHandler.h +23 -9
  1409. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +1 -1
  1410. data/ext/common/agents/LoggingAgent/DataStoreId.h +1 -1
  1411. data/ext/common/agents/LoggingAgent/FilterSupport.cpp +1 -1
  1412. data/ext/common/agents/LoggingAgent/FilterSupport.h +1 -1
  1413. data/ext/common/agents/LoggingAgent/LoggingServer.h +89 -214
  1414. data/ext/common/agents/LoggingAgent/Main.cpp +9 -19
  1415. data/ext/common/agents/LoggingAgent/RemoteSender.h +9 -2
  1416. data/ext/common/agents/SpawnPreparer.cpp +70 -30
  1417. data/ext/common/agents/Watchdog/Main.cpp +1 -1
  1418. data/ext/libeio/Changes +4 -0
  1419. data/ext/libeio/ecb.h +281 -24
  1420. data/ext/libeio/eio.c +48 -63
  1421. data/ext/libeio/eio.h +7 -6
  1422. data/ext/libeio/libeio.m4 +0 -16
  1423. data/ext/libeio/xthread.h +2 -2
  1424. data/ext/libev/configure +299 -271
  1425. data/ext/nginx/Configuration.c +15 -52
  1426. data/ext/nginx/Configuration.h +0 -2
  1427. data/ext/nginx/ContentHandler.c +13 -2
  1428. data/ext/nginx/ngx_http_passenger_module.c +2 -19
  1429. data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
  1430. data/ext/oxt/dynamic_thread_group.hpp +2 -2
  1431. data/ext/oxt/spin_lock.hpp +1 -1
  1432. data/ext/oxt/system_calls.cpp +36 -13
  1433. data/ext/oxt/thread.hpp +11 -5
  1434. data/ext/ruby/extconf.rb +1 -1
  1435. data/ext/ruby/passenger_native_support.c +3 -2
  1436. data/helper-scripts/classic-rails-loader.rb +3 -1
  1437. data/helper-scripts/classic-rails-preloader.rb +4 -1
  1438. data/helper-scripts/node-loader.js +1 -1
  1439. data/helper-scripts/prespawn +1 -1
  1440. data/helper-scripts/rack-loader.rb +3 -1
  1441. data/helper-scripts/rack-preloader.rb +4 -1
  1442. data/helper-scripts/system-memory-stats.py +185 -0
  1443. data/helper-scripts/wsgi-loader.py +1 -1
  1444. data/lib/phusion_passenger.rb +3 -3
  1445. data/lib/phusion_passenger/abstract_installer.rb +1 -1
  1446. data/lib/phusion_passenger/admin_tools.rb +1 -1
  1447. data/lib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
  1448. data/lib/phusion_passenger/admin_tools/server_instance.rb +1 -1
  1449. data/lib/phusion_passenger/analytics_logger.rb +10 -4
  1450. data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +3 -2
  1451. data/lib/phusion_passenger/common_library.rb +1 -1
  1452. data/lib/phusion_passenger/console_text_template.rb +1 -1
  1453. data/lib/phusion_passenger/constants.rb +6 -5
  1454. data/lib/phusion_passenger/debug_logging.rb +5 -1
  1455. data/lib/phusion_passenger/dependencies.rb +3 -3
  1456. data/lib/phusion_passenger/loader_shared_helpers.rb +12 -7
  1457. data/lib/phusion_passenger/message_channel.rb +1 -1
  1458. data/lib/phusion_passenger/message_client.rb +1 -1
  1459. data/lib/phusion_passenger/native_support.rb +1 -1
  1460. data/lib/phusion_passenger/packaging.rb +7 -4
  1461. data/lib/phusion_passenger/platform_info.rb +1 -1
  1462. data/lib/phusion_passenger/platform_info/apache.rb +2 -2
  1463. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +14 -5
  1464. data/lib/phusion_passenger/platform_info/compiler.rb +8 -1
  1465. data/lib/phusion_passenger/platform_info/curl.rb +1 -1
  1466. data/lib/phusion_passenger/platform_info/linux.rb +1 -1
  1467. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  1468. data/lib/phusion_passenger/platform_info/ruby.rb +2 -2
  1469. data/lib/phusion_passenger/platform_info/zlib.rb +1 -1
  1470. data/lib/phusion_passenger/plugin.rb +2 -2
  1471. data/lib/phusion_passenger/preloader_shared_helpers.rb +14 -1
  1472. data/lib/phusion_passenger/public_api.rb +8 -2
  1473. data/lib/phusion_passenger/{classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb → rack/out_of_band_gc.rb} +35 -28
  1474. data/lib/phusion_passenger/rack/thread_handler_extension.rb +31 -6
  1475. data/lib/phusion_passenger/rails3_extensions/init.rb +15 -9
  1476. data/lib/phusion_passenger/request_handler.rb +104 -47
  1477. data/lib/phusion_passenger/request_handler/thread_handler.rb +28 -7
  1478. data/lib/phusion_passenger/ruby_core_enhancements.rb +34 -5
  1479. data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
  1480. data/lib/phusion_passenger/standalone/app_finder.rb +1 -1
  1481. data/lib/phusion_passenger/standalone/command.rb +5 -5
  1482. data/lib/phusion_passenger/standalone/config_file.rb +1 -1
  1483. data/lib/phusion_passenger/standalone/help_command.rb +1 -1
  1484. data/lib/phusion_passenger/standalone/main.rb +1 -1
  1485. data/lib/phusion_passenger/standalone/package_runtime_command.rb +1 -1
  1486. data/lib/phusion_passenger/standalone/runtime_installer.rb +1 -1
  1487. data/lib/phusion_passenger/standalone/start_command.rb +73 -21
  1488. data/lib/phusion_passenger/standalone/status_command.rb +1 -1
  1489. data/lib/phusion_passenger/standalone/stop_command.rb +1 -1
  1490. data/lib/phusion_passenger/standalone/utils.rb +2 -2
  1491. data/lib/phusion_passenger/standalone/version_command.rb +1 -1
  1492. data/lib/phusion_passenger/utils.rb +1 -1
  1493. data/lib/phusion_passenger/utils/ansi_colors.rb +2 -2
  1494. data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
  1495. data/lib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
  1496. data/lib/phusion_passenger/utils/robust_interruption.rb +10 -6
  1497. data/lib/phusion_passenger/utils/tmpdir.rb +2 -2
  1498. data/lib/phusion_passenger/utils/unseekable_socket.rb +1 -1
  1499. data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
  1500. data/resources/templates/error_layout.html.template +4 -0
  1501. data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +1 -1
  1502. data/resources/templates/standalone/config.erb +1 -0
  1503. data/test/.rspec +3 -0
  1504. data/test/config.json.travis +15 -0
  1505. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -2
  1506. data/test/cxx/ApplicationPool2/PoolTest.cpp +349 -128
  1507. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +21 -18
  1508. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +141 -118
  1509. data/test/cxx/BufferedIOTest.cpp +11 -11
  1510. data/test/cxx/CxxTestMain.cpp +40 -11
  1511. data/test/cxx/EventedClientTest.cpp +18 -18
  1512. data/test/cxx/FilterSupportTest.cpp +1 -1
  1513. data/test/cxx/IOUtilsTest.cpp +18 -10
  1514. data/test/cxx/MessageIOTest.cpp +9 -9
  1515. data/test/cxx/MessagePassingTest.cpp +81 -0
  1516. data/test/cxx/MessageReadersWritersTest.cpp +3 -4
  1517. data/test/cxx/RequestHandlerTest.cpp +69 -9
  1518. data/test/cxx/TestSupport.h +3 -1
  1519. data/test/cxx/UnionStationTest.cpp +43 -82
  1520. data/test/gdbinit.example +31 -0
  1521. data/test/integration_tests/nginx_tests.rb +48 -0
  1522. data/test/integration_tests/spec_helper.rb +1 -0
  1523. data/test/ruby/analytics_logger_spec.rb +11 -19
  1524. data/test/ruby/classic_rails/loader_spec.rb +3 -4
  1525. data/test/ruby/classic_rails/preloader_spec.rb +3 -4
  1526. data/test/ruby/rack/loader_spec.rb +2 -22
  1527. data/test/ruby/rack/preloader_spec.rb +2 -28
  1528. data/test/ruby/rails3.0/loader_spec.rb +26 -0
  1529. data/test/ruby/rails3.0/preloader_spec.rb +32 -0
  1530. data/test/ruby/rails3.1/loader_spec.rb +26 -0
  1531. data/test/ruby/rails3.1/preloader_spec.rb +32 -0
  1532. data/test/ruby/rails3.2/loader_spec.rb +26 -0
  1533. data/test/ruby/rails3.2/preloader_spec.rb +32 -0
  1534. data/test/ruby/request_handler_spec.rb +104 -13
  1535. data/test/ruby/shared/{loader_spec.rb → loader_sharedspec.rb} +1 -1
  1536. data/test/ruby/shared/rails/{analytics_logging_extensions_spec.rb → analytics_logging_extensions_sharedspec.rb} +26 -27
  1537. data/test/ruby/shared/{ruby_loader_spec.rb → ruby_loader_sharedspec.rb} +1 -1
  1538. data/test/ruby/spec_helper.rb +3 -3
  1539. data/test/stub/rails2.3/app/helpers/bar_helper.rb +2 -0
  1540. data/test/stub/rails2.3/app/helpers/foo_helper.rb +2 -0
  1541. data/test/stub/rails3.0/config/environments/production.rb +1 -1
  1542. data/test/stub/rails3.1/Gemfile +37 -0
  1543. data/test/stub/rails3.1/Gemfile.lock +115 -0
  1544. data/test/stub/rails3.1/README +261 -0
  1545. data/test/stub/rails3.1/Rakefile +7 -0
  1546. data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
  1547. data/test/stub/rails3.1/app/assets/javascripts/application.js +9 -0
  1548. data/test/stub/rails3.1/app/assets/stylesheets/application.css +7 -0
  1549. data/test/stub/rails3.1/app/controllers/application_controller.rb +3 -0
  1550. data/test/stub/rails3.1/app/helpers/application_helper.rb +2 -0
  1551. data/test/stub/rails3.1/app/views/layouts/application.html.erb +14 -0
  1552. data/test/stub/rails3.1/config.ru +4 -0
  1553. data/test/stub/rails3.1/config/application.rb +48 -0
  1554. data/test/stub/rails3.1/config/boot.rb +6 -0
  1555. data/test/stub/rails3.1/config/database.yml +25 -0
  1556. data/test/stub/rails3.1/config/environment.rb +5 -0
  1557. data/test/stub/rails3.1/config/environments/development.rb +30 -0
  1558. data/test/stub/rails3.1/config/environments/production.rb +60 -0
  1559. data/test/stub/rails3.1/config/environments/test.rb +39 -0
  1560. data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +7 -0
  1561. data/test/stub/rails3.1/config/initializers/inflections.rb +10 -0
  1562. data/test/stub/rails3.1/config/initializers/mime_types.rb +5 -0
  1563. data/test/stub/rails3.1/config/initializers/passenger.rb +1 -0
  1564. data/test/stub/rails3.1/config/initializers/secret_token.rb +7 -0
  1565. data/test/stub/rails3.1/config/initializers/session_store.rb +8 -0
  1566. data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +14 -0
  1567. data/test/stub/rails3.1/config/locales/en.yml +5 -0
  1568. data/test/stub/rails3.1/config/routes.rb +58 -0
  1569. data/test/stub/rails3.1/db/seeds.rb +7 -0
  1570. data/test/stub/rails3.1/doc/README_FOR_APP +2 -0
  1571. data/test/stub/rails3.1/public/404.html +26 -0
  1572. data/test/stub/rails3.1/public/422.html +26 -0
  1573. data/test/stub/rails3.1/public/500.html +26 -0
  1574. data/test/stub/rails3.1/public/favicon.ico +0 -0
  1575. data/test/stub/rails3.1/public/index.html +241 -0
  1576. data/test/stub/rails3.1/public/robots.txt +5 -0
  1577. data/test/stub/rails3.1/script/rails +6 -0
  1578. data/test/stub/rails3.1/test/performance/browsing_test.rb +12 -0
  1579. data/test/stub/rails3.1/test/test_helper.rb +13 -0
  1580. data/test/stub/rails3.2/Gemfile +39 -0
  1581. data/test/stub/rails3.2/Gemfile.lock +113 -0
  1582. data/test/stub/rails3.2/Rakefile +7 -0
  1583. data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
  1584. data/test/stub/rails3.2/app/assets/javascripts/application.js +15 -0
  1585. data/test/stub/rails3.2/app/assets/stylesheets/application.css +13 -0
  1586. data/test/stub/rails3.2/app/controllers/application_controller.rb +3 -0
  1587. data/test/stub/rails3.2/app/helpers/application_helper.rb +2 -0
  1588. data/test/stub/rails3.2/app/views/layouts/application.html.erb +14 -0
  1589. data/test/stub/rails3.2/config.ru +4 -0
  1590. data/test/stub/rails3.2/config/application.rb +62 -0
  1591. data/test/stub/rails3.2/config/boot.rb +6 -0
  1592. data/test/stub/rails3.2/config/database.yml +25 -0
  1593. data/test/stub/rails3.2/config/environment.rb +5 -0
  1594. data/test/stub/rails3.2/config/environments/development.rb +37 -0
  1595. data/test/stub/rails3.2/config/environments/production.rb +67 -0
  1596. data/test/stub/rails3.2/config/environments/test.rb +37 -0
  1597. data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +7 -0
  1598. data/test/stub/rails3.2/config/initializers/inflections.rb +15 -0
  1599. data/test/stub/rails3.2/config/initializers/mime_types.rb +5 -0
  1600. data/test/stub/rails3.2/config/initializers/passenger.rb +1 -0
  1601. data/test/stub/rails3.2/config/initializers/secret_token.rb +7 -0
  1602. data/test/stub/rails3.2/config/initializers/session_store.rb +8 -0
  1603. data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +14 -0
  1604. data/test/stub/rails3.2/config/locales/en.yml +5 -0
  1605. data/test/stub/rails3.2/config/routes.rb +58 -0
  1606. data/test/stub/rails3.2/db/seeds.rb +7 -0
  1607. data/test/stub/rails3.2/doc/README_FOR_APP +2 -0
  1608. data/test/stub/rails3.2/public/404.html +26 -0
  1609. data/test/stub/rails3.2/public/422.html +26 -0
  1610. data/test/stub/rails3.2/public/500.html +25 -0
  1611. data/test/stub/rails3.2/public/favicon.ico +0 -0
  1612. data/test/stub/rails3.2/public/index.html +241 -0
  1613. data/test/stub/rails3.2/public/robots.txt +5 -0
  1614. data/test/stub/rails3.2/script/rails +6 -0
  1615. data/test/stub/rails3.2/test/performance/browsing_test.rb +12 -0
  1616. data/test/stub/rails3.2/test/test_helper.rb +13 -0
  1617. data/test/stub/wsgi/passenger_wsgi.py +12 -3
  1618. data/test/support/test_helper.rb +5 -3
  1619. data/test/tut/tut.h +61 -0
  1620. metadata +1173 -236
  1621. data/DEVELOPERS.TXT +0 -108
  1622. data/INSTALL +0 -6
  1623. data/README +0 -45
  1624. data/ext/boost/config/platform/win32.hpp +0 -71
  1625. data/ext/boost/implicit_cast.hpp +0 -29
  1626. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +0 -61
  1627. data/ext/boost/preprocessor/arithmetic/mod.hpp +0 -39
  1628. data/ext/boost/preprocessor/comparison/less_equal.hpp +0 -39
  1629. data/ext/boost/preprocessor/logical/not.hpp +0 -30
  1630. data/ext/boost/preprocessor/seq/cat.hpp +0 -49
  1631. data/ext/boost/preprocessor/seq/fold_left.hpp +0 -1070
  1632. data/ext/boost/preprocessor/seq/transform.hpp +0 -48
  1633. data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +0 -63
  1634. data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +0 -130
  1635. data/ext/boost/utility.hpp +0 -20
  1636. data/ext/boost/utility/base_from_member.hpp +0 -87
  1637. data/ext/boost/utility/binary.hpp +0 -708
  1638. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +0 -67
  1639. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +0 -48
  1640. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +0 -59
  1641. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +0 -130
  1642. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +0 -47
  1643. data/lib/phusion_passenger/classic_rails_extensions/init.rb +0 -125
@@ -9,7 +9,7 @@
9
9
  #if defined(_MSC_VER)
10
10
  #define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn)
11
11
  #elif defined(__GNUC__)
12
- #define BOOST_ATTRIBUTE_NORETURN __attribute__((noreturn))
12
+ #define BOOST_ATTRIBUTE_NORETURN __attribute__((__noreturn__))
13
13
  #else
14
14
  #define BOOST_ATTRIBUTE_NORETURN
15
15
  #endif
@@ -30,7 +30,8 @@ boost
30
30
 
31
31
  protected:
32
32
 
33
- virtual ~error_info_base() throw()
33
+ virtual
34
+ ~error_info_base() throw()
34
35
  {
35
36
  }
36
37
  };
@@ -25,7 +25,7 @@
25
25
  #include <stdexcept>
26
26
  #include <new>
27
27
  #include <ios>
28
- #include <cstdlib>
28
+ #include <stdlib.h>
29
29
 
30
30
  namespace
31
31
  boost
@@ -457,7 +457,12 @@ boost
457
457
  BOOST_ASSERT(p);
458
458
  p.ptr_->rethrow();
459
459
  BOOST_ASSERT(0);
460
- std::abort();
460
+ #if defined(UNDER_CE)
461
+ // some CE platforms don't define ::abort()
462
+ exit(-1);
463
+ #else
464
+ abort();
465
+ #endif
461
466
  }
462
467
 
463
468
  inline
@@ -310,6 +310,11 @@ boost
310
310
  namespace
311
311
  exception_detail
312
312
  {
313
+ #if defined(__GNUC__)
314
+ # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
315
+ # pragma GCC visibility push (default)
316
+ # endif
317
+ #endif
313
318
  template <class T>
314
319
  struct
315
320
  error_info_injector:
@@ -326,6 +331,11 @@ boost
326
331
  {
327
332
  }
328
333
  };
334
+ #if defined(__GNUC__)
335
+ # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
336
+ # pragma GCC visibility pop
337
+ # endif
338
+ #endif
329
339
 
330
340
  struct large_size { char c[256]; };
331
341
  large_size dispatch_boost_exception( exception const * );
@@ -373,6 +383,11 @@ boost
373
383
  namespace
374
384
  exception_detail
375
385
  {
386
+ #if defined(__GNUC__)
387
+ # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
388
+ # pragma GCC visibility push (default)
389
+ # endif
390
+ #endif
376
391
  class
377
392
  clone_base
378
393
  {
@@ -386,6 +401,11 @@ boost
386
401
  {
387
402
  }
388
403
  };
404
+ #if defined(__GNUC__)
405
+ # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
406
+ # pragma GCC visibility pop
407
+ # endif
408
+ #endif
389
409
 
390
410
  inline
391
411
  void
@@ -410,8 +430,15 @@ boost
410
430
  class
411
431
  clone_impl:
412
432
  public T,
413
- public clone_base
433
+ public virtual clone_base
414
434
  {
435
+ struct clone_tag { };
436
+ clone_impl( clone_impl const & x, clone_tag ):
437
+ T(x)
438
+ {
439
+ copy_boost_exception(this,&x);
440
+ }
441
+
415
442
  public:
416
443
 
417
444
  explicit
@@ -430,7 +457,7 @@ boost
430
457
  clone_base const *
431
458
  clone() const
432
459
  {
433
- return new clone_impl(*this);
460
+ return new clone_impl(*this,clone_tag());
434
461
  }
435
462
 
436
463
  void
@@ -97,7 +97,7 @@ boost
97
97
  {
98
98
  shared_ptr<error_info_base> const & p = i->second;
99
99
  #ifndef BOOST_NO_RTTI
100
- BOOST_ASSERT( BOOST_EXCEPTION_DYNAMIC_TYPEID(*p).type_==ti.type_ );
100
+ BOOST_ASSERT( *BOOST_EXCEPTION_DYNAMIC_TYPEID(*p).type_==*ti.type_ );
101
101
  #endif
102
102
  return p;
103
103
  }
@@ -0,0 +1,1128 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // foreach.hpp header file
3
+ //
4
+ // Copyright 2004 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
+ // See http://www.boost.org/libs/foreach for documentation
9
+ //
10
+ // Credits:
11
+ // Anson Tsao - for the initial inspiration and several good suggestions.
12
+ // Thorsten Ottosen - for Boost.Range, and for suggesting a way to detect
13
+ // const-qualified rvalues at compile time on VC7.1+
14
+ // Russell Hind - For help porting to Borland
15
+ // Alisdair Meredith - For help porting to Borland
16
+ // Stefan Slapeta - For help porting to Intel
17
+ // David Jenkins - For help finding a Microsoft Code Analysis bug
18
+ // mimomorin@... - For a patch to use rvalue refs on supporting compilers
19
+
20
+ #ifndef BOOST_FOREACH
21
+
22
+ // MS compatible compilers support #pragma once
23
+ #if defined(_MSC_VER) && (_MSC_VER >= 1020)
24
+ # pragma once
25
+ #endif
26
+
27
+ #include <cstddef>
28
+ #include <utility> // for std::pair
29
+
30
+ #include <boost/config.hpp>
31
+ #include <boost/detail/workaround.hpp>
32
+
33
+ // Some compilers let us detect even const-qualified rvalues at compile-time
34
+ #if !defined(BOOST_NO_RVALUE_REFERENCES) \
35
+ || BOOST_WORKAROUND(BOOST_MSVC, >= 1310) && !defined(_PREFAST_) \
36
+ || (BOOST_WORKAROUND(__GNUC__, == 4) && (__GNUC_MINOR__ <= 5) && !defined(BOOST_INTEL) && \
37
+ !defined(BOOST_CLANG)) \
38
+ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ >= 4) && !defined(BOOST_INTEL) && \
39
+ !defined(BOOST_CLANG))
40
+ # define BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION
41
+ #else
42
+ // Some compilers allow temporaries to be bound to non-const references.
43
+ // These compilers make it impossible to for BOOST_FOREACH to detect
44
+ // temporaries and avoid reevaluation of the collection expression.
45
+ # if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
46
+ || BOOST_WORKAROUND(__BORLANDC__, < 0x593) \
47
+ || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \
48
+ || BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100) \
49
+ || BOOST_WORKAROUND(__DECCXX_VER, <= 60590042)
50
+ # define BOOST_FOREACH_NO_RVALUE_DETECTION
51
+ # endif
52
+ // Some compilers do not correctly implement the lvalue/rvalue conversion
53
+ // rules of the ternary conditional operator.
54
+ # if defined(BOOST_FOREACH_NO_RVALUE_DETECTION) \
55
+ || defined(BOOST_NO_SFINAE) \
56
+ || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
57
+ || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1400)) \
58
+ || BOOST_WORKAROUND(__GNUC__, < 3) \
59
+ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)) \
60
+ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \
61
+ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \
62
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \
63
+ || BOOST_WORKAROUND(__SUNPRO_CC, >= 0x5100) \
64
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590))
65
+ # define BOOST_FOREACH_NO_CONST_RVALUE_DETECTION
66
+ # else
67
+ # define BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
68
+ # endif
69
+ #endif
70
+
71
+ #include <boost/mpl/if.hpp>
72
+ #include <boost/mpl/assert.hpp>
73
+ #include <boost/mpl/logical.hpp>
74
+ #include <boost/mpl/eval_if.hpp>
75
+ #include <boost/noncopyable.hpp>
76
+ #include <boost/range/end.hpp>
77
+ #include <boost/range/begin.hpp>
78
+ #include <boost/range/rend.hpp>
79
+ #include <boost/range/rbegin.hpp>
80
+ #include <boost/range/iterator.hpp>
81
+ #include <boost/range/reverse_iterator.hpp>
82
+ #include <boost/type_traits/is_array.hpp>
83
+ #include <boost/type_traits/is_const.hpp>
84
+ #include <boost/type_traits/is_abstract.hpp>
85
+ #include <boost/type_traits/is_base_and_derived.hpp>
86
+ #include <boost/type_traits/is_rvalue_reference.hpp>
87
+ #include <boost/iterator/iterator_traits.hpp>
88
+ #include <boost/utility/addressof.hpp>
89
+ #include <boost/foreach_fwd.hpp>
90
+
91
+ #ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
92
+ # include <new>
93
+ # include <boost/aligned_storage.hpp>
94
+ # include <boost/utility/enable_if.hpp>
95
+ # include <boost/type_traits/remove_const.hpp>
96
+ #endif
97
+
98
+ namespace boost
99
+ {
100
+
101
+ // forward declarations for iterator_range
102
+ template<typename T>
103
+ class iterator_range;
104
+
105
+ // forward declarations for sub_range
106
+ template<typename T>
107
+ class sub_range;
108
+
109
+ namespace foreach
110
+ {
111
+ ///////////////////////////////////////////////////////////////////////////////
112
+ // in_range
113
+ //
114
+ template<typename T>
115
+ inline std::pair<T, T> in_range(T begin, T end)
116
+ {
117
+ return std::make_pair(begin, end);
118
+ }
119
+
120
+ ///////////////////////////////////////////////////////////////////////////////
121
+ // boost::foreach::is_lightweight_proxy
122
+ // Specialize this for user-defined collection types if they are inexpensive to copy.
123
+ // This tells BOOST_FOREACH it can avoid the rvalue/lvalue detection stuff.
124
+ template<typename T>
125
+ struct is_lightweight_proxy
126
+ : boost::mpl::false_
127
+ {
128
+ };
129
+
130
+ ///////////////////////////////////////////////////////////////////////////////
131
+ // boost::foreach::is_noncopyable
132
+ // Specialize this for user-defined collection types if they cannot be copied.
133
+ // This also tells BOOST_FOREACH to avoid the rvalue/lvalue detection stuff.
134
+ template<typename T>
135
+ struct is_noncopyable
136
+ #if !defined(BOOST_BROKEN_IS_BASE_AND_DERIVED) && !defined(BOOST_NO_IS_ABSTRACT)
137
+ : boost::mpl::or_<
138
+ boost::is_abstract<T>
139
+ , boost::is_base_and_derived<boost::noncopyable, T>
140
+ >
141
+ #elif !defined(BOOST_BROKEN_IS_BASE_AND_DERIVED)
142
+ : boost::is_base_and_derived<boost::noncopyable, T>
143
+ #elif !defined(BOOST_NO_IS_ABSTRACT)
144
+ : boost::is_abstract<T>
145
+ #else
146
+ : boost::mpl::false_
147
+ #endif
148
+ {
149
+ };
150
+
151
+ } // namespace foreach
152
+
153
+ } // namespace boost
154
+
155
+ // vc6/7 needs help ordering the following overloads
156
+ #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
157
+ # define BOOST_FOREACH_TAG_DEFAULT ...
158
+ #else
159
+ # define BOOST_FOREACH_TAG_DEFAULT boost::foreach::tag
160
+ #endif
161
+
162
+ ///////////////////////////////////////////////////////////////////////////////
163
+ // boost_foreach_is_lightweight_proxy
164
+ // Another customization point for the is_lightweight_proxy optimization,
165
+ // this one works on legacy compilers. Overload boost_foreach_is_lightweight_proxy
166
+ // at the global namespace for your type.
167
+ template<typename T>
168
+ inline boost::foreach::is_lightweight_proxy<T> *
169
+ boost_foreach_is_lightweight_proxy(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
170
+
171
+ template<typename T>
172
+ inline boost::mpl::true_ *
173
+ boost_foreach_is_lightweight_proxy(std::pair<T, T> *&, boost::foreach::tag) { return 0; }
174
+
175
+ template<typename T>
176
+ inline boost::mpl::true_ *
177
+ boost_foreach_is_lightweight_proxy(boost::iterator_range<T> *&, boost::foreach::tag) { return 0; }
178
+
179
+ template<typename T>
180
+ inline boost::mpl::true_ *
181
+ boost_foreach_is_lightweight_proxy(boost::sub_range<T> *&, boost::foreach::tag) { return 0; }
182
+
183
+ template<typename T>
184
+ inline boost::mpl::true_ *
185
+ boost_foreach_is_lightweight_proxy(T **&, boost::foreach::tag) { return 0; }
186
+
187
+ ///////////////////////////////////////////////////////////////////////////////
188
+ // boost_foreach_is_noncopyable
189
+ // Another customization point for the is_noncopyable trait,
190
+ // this one works on legacy compilers. Overload boost_foreach_is_noncopyable
191
+ // at the global namespace for your type.
192
+ template<typename T>
193
+ inline boost::foreach::is_noncopyable<T> *
194
+ boost_foreach_is_noncopyable(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
195
+
196
+ namespace boost
197
+ {
198
+
199
+ namespace foreach_detail_
200
+ {
201
+
202
+ ///////////////////////////////////////////////////////////////////////////////
203
+ // Define some utilities for assessing the properties of expressions
204
+ //
205
+ template<typename Bool1, typename Bool2>
206
+ inline boost::mpl::and_<Bool1, Bool2> *and_(Bool1 *, Bool2 *) { return 0; }
207
+
208
+ template<typename Bool1, typename Bool2, typename Bool3>
209
+ inline boost::mpl::and_<Bool1, Bool2, Bool3> *and_(Bool1 *, Bool2 *, Bool3 *) { return 0; }
210
+
211
+ template<typename Bool1, typename Bool2>
212
+ inline boost::mpl::or_<Bool1, Bool2> *or_(Bool1 *, Bool2 *) { return 0; }
213
+
214
+ template<typename Bool1, typename Bool2, typename Bool3>
215
+ inline boost::mpl::or_<Bool1, Bool2, Bool3> *or_(Bool1 *, Bool2 *, Bool3 *) { return 0; }
216
+
217
+ template<typename Bool1>
218
+ inline boost::mpl::not_<Bool1> *not_(Bool1 *) { return 0; }
219
+
220
+ template<typename T>
221
+ inline boost::is_array<T> *is_array_(T const &) { return 0; }
222
+
223
+ template<typename T>
224
+ inline boost::is_const<T> *is_const_(T &) { return 0; }
225
+
226
+ #ifndef BOOST_FOREACH_NO_RVALUE_DETECTION
227
+ template<typename T>
228
+ inline boost::mpl::true_ *is_const_(T const &) { return 0; }
229
+ #endif
230
+
231
+ #ifdef BOOST_NO_RVALUE_REFERENCES
232
+ template<typename T>
233
+ inline boost::mpl::false_ *is_rvalue_(T &, int) { return 0; }
234
+
235
+ template<typename T>
236
+ inline boost::mpl::true_ *is_rvalue_(T const &, ...) { return 0; }
237
+ #else
238
+ template<typename T>
239
+ inline boost::is_rvalue_reference<T &&> *is_rvalue_(T &&, int) { return 0; }
240
+ #endif
241
+
242
+ ///////////////////////////////////////////////////////////////////////////////
243
+ // auto_any_t/auto_any
244
+ // General utility for putting an object of any type into automatic storage
245
+ struct auto_any_base
246
+ {
247
+ // auto_any_base must evaluate to false in boolean context so that
248
+ // they can be declared in if() statements.
249
+ operator bool() const
250
+ {
251
+ return false;
252
+ }
253
+ };
254
+
255
+ template<typename T>
256
+ struct auto_any : auto_any_base
257
+ {
258
+ explicit auto_any(T const &t)
259
+ : item(t)
260
+ {
261
+ }
262
+
263
+ // temporaries of type auto_any will be bound to const auto_any_base
264
+ // references, but we still want to be able to mutate the stored
265
+ // data, so declare it as mutable.
266
+ mutable T item;
267
+ };
268
+
269
+ typedef auto_any_base const &auto_any_t;
270
+
271
+ template<typename T, typename C>
272
+ inline BOOST_DEDUCED_TYPENAME boost::mpl::if_<C, T const, T>::type &auto_any_cast(auto_any_t a)
273
+ {
274
+ return static_cast<auto_any<T> const &>(a).item;
275
+ }
276
+
277
+ typedef boost::mpl::true_ const_;
278
+
279
+ ///////////////////////////////////////////////////////////////////////////////
280
+ // type2type
281
+ //
282
+ template<typename T, typename C = boost::mpl::false_>
283
+ struct type2type
284
+ : boost::mpl::if_<C, T const, T>
285
+ {
286
+ };
287
+
288
+ template<typename T>
289
+ struct wrap_cstr
290
+ {
291
+ typedef T type;
292
+ };
293
+
294
+ template<>
295
+ struct wrap_cstr<char *>
296
+ {
297
+ typedef wrap_cstr<char *> type;
298
+ typedef char *iterator;
299
+ typedef char *const_iterator;
300
+ };
301
+
302
+ template<>
303
+ struct wrap_cstr<char const *>
304
+ {
305
+ typedef wrap_cstr<char const *> type;
306
+ typedef char const *iterator;
307
+ typedef char const *const_iterator;
308
+ };
309
+
310
+ template<>
311
+ struct wrap_cstr<wchar_t *>
312
+ {
313
+ typedef wrap_cstr<wchar_t *> type;
314
+ typedef wchar_t *iterator;
315
+ typedef wchar_t *const_iterator;
316
+ };
317
+
318
+ template<>
319
+ struct wrap_cstr<wchar_t const *>
320
+ {
321
+ typedef wrap_cstr<wchar_t const *> type;
322
+ typedef wchar_t const *iterator;
323
+ typedef wchar_t const *const_iterator;
324
+ };
325
+
326
+ template<typename T>
327
+ struct is_char_array
328
+ : mpl::and_<
329
+ is_array<T>
330
+ , mpl::or_<
331
+ is_convertible<T, char const *>
332
+ , is_convertible<T, wchar_t const *>
333
+ >
334
+ >
335
+ {};
336
+
337
+ template<typename T, typename C = boost::mpl::false_>
338
+ struct foreach_iterator
339
+ {
340
+ // **** READ THIS IF YOUR COMPILE BREAKS HERE ****
341
+ //
342
+ // There is an ambiguity about how to iterate over arrays of char and wchar_t.
343
+ // Should the last array element be treated as a null terminator to be skipped, or
344
+ // is it just like any other element in the array? To fix the problem, you must
345
+ // say which behavior you want.
346
+ //
347
+ // To treat the container as a null-terminated string, merely cast it to a
348
+ // char const *, as in BOOST_FOREACH( char ch, (char const *)"hello" ) ...
349
+ //
350
+ // To treat the container as an array, use boost::as_array() in <boost/range/as_array.hpp>,
351
+ // as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ...
352
+ #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
353
+ BOOST_MPL_ASSERT_MSG( (!is_char_array<T>::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING, (T&) );
354
+ #endif
355
+
356
+ // If the type is a pointer to a null terminated string (as opposed
357
+ // to an array type), there is no ambiguity.
358
+ typedef BOOST_DEDUCED_TYPENAME wrap_cstr<T>::type container;
359
+
360
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if<
361
+ C
362
+ , range_const_iterator<container>
363
+ , range_mutable_iterator<container>
364
+ >::type type;
365
+ };
366
+
367
+
368
+ template<typename T, typename C = boost::mpl::false_>
369
+ struct foreach_reverse_iterator
370
+ {
371
+ // **** READ THIS IF YOUR COMPILE BREAKS HERE ****
372
+ //
373
+ // There is an ambiguity about how to iterate over arrays of char and wchar_t.
374
+ // Should the last array element be treated as a null terminator to be skipped, or
375
+ // is it just like any other element in the array? To fix the problem, you must
376
+ // say which behavior you want.
377
+ //
378
+ // To treat the container as a null-terminated string, merely cast it to a
379
+ // char const *, as in BOOST_FOREACH( char ch, (char const *)"hello" ) ...
380
+ //
381
+ // To treat the container as an array, use boost::as_array() in <boost/range/as_array.hpp>,
382
+ // as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ...
383
+ #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
384
+ BOOST_MPL_ASSERT_MSG( (!is_char_array<T>::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING, (T&) );
385
+ #endif
386
+
387
+ // If the type is a pointer to a null terminated string (as opposed
388
+ // to an array type), there is no ambiguity.
389
+ typedef BOOST_DEDUCED_TYPENAME wrap_cstr<T>::type container;
390
+
391
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if<
392
+ C
393
+ , range_reverse_iterator<container const>
394
+ , range_reverse_iterator<container>
395
+ >::type type;
396
+ };
397
+
398
+ template<typename T, typename C = boost::mpl::false_>
399
+ struct foreach_reference
400
+ : iterator_reference<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
401
+ {
402
+ };
403
+
404
+ ///////////////////////////////////////////////////////////////////////////////
405
+ // encode_type
406
+ //
407
+ template<typename T>
408
+ inline type2type<T> *encode_type(T &, boost::mpl::false_ *) { return 0; }
409
+
410
+ template<typename T>
411
+ inline type2type<T, const_> *encode_type(T const &, boost::mpl::true_ *) { return 0; }
412
+
413
+ ///////////////////////////////////////////////////////////////////////////////
414
+ // set_false
415
+ //
416
+ inline bool set_false(bool &b)
417
+ {
418
+ b = false;
419
+ return false;
420
+ }
421
+
422
+ ///////////////////////////////////////////////////////////////////////////////
423
+ // to_ptr
424
+ //
425
+ template<typename T>
426
+ inline T *&to_ptr(T const &)
427
+ {
428
+ static T *t = 0;
429
+ return t;
430
+ }
431
+
432
+ // Borland needs a little extra help with arrays
433
+ #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
434
+ template<typename T,std::size_t N>
435
+ inline T (*&to_ptr(T (&)[N]))[N]
436
+ {
437
+ static T (*t)[N] = 0;
438
+ return t;
439
+ }
440
+
441
+ ///////////////////////////////////////////////////////////////////////////////
442
+ // derefof
443
+ //
444
+ template<typename T>
445
+ inline T &derefof(T *t)
446
+ {
447
+ // This is a work-around for a compiler bug in Borland. If T* is a pointer to array type U(*)[N],
448
+ // then dereferencing it results in a U* instead of U(&)[N]. The cast forces the issue.
449
+ return reinterpret_cast<T &>(
450
+ *const_cast<char *>(
451
+ reinterpret_cast<char const volatile *>(t)
452
+ )
453
+ );
454
+ }
455
+
456
+ # define BOOST_FOREACH_DEREFOF(T) boost::foreach_detail_::derefof(*T)
457
+ #else
458
+ # define BOOST_FOREACH_DEREFOF(T) (*T)
459
+ #endif
460
+
461
+ #if defined(BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION) \
462
+ && !defined(BOOST_NO_RVALUE_REFERENCES)
463
+ ///////////////////////////////////////////////////////////////////////////////
464
+ // Rvalue references makes it drop-dead simple to detect at compile time
465
+ // whether an expression is an rvalue.
466
+ ///////////////////////////////////////////////////////////////////////////////
467
+
468
+ # define BOOST_FOREACH_IS_RVALUE(COL) \
469
+ boost::foreach_detail_::is_rvalue_((COL), 0)
470
+
471
+ #elif defined(BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION) \
472
+ && defined(BOOST_NO_RVALUE_REFERENCES)
473
+ ///////////////////////////////////////////////////////////////////////////////
474
+ // Detect at compile-time whether an expression yields an rvalue or
475
+ // an lvalue. This is rather non-standard, but some popular compilers
476
+ // accept it.
477
+ ///////////////////////////////////////////////////////////////////////////////
478
+
479
+ ///////////////////////////////////////////////////////////////////////////////
480
+ // rvalue_probe
481
+ //
482
+ template<typename T>
483
+ struct rvalue_probe
484
+ {
485
+ struct private_type_ {};
486
+ // can't ever return an array by value
487
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
488
+ boost::mpl::or_<boost::is_abstract<T>, boost::is_array<T> >, private_type_, T
489
+ >::type value_type;
490
+ operator value_type() { return *reinterpret_cast<value_type *>(this); } // never called
491
+ operator T &() const { return *reinterpret_cast<T *>(const_cast<rvalue_probe *>(this)); } // never called
492
+ };
493
+
494
+ template<typename T>
495
+ rvalue_probe<T> const make_probe(T const &)
496
+ {
497
+ return rvalue_probe<T>();
498
+ }
499
+
500
+ # define BOOST_FOREACH_IS_RVALUE(COL) \
501
+ boost::foreach_detail_::and_( \
502
+ boost::foreach_detail_::not_(boost::foreach_detail_::is_array_(COL)) \
503
+ , (true ? 0 : boost::foreach_detail_::is_rvalue_( \
504
+ (true ? boost::foreach_detail_::make_probe(COL) : (COL)), 0)))
505
+
506
+ #elif defined(BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION)
507
+ ///////////////////////////////////////////////////////////////////////////////
508
+ // Detect at run-time whether an expression yields an rvalue
509
+ // or an lvalue. This is 100% standard C++, but not all compilers
510
+ // accept it. Also, it causes FOREACH to break when used with non-
511
+ // copyable collection types.
512
+ ///////////////////////////////////////////////////////////////////////////////
513
+
514
+ ///////////////////////////////////////////////////////////////////////////////
515
+ // rvalue_probe
516
+ //
517
+ template<typename T>
518
+ struct rvalue_probe
519
+ {
520
+ rvalue_probe(T &t, bool &b)
521
+ : value(t)
522
+ , is_rvalue(b)
523
+ {
524
+ }
525
+
526
+ struct private_type_ {};
527
+ // can't ever return an array or an abstract type by value
528
+ #ifdef BOOST_NO_IS_ABSTRACT
529
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
530
+ boost::is_array<T>, private_type_, T
531
+ >::type value_type;
532
+ #else
533
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
534
+ boost::mpl::or_<boost::is_abstract<T>, boost::is_array<T> >, private_type_, T
535
+ >::type value_type;
536
+ #endif
537
+
538
+ operator value_type()
539
+ {
540
+ this->is_rvalue = true;
541
+ return this->value;
542
+ }
543
+
544
+ operator T &() const
545
+ {
546
+ return this->value;
547
+ }
548
+
549
+ private:
550
+ T &value;
551
+ bool &is_rvalue;
552
+ };
553
+
554
+ template<typename T>
555
+ rvalue_probe<T> make_probe(T &t, bool &b) { return rvalue_probe<T>(t, b); }
556
+
557
+ template<typename T>
558
+ rvalue_probe<T const> make_probe(T const &t, bool &b) { return rvalue_probe<T const>(t, b); }
559
+
560
+ ///////////////////////////////////////////////////////////////////////////////
561
+ // simple_variant
562
+ // holds either a T or a T const*
563
+ template<typename T>
564
+ struct simple_variant
565
+ {
566
+ simple_variant(T const *t)
567
+ : is_rvalue(false)
568
+ {
569
+ *static_cast<T const **>(this->data.address()) = t;
570
+ }
571
+
572
+ simple_variant(T const &t)
573
+ : is_rvalue(true)
574
+ {
575
+ ::new(this->data.address()) T(t);
576
+ }
577
+
578
+ simple_variant(simple_variant const &that)
579
+ : is_rvalue(that.is_rvalue)
580
+ {
581
+ if(this->is_rvalue)
582
+ ::new(this->data.address()) T(*that.get());
583
+ else
584
+ *static_cast<T const **>(this->data.address()) = that.get();
585
+ }
586
+
587
+ ~simple_variant()
588
+ {
589
+ if(this->is_rvalue)
590
+ this->get()->~T();
591
+ }
592
+
593
+ T const *get() const
594
+ {
595
+ if(this->is_rvalue)
596
+ return static_cast<T const *>(this->data.address());
597
+ else
598
+ return *static_cast<T const * const *>(this->data.address());
599
+ }
600
+
601
+ private:
602
+ enum size_type { size = sizeof(T) > sizeof(T*) ? sizeof(T) : sizeof(T*) };
603
+ simple_variant &operator =(simple_variant const &);
604
+ bool const is_rvalue;
605
+ aligned_storage<size> data;
606
+ };
607
+
608
+ // If the collection is an array or is noncopyable, it must be an lvalue.
609
+ // If the collection is a lightweight proxy, treat it as an rvalue
610
+ // BUGBUG what about a noncopyable proxy?
611
+ template<typename LValue, typename IsProxy>
612
+ inline BOOST_DEDUCED_TYPENAME boost::enable_if<boost::mpl::or_<LValue, IsProxy>, IsProxy>::type *
613
+ should_copy_impl(LValue *, IsProxy *, bool *)
614
+ {
615
+ return 0;
616
+ }
617
+
618
+ // Otherwise, we must determine at runtime whether it's an lvalue or rvalue
619
+ inline bool *
620
+ should_copy_impl(boost::mpl::false_ *, boost::mpl::false_ *, bool *is_rvalue)
621
+ {
622
+ return is_rvalue;
623
+ }
624
+
625
+ #endif
626
+
627
+ ///////////////////////////////////////////////////////////////////////////////
628
+ // contain
629
+ //
630
+ template<typename T>
631
+ inline auto_any<T> contain(T const &t, boost::mpl::true_ *) // rvalue
632
+ {
633
+ return auto_any<T>(t);
634
+ }
635
+
636
+ template<typename T>
637
+ inline auto_any<T *> contain(T &t, boost::mpl::false_ *) // lvalue
638
+ {
639
+ // Cannot seem to get sunpro to handle addressof() with array types.
640
+ #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x570))
641
+ return auto_any<T *>(&t);
642
+ #else
643
+ return auto_any<T *>(boost::addressof(t));
644
+ #endif
645
+ }
646
+
647
+ #ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
648
+ template<typename T>
649
+ inline auto_any<simple_variant<T> >
650
+ contain(T const &t, bool *rvalue)
651
+ {
652
+ return auto_any<simple_variant<T> >(*rvalue ? simple_variant<T>(t) : simple_variant<T>(&t));
653
+ }
654
+ #endif
655
+
656
+ /////////////////////////////////////////////////////////////////////////////
657
+ // begin
658
+ //
659
+ template<typename T, typename C>
660
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
661
+ begin(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
662
+ {
663
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>(
664
+ boost::begin(auto_any_cast<T, C>(col)));
665
+ }
666
+
667
+ template<typename T, typename C>
668
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
669
+ begin(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
670
+ {
671
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
672
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iterator;
673
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>(
674
+ iterator(boost::begin(BOOST_FOREACH_DEREFOF((auto_any_cast<type *, boost::mpl::false_>(col))))));
675
+ }
676
+
677
+ #ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
678
+ template<typename T>
679
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, const_>::type>
680
+ begin(auto_any_t col, type2type<T, const_> *, bool *)
681
+ {
682
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, const_>::type>(
683
+ boost::begin(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
684
+ }
685
+ #endif
686
+
687
+ #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
688
+ template<typename T, typename C>
689
+ inline auto_any<T *>
690
+ begin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
691
+ {
692
+ return auto_any<T *>(auto_any_cast<T *, boost::mpl::false_>(col));
693
+ }
694
+ #endif
695
+
696
+ ///////////////////////////////////////////////////////////////////////////////
697
+ // end
698
+ //
699
+ template<typename T, typename C>
700
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
701
+ end(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
702
+ {
703
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>(
704
+ boost::end(auto_any_cast<T, C>(col)));
705
+ }
706
+
707
+ template<typename T, typename C>
708
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
709
+ end(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
710
+ {
711
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
712
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iterator;
713
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>(
714
+ iterator(boost::end(BOOST_FOREACH_DEREFOF((auto_any_cast<type *, boost::mpl::false_>(col))))));
715
+ }
716
+
717
+ #ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
718
+ template<typename T>
719
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, const_>::type>
720
+ end(auto_any_t col, type2type<T, const_> *, bool *)
721
+ {
722
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, const_>::type>(
723
+ boost::end(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
724
+ }
725
+ #endif
726
+
727
+ #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
728
+ template<typename T, typename C>
729
+ inline auto_any<int>
730
+ end(auto_any_t, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
731
+ {
732
+ return auto_any<int>(0); // not used
733
+ }
734
+ #endif
735
+
736
+ ///////////////////////////////////////////////////////////////////////////////
737
+ // done
738
+ //
739
+ template<typename T, typename C>
740
+ inline bool done(auto_any_t cur, auto_any_t end, type2type<T, C> *)
741
+ {
742
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iter_t;
743
+ return auto_any_cast<iter_t, boost::mpl::false_>(cur) == auto_any_cast<iter_t, boost::mpl::false_>(end);
744
+ }
745
+
746
+ #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
747
+ template<typename T, typename C>
748
+ inline bool done(auto_any_t cur, auto_any_t, type2type<T *, C> *) // null-terminated C-style strings
749
+ {
750
+ return ! *auto_any_cast<T *, boost::mpl::false_>(cur);
751
+ }
752
+ #endif
753
+
754
+ ///////////////////////////////////////////////////////////////////////////////
755
+ // next
756
+ //
757
+ template<typename T, typename C>
758
+ inline void next(auto_any_t cur, type2type<T, C> *)
759
+ {
760
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iter_t;
761
+ ++auto_any_cast<iter_t, boost::mpl::false_>(cur);
762
+ }
763
+
764
+ ///////////////////////////////////////////////////////////////////////////////
765
+ // deref
766
+ //
767
+ template<typename T, typename C>
768
+ inline BOOST_DEDUCED_TYPENAME foreach_reference<T, C>::type
769
+ deref(auto_any_t cur, type2type<T, C> *)
770
+ {
771
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iter_t;
772
+ return *auto_any_cast<iter_t, boost::mpl::false_>(cur);
773
+ }
774
+
775
+ /////////////////////////////////////////////////////////////////////////////
776
+ // rbegin
777
+ //
778
+ template<typename T, typename C>
779
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
780
+ rbegin(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
781
+ {
782
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>(
783
+ boost::rbegin(auto_any_cast<T, C>(col)));
784
+ }
785
+
786
+ template<typename T, typename C>
787
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
788
+ rbegin(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
789
+ {
790
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
791
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iterator;
792
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>(
793
+ iterator(boost::rbegin(BOOST_FOREACH_DEREFOF((auto_any_cast<type *, boost::mpl::false_>(col))))));
794
+ }
795
+
796
+ #ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
797
+ template<typename T>
798
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, const_>::type>
799
+ rbegin(auto_any_t col, type2type<T, const_> *, bool *)
800
+ {
801
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, const_>::type>(
802
+ boost::rbegin(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
803
+ }
804
+ #endif
805
+
806
+ #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
807
+ template<typename T, typename C>
808
+ inline auto_any<reverse_iterator<T *> >
809
+ rbegin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
810
+ {
811
+ T *p = auto_any_cast<T *, boost::mpl::false_>(col);
812
+ while(0 != *p)
813
+ ++p;
814
+ return auto_any<reverse_iterator<T *> >(reverse_iterator<T *>(p));
815
+ }
816
+ #endif
817
+
818
+ ///////////////////////////////////////////////////////////////////////////////
819
+ // rend
820
+ //
821
+ template<typename T, typename C>
822
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
823
+ rend(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
824
+ {
825
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>(
826
+ boost::rend(auto_any_cast<T, C>(col)));
827
+ }
828
+
829
+ template<typename T, typename C>
830
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
831
+ rend(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
832
+ {
833
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
834
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iterator;
835
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>(
836
+ iterator(boost::rend(BOOST_FOREACH_DEREFOF((auto_any_cast<type *, boost::mpl::false_>(col))))));
837
+ }
838
+
839
+ #ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
840
+ template<typename T>
841
+ inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, const_>::type>
842
+ rend(auto_any_t col, type2type<T, const_> *, bool *)
843
+ {
844
+ return auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, const_>::type>(
845
+ boost::rend(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
846
+ }
847
+ #endif
848
+
849
+ #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
850
+ template<typename T, typename C>
851
+ inline auto_any<reverse_iterator<T *> >
852
+ rend(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
853
+ {
854
+ return auto_any<reverse_iterator<T *> >(
855
+ reverse_iterator<T *>(auto_any_cast<T *, boost::mpl::false_>(col)));
856
+ }
857
+ #endif
858
+
859
+ ///////////////////////////////////////////////////////////////////////////////
860
+ // rdone
861
+ //
862
+ template<typename T, typename C>
863
+ inline bool rdone(auto_any_t cur, auto_any_t end, type2type<T, C> *)
864
+ {
865
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iter_t;
866
+ return auto_any_cast<iter_t, boost::mpl::false_>(cur) == auto_any_cast<iter_t, boost::mpl::false_>(end);
867
+ }
868
+
869
+ ///////////////////////////////////////////////////////////////////////////////
870
+ // rnext
871
+ //
872
+ template<typename T, typename C>
873
+ inline void rnext(auto_any_t cur, type2type<T, C> *)
874
+ {
875
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iter_t;
876
+ ++auto_any_cast<iter_t, boost::mpl::false_>(cur);
877
+ }
878
+
879
+ ///////////////////////////////////////////////////////////////////////////////
880
+ // rderef
881
+ //
882
+ template<typename T, typename C>
883
+ inline BOOST_DEDUCED_TYPENAME foreach_reference<T, C>::type
884
+ rderef(auto_any_t cur, type2type<T, C> *)
885
+ {
886
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iter_t;
887
+ return *auto_any_cast<iter_t, boost::mpl::false_>(cur);
888
+ }
889
+
890
+ } // namespace foreach_detail_
891
+ } // namespace boost
892
+
893
+ // Suppress a bogus code analysis warning on vc8+
894
+ #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
895
+ # define BOOST_FOREACH_SUPPRESS_WARNINGS() __pragma(warning(suppress:6001))
896
+ #else
897
+ # define BOOST_FOREACH_SUPPRESS_WARNINGS()
898
+ #endif
899
+
900
+ ///////////////////////////////////////////////////////////////////////////////
901
+ // Define a macro for giving hidden variables a unique name. Not strictly
902
+ // needed, but eliminates some warnings on some compilers.
903
+ #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
904
+ // With some versions of MSVC, use of __LINE__ to create unique identifiers
905
+ // can fail when the Edit-and-Continue debug flag is used.
906
+ # define BOOST_FOREACH_ID(x) x
907
+ #else
908
+ # define BOOST_FOREACH_ID(x) BOOST_PP_CAT(x, __LINE__)
909
+ #endif
910
+
911
+ // A sneaky way to get the type of the collection without evaluating the expression
912
+ #define BOOST_FOREACH_TYPEOF(COL) \
913
+ (true ? 0 : boost::foreach_detail_::encode_type(COL, boost::foreach_detail_::is_const_(COL)))
914
+
915
+ // returns true_* if the type is noncopyable
916
+ #define BOOST_FOREACH_IS_NONCOPYABLE(COL) \
917
+ boost_foreach_is_noncopyable( \
918
+ boost::foreach_detail_::to_ptr(COL) \
919
+ , boost_foreach_argument_dependent_lookup_hack_value)
920
+
921
+ // returns true_* if the type is a lightweight proxy (and is not noncopyable)
922
+ #define BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL) \
923
+ boost::foreach_detail_::and_( \
924
+ boost::foreach_detail_::not_(BOOST_FOREACH_IS_NONCOPYABLE(COL)) \
925
+ , boost_foreach_is_lightweight_proxy( \
926
+ boost::foreach_detail_::to_ptr(COL) \
927
+ , boost_foreach_argument_dependent_lookup_hack_value))
928
+
929
+ #if defined(BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION)
930
+ ///////////////////////////////////////////////////////////////////////////////
931
+ // R-values and const R-values supported here with zero runtime overhead
932
+ ///////////////////////////////////////////////////////////////////////////////
933
+
934
+ // No variable is needed to track the rvalue-ness of the collection expression
935
+ # define BOOST_FOREACH_PREAMBLE() \
936
+ BOOST_FOREACH_SUPPRESS_WARNINGS()
937
+
938
+ // Evaluate the collection expression
939
+ # define BOOST_FOREACH_EVALUATE(COL) \
940
+ (COL)
941
+
942
+ # define BOOST_FOREACH_SHOULD_COPY(COL) \
943
+ (true ? 0 : boost::foreach_detail_::or_( \
944
+ BOOST_FOREACH_IS_RVALUE(COL) \
945
+ , BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL)))
946
+
947
+ #elif defined(BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION)
948
+ ///////////////////////////////////////////////////////////////////////////////
949
+ // R-values and const R-values supported here
950
+ ///////////////////////////////////////////////////////////////////////////////
951
+
952
+ // Declare a variable to track the rvalue-ness of the collection expression
953
+ # define BOOST_FOREACH_PREAMBLE() \
954
+ BOOST_FOREACH_SUPPRESS_WARNINGS() \
955
+ if (bool BOOST_FOREACH_ID(_foreach_is_rvalue) = false) {} else
956
+
957
+ // Evaluate the collection expression, and detect if it is an lvalue or and rvalue
958
+ # define BOOST_FOREACH_EVALUATE(COL) \
959
+ (true ? boost::foreach_detail_::make_probe((COL), BOOST_FOREACH_ID(_foreach_is_rvalue)) : (COL))
960
+
961
+ // The rvalue/lvalue-ness of the collection expression is determined dynamically, unless
962
+ // type type is an array or is noncopyable or is non-const, in which case we know it's an lvalue.
963
+ // If the type happens to be a lightweight proxy, always make a copy.
964
+ # define BOOST_FOREACH_SHOULD_COPY(COL) \
965
+ (boost::foreach_detail_::should_copy_impl( \
966
+ true ? 0 : boost::foreach_detail_::or_( \
967
+ boost::foreach_detail_::is_array_(COL) \
968
+ , BOOST_FOREACH_IS_NONCOPYABLE(COL) \
969
+ , boost::foreach_detail_::not_(boost::foreach_detail_::is_const_(COL))) \
970
+ , true ? 0 : BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL) \
971
+ , &BOOST_FOREACH_ID(_foreach_is_rvalue)))
972
+
973
+ #elif !defined(BOOST_FOREACH_NO_RVALUE_DETECTION)
974
+ ///////////////////////////////////////////////////////////////////////////////
975
+ // R-values supported here, const R-values NOT supported here
976
+ ///////////////////////////////////////////////////////////////////////////////
977
+
978
+ // No variable is needed to track the rvalue-ness of the collection expression
979
+ # define BOOST_FOREACH_PREAMBLE() \
980
+ BOOST_FOREACH_SUPPRESS_WARNINGS()
981
+
982
+ // Evaluate the collection expression
983
+ # define BOOST_FOREACH_EVALUATE(COL) \
984
+ (COL)
985
+
986
+ // Determine whether the collection expression is an lvalue or an rvalue.
987
+ // NOTE: this gets the answer wrong for const rvalues.
988
+ # define BOOST_FOREACH_SHOULD_COPY(COL) \
989
+ (true ? 0 : boost::foreach_detail_::or_( \
990
+ boost::foreach_detail_::is_rvalue_((COL), 0) \
991
+ , BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL)))
992
+
993
+ #else
994
+ ///////////////////////////////////////////////////////////////////////////////
995
+ // R-values NOT supported here
996
+ ///////////////////////////////////////////////////////////////////////////////
997
+
998
+ // No variable is needed to track the rvalue-ness of the collection expression
999
+ # define BOOST_FOREACH_PREAMBLE() \
1000
+ BOOST_FOREACH_SUPPRESS_WARNINGS()
1001
+
1002
+ // Evaluate the collection expression
1003
+ # define BOOST_FOREACH_EVALUATE(COL) \
1004
+ (COL)
1005
+
1006
+ // Can't use rvalues with BOOST_FOREACH (unless they are lightweight proxies)
1007
+ # define BOOST_FOREACH_SHOULD_COPY(COL) \
1008
+ (true ? 0 : BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL))
1009
+
1010
+ #endif
1011
+
1012
+ #define BOOST_FOREACH_CONTAIN(COL) \
1013
+ boost::foreach_detail_::contain( \
1014
+ BOOST_FOREACH_EVALUATE(COL) \
1015
+ , BOOST_FOREACH_SHOULD_COPY(COL))
1016
+
1017
+ #define BOOST_FOREACH_BEGIN(COL) \
1018
+ boost::foreach_detail_::begin( \
1019
+ BOOST_FOREACH_ID(_foreach_col) \
1020
+ , BOOST_FOREACH_TYPEOF(COL) \
1021
+ , BOOST_FOREACH_SHOULD_COPY(COL))
1022
+
1023
+ #define BOOST_FOREACH_END(COL) \
1024
+ boost::foreach_detail_::end( \
1025
+ BOOST_FOREACH_ID(_foreach_col) \
1026
+ , BOOST_FOREACH_TYPEOF(COL) \
1027
+ , BOOST_FOREACH_SHOULD_COPY(COL))
1028
+
1029
+ #define BOOST_FOREACH_DONE(COL) \
1030
+ boost::foreach_detail_::done( \
1031
+ BOOST_FOREACH_ID(_foreach_cur) \
1032
+ , BOOST_FOREACH_ID(_foreach_end) \
1033
+ , BOOST_FOREACH_TYPEOF(COL))
1034
+
1035
+ #define BOOST_FOREACH_NEXT(COL) \
1036
+ boost::foreach_detail_::next( \
1037
+ BOOST_FOREACH_ID(_foreach_cur) \
1038
+ , BOOST_FOREACH_TYPEOF(COL))
1039
+
1040
+ #define BOOST_FOREACH_DEREF(COL) \
1041
+ boost::foreach_detail_::deref( \
1042
+ BOOST_FOREACH_ID(_foreach_cur) \
1043
+ , BOOST_FOREACH_TYPEOF(COL))
1044
+
1045
+ #define BOOST_FOREACH_RBEGIN(COL) \
1046
+ boost::foreach_detail_::rbegin( \
1047
+ BOOST_FOREACH_ID(_foreach_col) \
1048
+ , BOOST_FOREACH_TYPEOF(COL) \
1049
+ , BOOST_FOREACH_SHOULD_COPY(COL))
1050
+
1051
+ #define BOOST_FOREACH_REND(COL) \
1052
+ boost::foreach_detail_::rend( \
1053
+ BOOST_FOREACH_ID(_foreach_col) \
1054
+ , BOOST_FOREACH_TYPEOF(COL) \
1055
+ , BOOST_FOREACH_SHOULD_COPY(COL))
1056
+
1057
+ #define BOOST_FOREACH_RDONE(COL) \
1058
+ boost::foreach_detail_::rdone( \
1059
+ BOOST_FOREACH_ID(_foreach_cur) \
1060
+ , BOOST_FOREACH_ID(_foreach_end) \
1061
+ , BOOST_FOREACH_TYPEOF(COL))
1062
+
1063
+ #define BOOST_FOREACH_RNEXT(COL) \
1064
+ boost::foreach_detail_::rnext( \
1065
+ BOOST_FOREACH_ID(_foreach_cur) \
1066
+ , BOOST_FOREACH_TYPEOF(COL))
1067
+
1068
+ #define BOOST_FOREACH_RDEREF(COL) \
1069
+ boost::foreach_detail_::rderef( \
1070
+ BOOST_FOREACH_ID(_foreach_cur) \
1071
+ , BOOST_FOREACH_TYPEOF(COL))
1072
+
1073
+ ///////////////////////////////////////////////////////////////////////////////
1074
+ // BOOST_FOREACH
1075
+ //
1076
+ // For iterating over collections. Collections can be
1077
+ // arrays, null-terminated strings, or STL containers.
1078
+ // The loop variable can be a value or reference. For
1079
+ // example:
1080
+ //
1081
+ // std::list<int> int_list(/*stuff*/);
1082
+ // BOOST_FOREACH(int &i, int_list)
1083
+ // {
1084
+ // /*
1085
+ // * loop body goes here.
1086
+ // * i is a reference to the int in int_list.
1087
+ // */
1088
+ // }
1089
+ //
1090
+ // Alternately, you can declare the loop variable first,
1091
+ // so you can access it after the loop finishes. Obviously,
1092
+ // if you do it this way, then the loop variable cannot be
1093
+ // a reference.
1094
+ //
1095
+ // int i;
1096
+ // BOOST_FOREACH(i, int_list)
1097
+ // { ... }
1098
+ //
1099
+ #define BOOST_FOREACH(VAR, COL) \
1100
+ BOOST_FOREACH_PREAMBLE() \
1101
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_col) = BOOST_FOREACH_CONTAIN(COL)) {} else \
1102
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_cur) = BOOST_FOREACH_BEGIN(COL)) {} else \
1103
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_end) = BOOST_FOREACH_END(COL)) {} else \
1104
+ for (bool BOOST_FOREACH_ID(_foreach_continue) = true; \
1105
+ BOOST_FOREACH_ID(_foreach_continue) && !BOOST_FOREACH_DONE(COL); \
1106
+ BOOST_FOREACH_ID(_foreach_continue) ? BOOST_FOREACH_NEXT(COL) : (void)0) \
1107
+ if (boost::foreach_detail_::set_false(BOOST_FOREACH_ID(_foreach_continue))) {} else \
1108
+ for (VAR = BOOST_FOREACH_DEREF(COL); !BOOST_FOREACH_ID(_foreach_continue); BOOST_FOREACH_ID(_foreach_continue) = true)
1109
+
1110
+ ///////////////////////////////////////////////////////////////////////////////
1111
+ // BOOST_REVERSE_FOREACH
1112
+ //
1113
+ // For iterating over collections in reverse order. In
1114
+ // all other respects, BOOST_REVERSE_FOREACH is like
1115
+ // BOOST_FOREACH.
1116
+ //
1117
+ #define BOOST_REVERSE_FOREACH(VAR, COL) \
1118
+ BOOST_FOREACH_PREAMBLE() \
1119
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_col) = BOOST_FOREACH_CONTAIN(COL)) {} else \
1120
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_cur) = BOOST_FOREACH_RBEGIN(COL)) {} else \
1121
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_end) = BOOST_FOREACH_REND(COL)) {} else \
1122
+ for (bool BOOST_FOREACH_ID(_foreach_continue) = true; \
1123
+ BOOST_FOREACH_ID(_foreach_continue) && !BOOST_FOREACH_RDONE(COL); \
1124
+ BOOST_FOREACH_ID(_foreach_continue) ? BOOST_FOREACH_RNEXT(COL) : (void)0) \
1125
+ if (boost::foreach_detail_::set_false(BOOST_FOREACH_ID(_foreach_continue))) {} else \
1126
+ for (VAR = BOOST_FOREACH_RDEREF(COL); !BOOST_FOREACH_ID(_foreach_continue); BOOST_FOREACH_ID(_foreach_continue) = true)
1127
+
1128
+ #endif