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
@@ -0,0 +1,282 @@
1
+ // return_type_traits.hpp -- Boost Lambda Library ---------------------------
2
+
3
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // For more information, see www.boost.org
10
+
11
+
12
+ #ifndef BOOST_LAMBDA_RETURN_TYPE_TRAITS_HPP
13
+ #define BOOST_LAMBDA_RETURN_TYPE_TRAITS_HPP
14
+
15
+ #include "boost/mpl/has_xxx.hpp"
16
+
17
+ #include <cstddef> // needed for the ptrdiff_t
18
+
19
+ namespace boost {
20
+ namespace lambda {
21
+
22
+ using ::boost::type_traits::ice_and;
23
+ using ::boost::type_traits::ice_or;
24
+ using ::boost::type_traits::ice_not;
25
+
26
+ // Much of the type deduction code for standard arithmetic types
27
+ // from Gary Powell
28
+
29
+ // different arities:
30
+ template <class Act, class A1> struct return_type_1; // 1-ary actions
31
+ template <class Act, class A1, class A2> struct return_type_2; // 2-ary
32
+ template <class Act, class Args> struct return_type_N; // >3- ary
33
+
34
+ template <class Act, class A1> struct return_type_1_prot;
35
+ template <class Act, class A1, class A2> struct return_type_2_prot; // 2-ary
36
+ template <class Act, class A1> struct return_type_N_prot; // >3-ary
37
+
38
+
39
+ namespace detail {
40
+
41
+ template<class> class return_type_deduction_failure {};
42
+
43
+ // In some cases return type deduction should fail (an invalid lambda
44
+ // expression). Sometimes the lambda expression can be ok, the return type
45
+ // just is not deducible (user defined operators). Then return type deduction
46
+ // should never be entered at all, and the use of ret<> does this.
47
+ // However, for nullary lambda functors, return type deduction is always
48
+ // entered, and there seems to be no way around this.
49
+
50
+ // (the return type is part of the prototype of the non-template
51
+ // operator()(). The prototype is instantiated, even though the body
52
+ // is not.)
53
+
54
+ // So, in the case the return type deduction should fail, it should not
55
+ // fail directly, but rather result in a valid but wrong return type,
56
+ // causing a compile time error only if the function is really called.
57
+
58
+
59
+
60
+ } // end detail
61
+
62
+
63
+
64
+ // return_type_X_prot classes --------------------------------------------
65
+ // These classes are the first layer that gets instantiated from the
66
+ // lambda_functor_base sig templates. It will check whether
67
+ // the action is protectable and one of arguments is "protected" or its
68
+ // evaluation will otherwise result in another lambda functor.
69
+ // If this is a case, the result type will be another lambda functor.
70
+
71
+ // The arguments are always non-reference types, except for comma action
72
+ // where the right argument can be a reference too. This is because it
73
+ // matters (in the builtin case) whether the argument is an lvalue or
74
+ // rvalue: int i; i, 1 -> rvalue; 1, i -> lvalue
75
+
76
+ template <class Act, class A> struct return_type_1_prot {
77
+ public:
78
+ typedef typename
79
+ detail::IF<
80
+ // is_protectable<Act>::value && is_lambda_functor<A>::value,
81
+ ice_and<is_protectable<Act>::value, is_lambda_functor<A>::value>::value,
82
+ lambda_functor<
83
+ lambda_functor_base<
84
+ Act,
85
+ tuple<typename detail::remove_reference_and_cv<A>::type>
86
+ >
87
+ >,
88
+ typename return_type_1<Act, A>::type
89
+ >::RET type;
90
+ };
91
+
92
+ // take care of the unavoidable instantiation for nullary case
93
+ template<class Act> struct return_type_1_prot<Act, null_type> {
94
+ typedef null_type type;
95
+ };
96
+
97
+ // Unary actions (result from unary operators)
98
+ // do not have a default return type.
99
+ template<class Act, class A> struct return_type_1 {
100
+ typedef typename
101
+ detail::return_type_deduction_failure<return_type_1> type;
102
+ };
103
+
104
+
105
+ namespace detail {
106
+
107
+ template <class T>
108
+ class protect_conversion {
109
+ typedef typename boost::remove_reference<T>::type non_ref_T;
110
+ public:
111
+
112
+ // add const to rvalues, so that all rvalues are stored as const in
113
+ // the args tuple
114
+ typedef typename detail::IF_type<
115
+ // boost::is_reference<T>::value && !boost::is_const<non_ref_T>::value,
116
+ ice_and<boost::is_reference<T>::value,
117
+ ice_not<boost::is_const<non_ref_T>::value>::value>::value,
118
+ detail::identity_mapping<T>,
119
+ const_copy_argument<non_ref_T> // handles funtion and array
120
+ >::type type; // types correctly
121
+ };
122
+
123
+ } // end detail
124
+
125
+ template <class Act, class A, class B> struct return_type_2_prot {
126
+
127
+ // experimental feature
128
+ // We may have a lambda functor as a result type of a subexpression
129
+ // (if protect) has been used.
130
+ // Thus, if one of the parameter types is a lambda functor, the result
131
+ // is a lambda functor as well.
132
+ // We need to make a conservative choise here.
133
+ // The resulting lambda functor stores all const reference arguments as
134
+ // const copies. References to non-const are stored as such.
135
+ // So if the source of the argument is a const open argument, a bound
136
+ // argument stored as a const reference, or a function returning a
137
+ // const reference, that information is lost. There is no way of
138
+ // telling apart 'real const references' from just 'LL internal
139
+ // const references' (or it would be really hard)
140
+
141
+ // The return type is a subclass of lambda_functor, which has a converting
142
+ // copy constructor. It can copy any lambda functor, that has the same
143
+ // action type and code, and a copy compatible argument tuple.
144
+
145
+
146
+ typedef typename boost::remove_reference<A>::type non_ref_A;
147
+ typedef typename boost::remove_reference<B>::type non_ref_B;
148
+
149
+ typedef typename
150
+ detail::IF<
151
+ // is_protectable<Act>::value &&
152
+ // (is_lambda_functor<A>::value || is_lambda_functor<B>::value),
153
+ ice_and<is_protectable<Act>::value,
154
+ ice_or<is_lambda_functor<A>::value,
155
+ is_lambda_functor<B>::value>::value>::value,
156
+ lambda_functor<
157
+ lambda_functor_base<
158
+ Act,
159
+ tuple<typename detail::protect_conversion<A>::type,
160
+ typename detail::protect_conversion<B>::type>
161
+ >
162
+ >,
163
+ typename return_type_2<Act, non_ref_A, non_ref_B>::type
164
+ >::RET type;
165
+ };
166
+
167
+ // take care of the unavoidable instantiation for nullary case
168
+ template<class Act> struct return_type_2_prot<Act, null_type, null_type> {
169
+ typedef null_type type;
170
+ };
171
+ // take care of the unavoidable instantiation for nullary case
172
+ template<class Act, class Other> struct return_type_2_prot<Act, Other, null_type> {
173
+ typedef null_type type;
174
+ };
175
+ // take care of the unavoidable instantiation for nullary case
176
+ template<class Act, class Other> struct return_type_2_prot<Act, null_type, Other> {
177
+ typedef null_type type;
178
+ };
179
+
180
+ // comma is a special case, as the user defined operator can return
181
+ // an lvalue (reference) too, hence it must be handled at this level.
182
+ template<class A, class B>
183
+ struct return_type_2_comma
184
+ {
185
+ typedef typename boost::remove_reference<A>::type non_ref_A;
186
+ typedef typename boost::remove_reference<B>::type non_ref_B;
187
+
188
+ typedef typename
189
+ detail::IF<
190
+ // is_protectable<other_action<comma_action> >::value && // it is protectable
191
+ // (is_lambda_functor<A>::value || is_lambda_functor<B>::value),
192
+ ice_and<is_protectable<other_action<comma_action> >::value, // it is protectable
193
+ ice_or<is_lambda_functor<A>::value,
194
+ is_lambda_functor<B>::value>::value>::value,
195
+ lambda_functor<
196
+ lambda_functor_base<
197
+ other_action<comma_action>,
198
+ tuple<typename detail::protect_conversion<A>::type,
199
+ typename detail::protect_conversion<B>::type>
200
+ >
201
+ >,
202
+ typename
203
+ return_type_2<other_action<comma_action>, non_ref_A, non_ref_B>::type
204
+ >::RET type1;
205
+
206
+ // if no user defined return_type_2 (or plain_return_type_2) specialization
207
+ // matches, then return the righthand argument
208
+ typedef typename
209
+ detail::IF<
210
+ boost::is_same<type1, detail::unspecified>::value,
211
+ B,
212
+ type1
213
+ >::RET type;
214
+
215
+ };
216
+
217
+
218
+ // currently there are no protectable actions with > 2 args
219
+
220
+ template<class Act, class Args> struct return_type_N_prot {
221
+ typedef typename return_type_N<Act, Args>::type type;
222
+ };
223
+
224
+ // take care of the unavoidable instantiation for nullary case
225
+ template<class Act> struct return_type_N_prot<Act, null_type> {
226
+ typedef null_type type;
227
+ };
228
+
229
+ // handle different kind of actions ------------------------
230
+
231
+ // use the return type given in the bind invocation as bind<Ret>(...)
232
+ template<int I, class Args, class Ret>
233
+ struct return_type_N<function_action<I, Ret>, Args> {
234
+ typedef Ret type;
235
+ };
236
+
237
+ // ::result_type support
238
+
239
+ namespace detail
240
+ {
241
+
242
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type)
243
+
244
+ template<class F> struct get_result_type
245
+ {
246
+ typedef typename F::result_type type;
247
+ };
248
+
249
+ template<class F, class A> struct get_sig
250
+ {
251
+ typedef typename function_adaptor<F>::template sig<A>::type type;
252
+ };
253
+
254
+ } // namespace detail
255
+
256
+ // Ret is detail::unspecified, so try to deduce return type
257
+ template<int I, class Args>
258
+ struct return_type_N<function_action<I, detail::unspecified>, Args > {
259
+
260
+ // in the case of function action, the first element in Args is
261
+ // some type of function
262
+ typedef typename Args::head_type Func;
263
+ typedef typename detail::remove_reference_and_cv<Func>::type plain_Func;
264
+
265
+ public:
266
+ // pass the function to function_adaptor, and get the return type from
267
+ // that
268
+ typedef typename detail::IF<
269
+ detail::has_result_type<plain_Func>::value,
270
+ detail::get_result_type<plain_Func>,
271
+ detail::get_sig<plain_Func, Args>
272
+ >::RET::type type;
273
+ };
274
+
275
+
276
+ } // namespace lambda
277
+ } // namespace boost
278
+
279
+ #endif
280
+
281
+
282
+
@@ -0,0 +1,74 @@
1
+ // -- select_functions.hpp -- Boost Lambda Library --------------------------
2
+
3
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // For more information, see http://www.boost.org
10
+
11
+
12
+ #ifndef BOOST_LAMBDA_SELECT_FUNCTIONS_HPP
13
+ #define BOOST_LAMBDA_SELECT_FUNCTIONS_HPP
14
+
15
+ namespace boost {
16
+ namespace lambda {
17
+ namespace detail {
18
+
19
+
20
+ // select functions -------------------------------
21
+ template<class Any, CALL_TEMPLATE_ARGS>
22
+ inline Any& select(Any& any, CALL_FORMAL_ARGS) { CALL_USE_ARGS; return any; }
23
+
24
+
25
+ template<class Arg, CALL_TEMPLATE_ARGS>
26
+ inline typename Arg::template sig<tuple<CALL_REFERENCE_TYPES> >::type
27
+ select ( const lambda_functor<Arg>& op, CALL_FORMAL_ARGS ) {
28
+ return op.template call<
29
+ typename Arg::template sig<tuple<CALL_REFERENCE_TYPES> >::type
30
+ >(CALL_ACTUAL_ARGS);
31
+ }
32
+ template<class Arg, CALL_TEMPLATE_ARGS>
33
+ inline typename Arg::template sig<tuple<CALL_REFERENCE_TYPES> >::type
34
+ select ( lambda_functor<Arg>& op, CALL_FORMAL_ARGS) {
35
+ return op.template call<
36
+ typename Arg::template sig<tuple<CALL_REFERENCE_TYPES> >::type
37
+ >(CALL_ACTUAL_ARGS);
38
+ }
39
+
40
+ // ------------------------------------------------------------------------
41
+ // select functions where the return type is explicitly given
42
+ // Note: on many functions, this return type is just discarded.
43
+ // The select functions are inside a class template, and the return type
44
+ // is a class template argument.
45
+ // The first implementation used function templates with an explicitly
46
+ // specified template parameter.
47
+ // However, this resulted in ambiguous calls (at least with gcc 2.95.2
48
+ // and edg 2.44). Not sure whether the compilers were right or wrong.
49
+
50
+ template<class RET> struct r_select {
51
+
52
+ // Any == RET
53
+ template<class Any, CALL_TEMPLATE_ARGS>
54
+ static
55
+ inline RET go (Any& any, CALL_FORMAL_ARGS) { CALL_USE_ARGS; return any; }
56
+
57
+
58
+ template<class Arg, CALL_TEMPLATE_ARGS>
59
+ static
60
+ inline RET go (const lambda_functor<Arg>& op, CALL_FORMAL_ARGS ) {
61
+ return op.template call<RET>(CALL_ACTUAL_ARGS);
62
+ }
63
+ template<class Arg, CALL_TEMPLATE_ARGS>
64
+ static
65
+ inline RET go (lambda_functor<Arg>& op, CALL_FORMAL_ARGS ) {
66
+ return op.template call<RET>(CALL_ACTUAL_ARGS);
67
+ }
68
+ };
69
+
70
+ } // namespace detail
71
+ } // namespace lambda
72
+ } // namespace boost
73
+
74
+ #endif
@@ -0,0 +1,34 @@
1
+ // -- lambda.hpp -- Boost Lambda Library -----------------------------------
2
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
3
+ //
4
+ // Distributed under the Boost Software License, Version 1.0. (See
5
+ // accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+ //
8
+ // For more information, see http://lambda.cs.utu.fi
9
+
10
+ #ifndef BOOST_LAMBDA_LAMBDA_HPP
11
+ #define BOOST_LAMBDA_LAMBDA_HPP
12
+
13
+
14
+ #include "boost/lambda/core.hpp"
15
+
16
+ #ifdef BOOST_NO_FDECL_TEMPLATES_AS_TEMPLATE_TEMPLATE_PARAMS
17
+ #include <istream>
18
+ #include <ostream>
19
+ #endif
20
+
21
+ #include "boost/lambda/detail/operator_actions.hpp"
22
+ #include "boost/lambda/detail/operator_lambda_func_base.hpp"
23
+ #include "boost/lambda/detail/operator_return_type_traits.hpp"
24
+
25
+
26
+ #include "boost/lambda/detail/operators.hpp"
27
+
28
+ #ifndef BOOST_LAMBDA_FAILS_IN_TEMPLATE_KEYWORD_AFTER_SCOPE_OPER
29
+ // sorry, member ptr does not work with gcc2.95
30
+ #include "boost/lambda/detail/member_ptr.hpp"
31
+ #endif
32
+
33
+
34
+ #endif
@@ -18,7 +18,7 @@
18
18
  // with additional fixes and suggestions from Gennaro Prota,
19
19
  // Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
20
20
  // Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
21
- // Cheng Yang, Matthew Bradbury, David W. Birdsall and other Boosters
21
+ // Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
22
22
  // when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2012
23
23
 
24
24
  #include <boost/config.hpp>
@@ -26,65 +26,33 @@
26
26
  #define BOOST_LCAST_NO_WCHAR_T
27
27
  #endif
28
28
 
29
- #if (defined(__MINGW32__) || defined(__MINGW64__)) && (__GNUC__ == 4) \
30
- && ((__GNUC_MINOR__ == 4) || (__GNUC_MINOR__ == 5)) && defined(__STRICT_ANSI__) \
31
- && !defined(BOOST_LCAST_NO_WCHAR_T)
32
-
33
- // workaround for a mingw bug
34
- // http://sourceforge.net/tracker/index.php?func=detail&aid=2373234&group_id=2435&atid=102435
35
- #include <_mingw.h>
36
- #if (__GNUC_MINOR__ == 4)
37
- extern "C" {
38
- _CRTIMP int __cdecl swprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...);
39
- _CRTIMP int __cdecl vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...);
40
- }
41
- #endif
42
- #if (__GNUC_MINOR__ == 5)
43
- extern "C" {
44
- _CRTIMP int __cdecl swprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...);
45
- _CRTIMP int __cdecl vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , va_list);
46
- }
47
- #endif
48
- #endif
49
-
50
29
  #include <climits>
51
30
  #include <cstddef>
52
- #include <istream>
53
31
  #include <string>
54
32
  #include <cstring>
55
33
  #include <cstdio>
56
34
  #include <typeinfo>
57
35
  #include <exception>
58
- #include <cmath>
59
36
  #include <boost/limits.hpp>
60
37
  #include <boost/mpl/if.hpp>
61
38
  #include <boost/throw_exception.hpp>
62
- #include <boost/type_traits/is_pointer.hpp>
63
- #include <boost/type_traits/is_integral.hpp>
64
- #include <boost/type_traits/is_arithmetic.hpp>
65
- #include <boost/type_traits/remove_pointer.hpp>
66
- #include <boost/numeric/conversion/cast.hpp>
67
39
  #include <boost/type_traits/ice.hpp>
68
- #include <boost/type_traits/make_unsigned.hpp>
69
- #include <boost/type_traits/is_signed.hpp>
70
- #include <boost/math/special_functions/sign.hpp>
71
- #include <boost/math/special_functions/fpclassify.hpp>
40
+ #include <boost/type_traits/is_pointer.hpp>
72
41
  #include <boost/static_assert.hpp>
73
42
  #include <boost/detail/lcast_precision.hpp>
74
43
  #include <boost/detail/workaround.hpp>
75
- #if !defined(__SUNPRO_CC)
76
- #include <boost/container/container_fwd.hpp>
77
- #endif // !defined(__SUNPRO_CC)
78
- #ifndef BOOST_NO_CWCHAR
79
- # include <cwchar>
80
- #endif
44
+
81
45
 
82
46
  #ifndef BOOST_NO_STD_LOCALE
83
47
  # include <locale>
84
48
  #else
85
49
  # ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
86
- # warning "Unable to use <locale> header. boost::lexical_cast will use the 'C' locale."
87
- # define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
50
+ // Getting error at this point means, that your STL library is old/lame/misconfigured.
51
+ // If nothing can be done with STL library, define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE,
52
+ // but beware: lexical_cast will understand only 'C' locale delimeters and thousands
53
+ // separators.
54
+ # error "Unable to use <locale> header. Define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE to force "
55
+ # error "boost::lexical_cast to use only 'C' locale during conversions."
88
56
  # endif
89
57
  #endif
90
58
 
@@ -104,7 +72,7 @@ _CRTIMP int __cdecl vswprintf(wchar_t * __restrict__ , const wchar_t * __restric
104
72
  namespace boost
105
73
  {
106
74
  // exception used to indicate runtime lexical_cast failure
107
- class bad_lexical_cast :
75
+ class BOOST_SYMBOL_VISIBLE bad_lexical_cast :
108
76
  // workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0
109
77
  #if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
110
78
  public std::exception
@@ -119,7 +87,7 @@ namespace boost
119
87
 
120
88
  {
121
89
  public:
122
- bad_lexical_cast() :
90
+ bad_lexical_cast() BOOST_NOEXCEPT :
123
91
  #ifndef BOOST_NO_TYPEID
124
92
  source(&typeid(void)), target(&typeid(void))
125
93
  #else
@@ -130,7 +98,7 @@ namespace boost
130
98
 
131
99
  bad_lexical_cast(
132
100
  const std::type_info &source_type_arg,
133
- const std::type_info &target_type_arg) :
101
+ const std::type_info &target_type_arg) BOOST_NOEXCEPT :
134
102
  source(&source_type_arg), target(&target_type_arg)
135
103
  {
136
104
  }
@@ -144,131 +112,222 @@ namespace boost
144
112
  return *target;
145
113
  }
146
114
 
115
+ #ifndef BOOST_NO_NOEXCEPT
116
+ virtual const char *what() const noexcept
117
+ #else
147
118
  virtual const char *what() const throw()
119
+ #endif
148
120
  {
149
121
  return "bad lexical cast: "
150
122
  "source type value could not be interpreted as target";
151
123
  }
124
+
125
+ #ifndef BOOST_NO_NOEXCEPT
126
+ virtual ~bad_lexical_cast() BOOST_NOEXCEPT
127
+ #else
152
128
  virtual ~bad_lexical_cast() throw()
153
- {
154
- }
129
+ #endif
130
+ {}
155
131
  private:
156
132
  const std::type_info *source;
157
133
  const std::type_info *target;
158
134
  };
159
135
 
160
- namespace detail // selectors for choosing stream character type
136
+ namespace detail // widest_char
161
137
  {
162
- template<typename Type>
163
- struct stream_char
164
- {
165
- typedef char type;
166
- };
138
+ template <typename TargetChar, typename SourceChar>
139
+ struct widest_char
140
+ {
141
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
142
+ (sizeof(TargetChar) > sizeof(SourceChar))
143
+ , TargetChar
144
+ , SourceChar >::type type;
145
+ };
146
+ }
147
+ } // namespace boost
167
148
 
168
- #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
169
- template<class CharT, class Traits, class Alloc>
170
- struct stream_char< std::basic_string<CharT,Traits,Alloc> >
171
- {
172
- typedef CharT type;
173
- };
149
+ #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__SUNPRO_CC) && !defined(__PGIC__)
174
150
 
175
- #if !defined(__SUNPRO_CC)
176
- template<class CharT, class Traits, class Alloc>
177
- struct stream_char< ::boost::container::basic_string<CharT,Traits,Alloc> >
178
- {
179
- typedef CharT type;
180
- };
181
- #endif // !defined(__SUNPRO_CC)
151
+ #include <cmath>
152
+ #include <istream>
153
+
154
+ #if !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
155
+ #include <array>
182
156
  #endif
183
157
 
184
- #ifndef BOOST_LCAST_NO_WCHAR_T
185
- #ifndef BOOST_NO_INTRINSIC_WCHAR_T
186
- template<>
187
- struct stream_char<wchar_t>
188
- {
189
- typedef wchar_t type;
190
- };
158
+ #include <boost/array.hpp>
159
+ #include <boost/numeric/conversion/cast.hpp>
160
+ #include <boost/type_traits/make_unsigned.hpp>
161
+ #include <boost/type_traits/is_signed.hpp>
162
+ #include <boost/type_traits/is_integral.hpp>
163
+ #include <boost/type_traits/is_arithmetic.hpp>
164
+ #include <boost/type_traits/remove_pointer.hpp>
165
+ #include <boost/math/special_functions/sign.hpp>
166
+ #include <boost/math/special_functions/fpclassify.hpp>
167
+ #include <boost/range/iterator_range_core.hpp>
168
+ #include <boost/container/container_fwd.hpp>
169
+ #ifndef BOOST_NO_CWCHAR
170
+ # include <cwchar>
191
171
  #endif
192
172
 
193
- template<>
194
- struct stream_char<wchar_t *>
173
+ namespace boost {
174
+ namespace detail // widest_char<...> (continuation)
195
175
  {
196
- typedef wchar_t type;
197
- };
176
+ struct not_a_character_type{};
198
177
 
199
- template<>
200
- struct stream_char<const wchar_t *>
201
- {
202
- typedef wchar_t type;
203
- };
178
+ template <typename CharT>
179
+ struct widest_char<not_a_character_type, CharT >
180
+ {
181
+ typedef CharT type;
182
+ };
183
+
184
+ template <typename CharT>
185
+ struct widest_char< CharT, not_a_character_type >
186
+ {
187
+ typedef CharT type;
188
+ };
189
+
190
+ template <>
191
+ struct widest_char< not_a_character_type, not_a_character_type >
192
+ {
193
+ typedef char type;
194
+ };
195
+ }
204
196
 
205
- #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
206
- template<>
207
- struct stream_char<std::wstring>
197
+ namespace detail // is_char_or_wchar<...> and stream_char<...> templates
208
198
  {
209
- typedef wchar_t type;
210
- };
211
- #endif
212
- #endif
199
+ // returns true, if T is one of the character types
200
+ template <typename T>
201
+ struct is_char_or_wchar
202
+ {
203
+ typedef ::boost::type_traits::ice_or<
204
+ ::boost::is_same< T, char >::value,
205
+ #ifndef BOOST_LCAST_NO_WCHAR_T
206
+ ::boost::is_same< T, wchar_t >::value,
207
+ #endif
208
+ #ifndef BOOST_NO_CHAR16_T
209
+ ::boost::is_same< T, char16_t >::value,
210
+ #endif
211
+ #ifndef BOOST_NO_CHAR32_T
212
+ ::boost::is_same< T, char32_t >::value,
213
+ #endif
214
+ ::boost::is_same< T, unsigned char >::value,
215
+ ::boost::is_same< T, signed char >::value
216
+ > result_type;
217
+
218
+ BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
219
+ };
213
220
 
221
+ // selectors for choosing stream character type
222
+ // returns one of char, wchar_t, char16_t, char32_t or not_a_character_type types
223
+ template <typename Type>
224
+ struct stream_char
225
+ {
226
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
227
+ is_char_or_wchar<Type >::value,
228
+ Type,
229
+ boost::detail::not_a_character_type
230
+ >::type type;
231
+ };
214
232
 
215
- #ifndef BOOST_NO_CHAR16_T
233
+ template <>
234
+ struct stream_char<unsigned char>
235
+ {
236
+ typedef char type;
237
+ };
216
238
 
217
- template<>
218
- struct stream_char<char16_t>
219
- {
220
- typedef char16_t type;
221
- };
239
+ template <>
240
+ struct stream_char<signed char>
241
+ {
242
+ typedef char type;
243
+ };
222
244
 
223
- template<>
224
- struct stream_char<char16_t *>
225
- {
226
- typedef char16_t type;
227
- };
245
+ template <typename CharT>
246
+ struct stream_char<CharT*>
247
+ {
248
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT>::type type;
249
+ };
228
250
 
229
- template<>
230
- struct stream_char<const char16_t *>
231
- {
232
- typedef char16_t type;
233
- };
251
+ template <typename CharT>
252
+ struct stream_char<const CharT*>
253
+ {
254
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT>::type type;
255
+ };
234
256
 
235
- #endif
257
+ template <typename CharT>
258
+ struct stream_char<iterator_range<CharT*> >
259
+ {
260
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT*>::type type;
261
+ };
262
+
263
+ template <typename CharT>
264
+ struct stream_char<iterator_range<const CharT*> >
265
+ {
266
+ typedef BOOST_DEDUCED_TYPENAME stream_char<const CharT*>::type type;
267
+ };
236
268
 
237
- #ifndef BOOST_NO_CHAR32_T
269
+ template <class CharT, class Traits, class Alloc>
270
+ struct stream_char< std::basic_string<CharT, Traits, Alloc> >
271
+ {
272
+ typedef CharT type;
273
+ };
238
274
 
239
- template<>
240
- struct stream_char<char32_t>
241
- {
242
- typedef char32_t type;
243
- };
275
+ template <class CharT, class Traits, class Alloc>
276
+ struct stream_char< ::boost::container::basic_string<CharT, Traits, Alloc> >
277
+ {
278
+ typedef CharT type;
279
+ };
244
280
 
245
- template<>
246
- struct stream_char<char32_t *>
247
- {
248
- typedef char32_t type;
249
- };
281
+ template<typename CharT, std::size_t N>
282
+ struct stream_char<boost::array<CharT, N> >
283
+ {
284
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT>::type type;
285
+ };
250
286
 
251
- template<>
252
- struct stream_char<const char32_t *>
253
- {
254
- typedef char32_t type;
255
- };
287
+ template<typename CharT, std::size_t N>
288
+ struct stream_char<boost::array<const CharT, N> >
289
+ {
290
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT>::type type;
291
+ };
256
292
 
257
- #endif
293
+ #if !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
294
+ template <typename CharT, std::size_t N>
295
+ struct stream_char<std::array<CharT, N> >
296
+ {
297
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT>::type type;
298
+ };
258
299
 
259
- template<typename TargetChar, typename SourceChar>
260
- struct widest_char
300
+ template <typename CharT, std::size_t N>
301
+ struct stream_char<std::array<const CharT, N> >
261
302
  {
262
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
263
- (sizeof(TargetChar) > sizeof(SourceChar))
264
- , TargetChar
265
- , SourceChar >::type type;
303
+ typedef BOOST_DEDUCED_TYPENAME stream_char<CharT>::type type;
266
304
  };
305
+ #endif // !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
306
+
307
+ #if !defined(BOOST_LCAST_NO_WCHAR_T) && defined(BOOST_NO_INTRINSIC_WCHAR_T)
308
+ template<>
309
+ struct stream_char<wchar_t>
310
+ {
311
+ typedef boost::detail::not_a_character_type type;
312
+ };
313
+
314
+ template<>
315
+ struct stream_char<wchar_t*>
316
+ {
317
+ typedef wchar_t type;
318
+ };
319
+
320
+ template<>
321
+ struct stream_char<const wchar_t*>
322
+ {
323
+ typedef wchar_t type;
324
+ };
325
+ #endif
267
326
  }
268
327
 
269
328
  namespace detail // deduce_char_traits template
270
329
  {
271
- #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
330
+
272
331
  template<class CharT, class Target, class Source>
273
332
  struct deduce_char_traits
274
333
  {
@@ -293,7 +352,6 @@ namespace boost
293
352
  typedef Traits type;
294
353
  };
295
354
 
296
- #if !defined(__SUNPRO_CC)
297
355
  template<class CharT, class Traits, class Alloc, class Source>
298
356
  struct deduce_char_traits< CharT
299
357
  , ::boost::container::basic_string<CharT,Traits,Alloc>
@@ -333,7 +391,7 @@ namespace boost
333
391
  template<class CharT, class Traits, class Alloc1, class Alloc2>
334
392
  struct deduce_char_traits< CharT
335
393
  , ::boost::container::basic_string<CharT,Traits,Alloc1>
336
- , std::basic_string<CharT,Traits,Alloc2>
394
+ , ::std::basic_string<CharT,Traits,Alloc2>
337
395
  >
338
396
  {
339
397
  typedef Traits type;
@@ -341,14 +399,12 @@ namespace boost
341
399
 
342
400
  template<class CharT, class Traits, class Alloc1, class Alloc2>
343
401
  struct deduce_char_traits< CharT
344
- , std::basic_string<CharT,Traits,Alloc1>
402
+ , ::std::basic_string<CharT,Traits,Alloc1>
345
403
  , ::boost::container::basic_string<CharT,Traits,Alloc2>
346
404
  >
347
405
  {
348
406
  typedef Traits type;
349
407
  };
350
- #endif // !defined(__SUNPRO_CC)
351
- #endif
352
408
  }
353
409
 
354
410
  namespace detail // lcast_src_length
@@ -391,7 +447,7 @@ namespace boost
391
447
  BOOST_STATIC_ASSERT(sizeof(Source) * CHAR_BIT <= 256);
392
448
  #endif
393
449
  };
394
- // TODO: FIX for char16_t, char32_t, we can ignore CharT
450
+
395
451
  #define BOOST_LCAST_DEF(T) \
396
452
  template<> struct lcast_src_length<T> \
397
453
  : lcast_src_length_integral<T> \
@@ -488,7 +544,7 @@ namespace boost
488
544
  };
489
545
  #endif
490
546
 
491
- #ifndef BOOST_NO_CHAR16_T
547
+ #if !defined(BOOST_NO_CHAR16_T) && !defined(BOOST_NO_UNICODE_LITERALS)
492
548
  template<>
493
549
  struct lcast_char_constants<char16_t>
494
550
  {
@@ -501,7 +557,7 @@ namespace boost
501
557
  };
502
558
  #endif
503
559
 
504
- #ifndef BOOST_NO_CHAR32_T
560
+ #if !defined(BOOST_NO_CHAR32_T) && !defined(BOOST_NO_UNICODE_LITERALS)
505
561
  template<>
506
562
  struct lcast_char_constants<char32_t>
507
563
  {
@@ -526,10 +582,10 @@ namespace boost
526
582
  #endif
527
583
  template<class T>
528
584
  inline
529
- BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value)
585
+ BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value) BOOST_NOEXCEPT
530
586
  {
531
587
  typedef BOOST_DEDUCED_TYPENAME make_unsigned<T>::type result_type;
532
- result_type uvalue = static_cast<result_type>(value);
588
+ const result_type uvalue = static_cast<result_type>(value);
533
589
  return value < 0 ? -uvalue : uvalue;
534
590
  }
535
591
  #if (defined _MSC_VER)
@@ -732,12 +788,21 @@ namespace boost
732
788
 
733
789
  namespace detail
734
790
  {
791
+ template <class CharT>
792
+ bool lc_iequal(const CharT* val, const CharT* lcase, const CharT* ucase, unsigned int len) BOOST_NOEXCEPT {
793
+ for( unsigned int i=0; i < len; ++i ) {
794
+ if ( val[i] != lcase[i] && val[i] != ucase[i] ) return false;
795
+ }
796
+
797
+ return true;
798
+ }
799
+
735
800
  /* Returns true and sets the correct value if found NaN or Inf. */
736
801
  template <class CharT, class T>
737
802
  inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
738
803
  , const CharT* lc_NAN, const CharT* lc_nan
739
804
  , const CharT* lc_INFINITY, const CharT* lc_infinity
740
- , const CharT opening_brace, const CharT closing_brace)
805
+ , const CharT opening_brace, const CharT closing_brace) BOOST_NOEXCEPT
741
806
  {
742
807
  using namespace std;
743
808
  if (begin == end) return false;
@@ -755,7 +820,7 @@ namespace boost
755
820
  else if( *begin == plus ) ++begin;
756
821
 
757
822
  if( end-begin < 3 ) return false;
758
- if( !memcmp(begin, lc_nan, 3*sizeof(CharT)) || !memcmp(begin, lc_NAN, 3*sizeof(CharT)) )
823
+ if( lc_iequal(begin, lc_nan, lc_NAN, 3) )
759
824
  {
760
825
  begin += 3;
761
826
  if (end != begin) /* It is 'nan(...)' or some bad input*/
@@ -772,13 +837,13 @@ namespace boost
772
837
  if (( /* 'INF' or 'inf' */
773
838
  end-begin==3
774
839
  &&
775
- (!memcmp(begin, lc_infinity, 3*sizeof(CharT)) || !memcmp(begin, lc_INFINITY, 3*sizeof(CharT)))
840
+ lc_iequal(begin, lc_infinity, lc_INFINITY, 3)
776
841
  )
777
842
  ||
778
843
  ( /* 'INFINITY' or 'infinity' */
779
844
  end-begin==inifinity_size
780
845
  &&
781
- (!memcmp(begin, lc_infinity, inifinity_size)|| !memcmp(begin, lc_INFINITY, inifinity_size))
846
+ lc_iequal(begin, lc_infinity, lc_INFINITY, inifinity_size)
782
847
  )
783
848
  )
784
849
  {
@@ -790,112 +855,105 @@ namespace boost
790
855
  return false;
791
856
  }
792
857
 
858
+ template <class CharT, class T>
859
+ bool put_inf_nan_impl(CharT* begin, CharT*& end, const T& value
860
+ , const CharT* lc_nan
861
+ , const CharT* lc_infinity) BOOST_NOEXCEPT
862
+ {
863
+ using namespace std;
864
+ const CharT minus = lcast_char_constants<CharT>::minus;
865
+ if ( (boost::math::isnan)(value) )
866
+ {
867
+ if ( (boost::math::signbit)(value) )
868
+ {
869
+ *begin = minus;
870
+ ++ begin;
871
+ }
872
+
873
+ memcpy(begin, lc_nan, 3 * sizeof(CharT));
874
+ end = begin + 3;
875
+ return true;
876
+ } else if ( (boost::math::isinf)(value) )
877
+ {
878
+ if ( (boost::math::signbit)(value) )
879
+ {
880
+ *begin = minus;
881
+ ++ begin;
882
+ }
883
+
884
+ memcpy(begin, lc_infinity, 3 * sizeof(CharT));
885
+ end = begin + 3;
886
+ return true;
887
+ }
888
+
889
+ return false;
890
+ }
891
+
892
+
793
893
  #ifndef BOOST_LCAST_NO_WCHAR_T
794
894
  template <class T>
795
- bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value)
895
+ bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value) BOOST_NOEXCEPT
796
896
  {
797
897
  return parse_inf_nan_impl(begin, end, value
798
898
  , L"NAN", L"nan"
799
899
  , L"INFINITY", L"infinity"
800
900
  , L'(', L')');
801
901
  }
902
+
903
+ template <class T>
904
+ bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value) BOOST_NOEXCEPT
905
+ {
906
+ return put_inf_nan_impl(begin, end, value, L"nan", L"infinity");
907
+ }
908
+
802
909
  #endif
803
- #ifndef BOOST_NO_CHAR16_T
910
+ #if !defined(BOOST_NO_CHAR16_T) && !defined(BOOST_NO_UNICODE_LITERALS)
804
911
  template <class T>
805
- bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value)
912
+ bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value) BOOST_NOEXCEPT
806
913
  {
807
914
  return parse_inf_nan_impl(begin, end, value
808
915
  , u"NAN", u"nan"
809
916
  , u"INFINITY", u"infinity"
810
917
  , u'(', u')');
811
918
  }
919
+
920
+ template <class T>
921
+ bool put_inf_nan(char16_t* begin, char16_t*& end, const T& value) BOOST_NOEXCEPT
922
+ {
923
+ return put_inf_nan_impl(begin, end, value, u"nan", u"infinity");
924
+ }
812
925
  #endif
813
- #ifndef BOOST_NO_CHAR32_T
926
+ #if !defined(BOOST_NO_CHAR32_T) && !defined(BOOST_NO_UNICODE_LITERALS)
814
927
  template <class T>
815
- bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value)
928
+ bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value) BOOST_NOEXCEPT
816
929
  {
817
930
  return parse_inf_nan_impl(begin, end, value
818
931
  , U"NAN", U"nan"
819
932
  , U"INFINITY", U"infinity"
820
933
  , U'(', U')');
821
934
  }
935
+
936
+ template <class T>
937
+ bool put_inf_nan(char32_t* begin, char32_t*& end, const T& value) BOOST_NOEXCEPT
938
+ {
939
+ return put_inf_nan_impl(begin, end, value, U"nan", U"infinity");
940
+ }
822
941
  #endif
823
942
 
824
943
  template <class CharT, class T>
825
- bool parse_inf_nan(const CharT* begin, const CharT* end, T& value)
944
+ bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) BOOST_NOEXCEPT
826
945
  {
827
946
  return parse_inf_nan_impl(begin, end, value
828
947
  , "NAN", "nan"
829
948
  , "INFINITY", "infinity"
830
949
  , '(', ')');
831
950
  }
832
- #ifndef BOOST_LCAST_NO_WCHAR_T
833
- template <class T>
834
- bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value)
835
- {
836
- using namespace std;
837
- if ( (boost::math::isnan)(value) )
838
- {
839
- if ( (boost::math::signbit)(value) )
840
- {
841
- memcpy(begin,L"-nan", sizeof(L"-nan"));
842
- end = begin + 4;
843
- } else
844
- {
845
- memcpy(begin,L"nan", sizeof(L"nan"));
846
- end = begin + 3;
847
- }
848
- return true;
849
- } else if ( (boost::math::isinf)(value) )
850
- {
851
- if ( (boost::math::signbit)(value) )
852
- {
853
- memcpy(begin,L"-inf", sizeof(L"-inf"));
854
- end = begin + 4;
855
- } else
856
- {
857
- memcpy(begin,L"inf", sizeof(L"inf"));
858
- end = begin + 3;
859
- }
860
- return true;
861
- }
862
951
 
863
- return false;
864
- }
865
- #endif
866
952
  template <class CharT, class T>
867
- bool put_inf_nan(CharT* begin, CharT*& end, const T& value)
953
+ bool put_inf_nan(CharT* begin, CharT*& end, const T& value) BOOST_NOEXCEPT
868
954
  {
869
- using namespace std;
870
- if ( (boost::math::isnan)(value) )
871
- {
872
- if ( (boost::math::signbit)(value) )
873
- {
874
- memcpy(begin,"-nan", sizeof("-nan"));
875
- end = begin + 4;
876
- } else
877
- {
878
- memcpy(begin,"nan", sizeof("nan"));
879
- end = begin + 3;
880
- }
881
- return true;
882
- } else if ( (boost::math::isinf)(value) )
883
- {
884
- if ( (boost::math::signbit)(value) )
885
- {
886
- memcpy(begin,"-inf", sizeof("-inf"));
887
- end = begin + 4;
888
- } else
889
- {
890
- memcpy(begin,"inf", sizeof("inf"));
891
- end = begin + 3;
892
- }
893
- return true;
894
- }
895
-
896
- return false;
955
+ return put_inf_nan_impl(begin, end, value, "nan", "infinity");
897
956
  }
898
-
899
957
  }
900
958
 
901
959
 
@@ -951,7 +1009,7 @@ namespace boost
951
1009
  CharT const capital_e = lcast_char_constants<CharT>::capital_e;
952
1010
  CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
953
1011
 
954
- value = 0.0;
1012
+ value = static_cast<T>(0);
955
1013
 
956
1014
  if (parse_inf_nan(begin, end, value)) return true;
957
1015
 
@@ -962,11 +1020,11 @@ namespace boost
962
1020
 
963
1021
  /* Getting the plus/minus sign */
964
1022
  bool has_minus = false;
965
- if ( *begin == minus ) {
1023
+ if (Traits::eq(*begin, minus) ) {
966
1024
  ++ begin;
967
1025
  has_minus = true;
968
1026
  if (begin == end) return false;
969
- } else if ( *begin == plus ) {
1027
+ } else if (Traits::eq(*begin, plus) ) {
970
1028
  ++begin;
971
1029
  if (begin == end) return false;
972
1030
  }
@@ -985,7 +1043,7 @@ namespace boost
985
1043
  /* We allow no thousand_separators after decimal point */
986
1044
 
987
1045
  mantissa_type tmp_mantissa = mantissa * 10u;
988
- if ( *begin == lowercase_e || *begin == capital_e ) break;
1046
+ if (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) break;
989
1047
  if ( *begin < czero || *begin >= czero + 10 ) return false;
990
1048
  if ( is_mantissa_full
991
1049
  || tmp_mantissa / 10u != mantissa
@@ -1024,7 +1082,7 @@ namespace boost
1024
1082
 
1025
1083
  found_number_before_exp = true;
1026
1084
  ++ length_since_last_delim;
1027
- } else if ( *begin == decimal_point || *begin == lowercase_e || *begin == capital_e) {
1085
+ } else if (Traits::eq(*begin, decimal_point) || Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) {
1028
1086
  #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1029
1087
  /* If ( we need to check grouping
1030
1088
  * and ( grouping missmatches
@@ -1042,9 +1100,10 @@ namespace boost
1042
1100
  ) return false;
1043
1101
  #endif
1044
1102
 
1045
- if(*begin == decimal_point){
1103
+ if(Traits::eq(*begin, decimal_point)) {
1046
1104
  ++ begin;
1047
1105
  found_decimal = true;
1106
+ if (!found_number_before_exp && begin==end) return false;
1048
1107
  continue;
1049
1108
  }else {
1050
1109
  if (!found_number_before_exp) return false;
@@ -1052,7 +1111,7 @@ namespace boost
1052
1111
  }
1053
1112
  }
1054
1113
  #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1055
- else if (grouping_size && *begin == thousands_sep){
1114
+ else if (grouping_size && Traits::eq(*begin, thousands_sep)){
1056
1115
  if(found_grouping)
1057
1116
  {
1058
1117
  /* It is not he first time, when we find thousands separator,
@@ -1094,16 +1153,16 @@ namespace boost
1094
1153
  }
1095
1154
 
1096
1155
  // Exponent found
1097
- if ( begin != end && ( *begin == lowercase_e || *begin == capital_e ) ) {
1156
+ if ( begin != end && (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) ) {
1098
1157
  ++ begin;
1099
1158
  if ( begin == end ) return false;
1100
1159
 
1101
1160
  bool exp_has_minus = false;
1102
- if( *begin == minus ) {
1161
+ if(Traits::eq(*begin, minus)) {
1103
1162
  exp_has_minus = true;
1104
1163
  ++ begin;
1105
1164
  if ( begin == end ) return false;
1106
- } else if (*begin == plus ) {
1165
+ } else if (Traits::eq(*begin, plus)) {
1107
1166
  ++ begin;
1108
1167
  if ( begin == end ) return false;
1109
1168
  }
@@ -1165,7 +1224,7 @@ namespace boost
1165
1224
 
1166
1225
  namespace detail
1167
1226
  {
1168
- struct do_not_construct_stringbuffer_t{};
1227
+ struct do_not_construct_out_stream_t{};
1169
1228
  }
1170
1229
 
1171
1230
  namespace detail // optimized stream wrapper
@@ -1177,25 +1236,27 @@ namespace boost
1177
1236
  >
1178
1237
  class lexical_stream_limited_src
1179
1238
  {
1180
- typedef stl_buf_unlocker<std::basic_streambuf<CharT, Traits>, CharT > local_streambuffer_t;
1181
1239
 
1182
1240
  #if defined(BOOST_NO_STRINGSTREAM)
1183
- typedef stl_buf_unlocker<std::strstream, CharT > local_stringbuffer_t;
1241
+ typedef std::ostrstream out_stream_t;
1242
+ typedef stl_buf_unlocker<std::strstreambuf, char> unlocked_but_t;
1184
1243
  #elif defined(BOOST_NO_STD_LOCALE)
1185
- typedef stl_buf_unlocker<std::stringstream, CharT > local_stringbuffer_t;
1244
+ typedef std::ostringstream out_stream_t;
1245
+ typedef stl_buf_unlocker<std::stringbuf, char> unlocked_but_t;
1186
1246
  #else
1187
- typedef stl_buf_unlocker<std::basic_stringbuf<CharT, Traits>, CharT > local_stringbuffer_t;
1247
+ typedef std::basic_ostringstream<CharT, Traits> out_stream_t;
1248
+ typedef stl_buf_unlocker<std::basic_stringbuf<CharT, Traits>, CharT> unlocked_but_t;
1188
1249
  #endif
1189
1250
  typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c<
1190
1251
  RequiresStringbuffer,
1191
- local_stringbuffer_t,
1192
- do_not_construct_stringbuffer_t
1193
- >::type deduced_stringbuffer_t;
1252
+ out_stream_t,
1253
+ do_not_construct_out_stream_t
1254
+ >::type deduced_out_stream_t;
1194
1255
 
1195
1256
  // A string representation of Source is written to [start, finish).
1196
1257
  CharT* start;
1197
1258
  CharT* finish;
1198
- deduced_stringbuffer_t stringbuffer;
1259
+ deduced_out_stream_t out_stream;
1199
1260
 
1200
1261
  public:
1201
1262
  lexical_stream_limited_src(CharT* sta, CharT* fin)
@@ -1209,7 +1270,7 @@ namespace boost
1209
1270
  void operator=(lexical_stream_limited_src const&);
1210
1271
 
1211
1272
  /************************************ HELPER FUNCTIONS FOR OPERATORS << ( ... ) ********************************/
1212
- bool shl_char(CharT ch)
1273
+ bool shl_char(CharT ch) BOOST_NOEXCEPT
1213
1274
  {
1214
1275
  Traits::assign(*start, ch);
1215
1276
  finish = start + 1;
@@ -1221,13 +1282,13 @@ namespace boost
1221
1282
  bool shl_char(T ch)
1222
1283
  {
1223
1284
  BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)) ,
1224
- "boost::lexical_cast does not support conversions from whar_t to char types."
1285
+ "boost::lexical_cast does not support narrowing of char types."
1225
1286
  "Use boost::locale instead" );
1226
1287
  #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1227
1288
  std::locale loc;
1228
- wchar_t w = BOOST_USE_FACET(std::ctype<wchar_t>, loc).widen(ch);
1289
+ CharT const w = BOOST_USE_FACET(std::ctype<CharT>, loc).widen(ch);
1229
1290
  #else
1230
- wchar_t w = ch;
1291
+ CharT const w = ch;
1231
1292
  #endif
1232
1293
  Traits::assign(*start, w);
1233
1294
  finish = start + 1;
@@ -1235,31 +1296,42 @@ namespace boost
1235
1296
  }
1236
1297
  #endif
1237
1298
 
1238
- bool shl_char_array(CharT const* str)
1299
+ bool shl_char_array(CharT const* str) BOOST_NOEXCEPT
1239
1300
  {
1240
1301
  start = const_cast<CharT*>(str);
1241
1302
  finish = start + Traits::length(str);
1242
1303
  return true;
1243
1304
  }
1244
1305
 
1245
- #ifndef BOOST_LCAST_NO_WCHAR_T
1246
1306
  template <class T>
1247
1307
  bool shl_char_array(T const* str)
1248
1308
  {
1249
1309
  BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)),
1250
- "boost::lexical_cast does not support conversions from wchar_t to char types."
1310
+ "boost::lexical_cast does not support narrowing of char types."
1251
1311
  "Use boost::locale instead" );
1252
1312
  return shl_input_streamable(str);
1253
1313
  }
1254
- #endif
1314
+
1315
+ bool shl_char_array_limited(CharT const* str, std::size_t max_size) BOOST_NOEXCEPT
1316
+ {
1317
+ start = const_cast<CharT*>(str);
1318
+ finish = std::find(start, start + max_size, Traits::to_char_type(0));
1319
+ return true;
1320
+ }
1255
1321
 
1256
1322
  template<typename InputStreamable>
1257
1323
  bool shl_input_streamable(InputStreamable& input)
1258
1324
  {
1259
- std::basic_ostream<CharT> stream(&stringbuffer);
1260
- bool const result = !(stream << input).fail();
1261
- start = stringbuffer.pbase();
1262
- finish = stringbuffer.pptr();
1325
+ #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
1326
+ // If you have compilation error at this point, than your STL library
1327
+ // does not support such conversions. Try updating it.
1328
+ BOOST_STATIC_ASSERT((boost::is_same<char, CharT>::value));
1329
+ #endif
1330
+ bool const result = !(out_stream << input).fail();
1331
+ const unlocked_but_t* const p
1332
+ = static_cast<unlocked_but_t*>(out_stream.rdbuf()) ;
1333
+ start = p->pbase();
1334
+ finish = p->pptr();
1263
1335
  return result;
1264
1336
  }
1265
1337
 
@@ -1276,110 +1348,105 @@ namespace boost
1276
1348
  return true;
1277
1349
  }
1278
1350
 
1279
- #if (defined _MSC_VER)
1280
- # pragma warning( push )
1281
- // C4996: This function or variable may be unsafe. Consider using sprintf_s instead
1282
- # pragma warning( disable : 4996 )
1283
- #endif
1351
+ template <class T, class SomeCharT>
1352
+ bool shl_real_type(const T& val, SomeCharT* begin, SomeCharT*& end)
1353
+ {
1354
+ if (put_inf_nan(begin, end, val)) return true;
1355
+ lcast_set_precision(out_stream, &val);
1356
+ return shl_input_streamable(val);
1357
+ }
1284
1358
 
1285
- template <class T>
1286
- bool shl_float(float val,T* out)
1359
+ static bool shl_real_type(float val, char* begin, char*& end)
1287
1360
  { using namespace std;
1288
- if (put_inf_nan(start,finish,val)) return true;
1289
- finish = start + sprintf(out,"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val );
1290
- return finish > start;
1361
+ if (put_inf_nan(begin, end, val)) return true;
1362
+ const double val_as_double = val;
1363
+ end = begin +
1364
+ #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
1365
+ sprintf_s(begin, end-begin,
1366
+ #else
1367
+ sprintf(begin,
1368
+ #endif
1369
+ "%.*g", static_cast<int>(boost::detail::lcast_get_precision<float>()), val_as_double);
1370
+ return end > begin;
1291
1371
  }
1292
1372
 
1293
- template <class T>
1294
- bool shl_double(double val,T* out)
1373
+ static bool shl_real_type(double val, char* begin, char*& end)
1295
1374
  { using namespace std;
1296
- if (put_inf_nan(start,finish,val)) return true;
1297
- finish = start + sprintf(out,"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
1298
- return finish > start;
1375
+ if (put_inf_nan(begin, end, val)) return true;
1376
+ end = begin +
1377
+ #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
1378
+ sprintf_s(begin, end-begin,
1379
+ #else
1380
+ sprintf(begin,
1381
+ #endif
1382
+ "%.*g", static_cast<int>(boost::detail::lcast_get_precision<double>()), val);
1383
+ return end > begin;
1299
1384
  }
1385
+
1300
1386
  #ifndef __MINGW32__
1301
- template <class T>
1302
- bool shl_long_double(long double val,T* out)
1387
+ static bool shl_real_type(long double val, char* begin, char*& end)
1303
1388
  { using namespace std;
1304
- if (put_inf_nan(start,finish,val)) return true;
1305
- finish = start + sprintf(out,"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
1306
- return finish > start;
1307
- }
1389
+ if (put_inf_nan(begin, end, val)) return true;
1390
+ end = begin +
1391
+ #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
1392
+ sprintf_s(begin, end-begin,
1393
+ #else
1394
+ sprintf(begin,
1308
1395
  #endif
1309
-
1310
- #if (defined _MSC_VER)
1311
- # pragma warning( pop )
1396
+ "%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double>()), val );
1397
+ return end > begin;
1398
+ }
1312
1399
  #endif
1313
1400
 
1314
1401
 
1315
- #ifndef BOOST_LCAST_NO_WCHAR_T
1316
- bool shl_float(float val,wchar_t* out)
1402
+ #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
1403
+ static bool shl_real_type(float val, wchar_t* begin, wchar_t*& end)
1317
1404
  { using namespace std;
1318
- if (put_inf_nan(start,finish,val)) return true;
1319
- finish = start + swprintf(out,
1320
- #if !defined(__MINGW32__) && !defined(UNDER_CE)
1321
- finish-start,
1322
- #endif
1323
- L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val );
1324
-
1325
- return finish > start;
1405
+ if (put_inf_nan(begin, end, val)) return true;
1406
+ const double val_as_double = val;
1407
+ end = begin + swprintf(begin, end-begin,
1408
+ L"%.*g",
1409
+ static_cast<int>(boost::detail::lcast_get_precision<float >()),
1410
+ val_as_double );
1411
+ return end > begin;
1326
1412
  }
1327
1413
 
1328
-
1329
- bool shl_double(double val,wchar_t* out)
1414
+ static bool shl_real_type(double val, wchar_t* begin, wchar_t*& end)
1330
1415
  { using namespace std;
1331
- if (put_inf_nan(start,finish,val)) return true;
1332
- /* __MINGW32__ is defined for both mingw.org and for mingw-w64.
1333
- * For mingw-w64, __MINGW64__ is defined, too, when targetting
1334
- * 64 bits.
1335
- *
1336
- * swprintf realization in MinGW and under WinCE does not conform
1337
- * to the ISO C
1338
- * Standard.
1339
- */
1340
- finish = start + swprintf(out,
1341
- #if !defined(__MINGW32__) && !defined(UNDER_CE)
1342
- finish-start,
1343
- #endif
1344
- L"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
1345
- return finish > start;
1416
+ if (put_inf_nan(begin, end, val)) return true;
1417
+ end = begin + swprintf(begin, end-begin,
1418
+ L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
1419
+ return end > begin;
1346
1420
  }
1347
1421
 
1348
- #ifndef __MINGW32__
1349
- bool shl_long_double(long double val,wchar_t* out)
1422
+ static bool shl_real_type(long double val, wchar_t* begin, wchar_t*& end)
1350
1423
  { using namespace std;
1351
- if (put_inf_nan(start,finish,val)) return true;
1352
- finish = start + swprintf(out,
1353
- #if !defined(UNDER_CE)
1354
- finish-start,
1355
- #endif
1424
+ if (put_inf_nan(begin, end, val)) return true;
1425
+ end = begin + swprintf(begin, end-begin,
1356
1426
  L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
1357
- return finish > start;
1427
+ return end > begin;
1358
1428
  }
1359
1429
  #endif
1360
1430
 
1361
- #endif
1362
-
1363
1431
  /************************************ OPERATORS << ( ... ) ********************************/
1364
1432
  public:
1365
1433
  template<class Alloc>
1366
- bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str)
1434
+ bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
1367
1435
  {
1368
1436
  start = const_cast<CharT*>(str.data());
1369
1437
  finish = start + str.length();
1370
1438
  return true;
1371
1439
  }
1372
1440
 
1373
- #if !defined(__SUNPRO_CC)
1374
1441
  template<class Alloc>
1375
- bool operator<<(::boost::container::basic_string<CharT,Traits,Alloc> const& str)
1442
+ bool operator<<(::boost::container::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
1376
1443
  {
1377
1444
  start = const_cast<CharT*>(str.data());
1378
1445
  finish = start + str.length();
1379
1446
  return true;
1380
1447
  }
1381
- #endif // !defined(__SUNPRO_CC)
1382
- bool operator<<(bool value)
1448
+
1449
+ bool operator<<(bool value) BOOST_NOEXCEPT
1383
1450
  {
1384
1451
  CharT const czero = lcast_char_constants<CharT>::zero;
1385
1452
  Traits::assign(*start, Traits::to_char_type(czero + value));
@@ -1387,6 +1454,52 @@ namespace boost
1387
1454
  return true;
1388
1455
  }
1389
1456
 
1457
+ bool operator<<(const iterator_range<CharT*>& rng) BOOST_NOEXCEPT
1458
+ {
1459
+ start = rng.begin();
1460
+ finish = rng.end();
1461
+ return true;
1462
+ }
1463
+
1464
+ bool operator<<(const iterator_range<const CharT*>& rng) BOOST_NOEXCEPT
1465
+ {
1466
+ start = const_cast<CharT*>(rng.begin());
1467
+ finish = const_cast<CharT*>(rng.end());
1468
+ return true;
1469
+ }
1470
+
1471
+ bool operator<<(const iterator_range<const signed char*>& rng) BOOST_NOEXCEPT
1472
+ {
1473
+ return (*this) << iterator_range<char*>(
1474
+ const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
1475
+ const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
1476
+ );
1477
+ }
1478
+
1479
+ bool operator<<(const iterator_range<const unsigned char*>& rng) BOOST_NOEXCEPT
1480
+ {
1481
+ return (*this) << iterator_range<char*>(
1482
+ const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
1483
+ const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
1484
+ );
1485
+ }
1486
+
1487
+ bool operator<<(const iterator_range<signed char*>& rng) BOOST_NOEXCEPT
1488
+ {
1489
+ return (*this) << iterator_range<char*>(
1490
+ reinterpret_cast<char*>(rng.begin()),
1491
+ reinterpret_cast<char*>(rng.end())
1492
+ );
1493
+ }
1494
+
1495
+ bool operator<<(const iterator_range<unsigned char*>& rng) BOOST_NOEXCEPT
1496
+ {
1497
+ return (*this) << iterator_range<char*>(
1498
+ reinterpret_cast<char*>(rng.begin()),
1499
+ reinterpret_cast<char*>(rng.end())
1500
+ );
1501
+ }
1502
+
1390
1503
  bool operator<<(char ch) { return shl_char(ch); }
1391
1504
  bool operator<<(unsigned char ch) { return ((*this) << static_cast<char>(ch)); }
1392
1505
  bool operator<<(signed char ch) { return ((*this) << static_cast<char>(ch)); }
@@ -1396,6 +1509,16 @@ namespace boost
1396
1509
  #ifndef BOOST_NO_INTRINSIC_WCHAR_T
1397
1510
  bool operator<<(wchar_t ch) { return shl_char(ch); }
1398
1511
  #endif
1512
+ #endif
1513
+ #if !defined(BOOST_NO_CHAR16_T) && !defined(BOOST_NO_UNICODE_LITERALS)
1514
+ bool operator<<(char16_t ch) { return shl_char(ch); }
1515
+ bool operator<<(char16_t * str) { return shl_char_array(str); }
1516
+ bool operator<<(char16_t const * str) { return shl_char_array(str); }
1517
+ #endif
1518
+ #if !defined(BOOST_NO_CHAR32_T) && !defined(BOOST_NO_UNICODE_LITERALS)
1519
+ bool operator<<(char32_t ch) { return shl_char(ch); }
1520
+ bool operator<<(char32_t * str) { return shl_char_array(str); }
1521
+ bool operator<<(char32_t const * str) { return shl_char_array(str); }
1399
1522
  #endif
1400
1523
  bool operator<<(unsigned char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
1401
1524
  bool operator<<(unsigned char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
@@ -1417,17 +1540,67 @@ namespace boost
1417
1540
  bool operator<<(unsigned __int64 n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1418
1541
  bool operator<<( __int64 n) { return shl_signed(n); }
1419
1542
  #endif
1420
- bool operator<<(float val) { return shl_float(val,start); }
1421
- bool operator<<(double val) { return shl_double(val,start); }
1543
+ bool operator<<(float val) { return shl_real_type(val, start, finish); }
1544
+ bool operator<<(double val) { return shl_real_type(val, start, finish); }
1422
1545
  bool operator<<(long double val) {
1423
1546
  #ifndef __MINGW32__
1424
- return shl_long_double(val,start);
1547
+ return shl_real_type(val, start, finish);
1425
1548
  #else
1426
- return shl_double(val,start);
1549
+ return shl_real_type(static_cast<double>(val), start, finish);
1427
1550
  #endif
1428
1551
  }
1429
-
1430
- template<class InStreamable>
1552
+
1553
+ template <std::size_t N>
1554
+ bool operator<<(boost::array<CharT, N> const& input) BOOST_NOEXCEPT
1555
+ { return shl_char_array_limited(input.begin(), N); }
1556
+
1557
+ template <std::size_t N>
1558
+ bool operator<<(boost::array<unsigned char, N> const& input) BOOST_NOEXCEPT
1559
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1560
+
1561
+ template <std::size_t N>
1562
+ bool operator<<(boost::array<signed char, N> const& input) BOOST_NOEXCEPT
1563
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1564
+
1565
+ template <std::size_t N>
1566
+ bool operator<<(boost::array<const CharT, N> const& input) BOOST_NOEXCEPT
1567
+ { return shl_char_array_limited(input.begin(), N); }
1568
+
1569
+ template <std::size_t N>
1570
+ bool operator<<(boost::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
1571
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1572
+
1573
+ template <std::size_t N>
1574
+ bool operator<<(boost::array<const signed char, N> const& input) BOOST_NOEXCEPT
1575
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1576
+
1577
+ #if !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
1578
+ template <std::size_t N>
1579
+ bool operator<<(std::array<CharT, N> const& input) BOOST_NOEXCEPT
1580
+ { return shl_char_array_limited(input.begin(), N); }
1581
+
1582
+ template <std::size_t N>
1583
+ bool operator<<(std::array<unsigned char, N> const& input) BOOST_NOEXCEPT
1584
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1585
+
1586
+ template <std::size_t N>
1587
+ bool operator<<(std::array<signed char, N> const& input) BOOST_NOEXCEPT
1588
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1589
+
1590
+ template <std::size_t N>
1591
+ bool operator<<(std::array<const CharT, N> const& input) BOOST_NOEXCEPT
1592
+ { return shl_char_array_limited(input.begin(), N); }
1593
+
1594
+ template <std::size_t N>
1595
+ bool operator<<(std::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
1596
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1597
+
1598
+ template <std::size_t N>
1599
+ bool operator<<(std::array<const signed char, N> const& input) BOOST_NOEXCEPT
1600
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1601
+ #endif // !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
1602
+
1603
+ template <class InStreamable>
1431
1604
  bool operator<<(const InStreamable& input) { return shl_input_streamable(input); }
1432
1605
 
1433
1606
  /************************************ HELPER FUNCTIONS FOR OPERATORS >> ( ... ) ********************************/
@@ -1524,9 +1697,22 @@ namespace boost
1524
1697
  if(is_pointer<InputStreamable>::value)
1525
1698
  return false;
1526
1699
 
1527
- local_streambuffer_t bb;
1528
- bb.setg(start, start, finish);
1529
- std::basic_istream<CharT> stream(&bb);
1700
+ #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
1701
+ // If you have compilation error at this point, than your STL library
1702
+ // unsupports such conversions. Try updating it.
1703
+ BOOST_STATIC_ASSERT((boost::is_same<char, CharT>::value));
1704
+ #endif
1705
+
1706
+ #if defined(BOOST_NO_STRINGSTREAM)
1707
+ std::istrstream stream(start, finish - start);
1708
+ #elif defined(BOOST_NO_STD_LOCALE)
1709
+ std::istringstream stream;
1710
+ #else
1711
+ std::basic_istringstream<CharT, Traits> stream;
1712
+ #endif
1713
+ static_cast<unlocked_but_t*>(stream.rdbuf())
1714
+ ->setg(start, start, finish);
1715
+
1530
1716
  stream.unsetf(std::ios::skipws);
1531
1717
  lcast_set_precision(stream, static_cast<InputStreamable*>(0));
1532
1718
  #if (defined _MSC_VER)
@@ -1549,10 +1735,10 @@ namespace boost
1549
1735
  inline bool shr_xchar(T& output)
1550
1736
  {
1551
1737
  BOOST_STATIC_ASSERT_MSG(( sizeof(CharT) == sizeof(T) ),
1552
- "boost::lexical_cast does not support conversions from whar_t to char types."
1738
+ "boost::lexical_cast does not support narrowing of character types."
1553
1739
  "Use boost::locale instead" );
1554
1740
  bool const ok = (finish - start == 1);
1555
- if(ok) {
1741
+ if (ok) {
1556
1742
  CharT out;
1557
1743
  Traits::assign(out, *start);
1558
1744
  output = static_cast<T>(out);
@@ -1581,31 +1767,81 @@ namespace boost
1581
1767
  #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
1582
1768
  bool operator>>(wchar_t& output) { return shr_xchar(output); }
1583
1769
  #endif
1584
- #ifndef BOOST_NO_CHAR16_T
1770
+ #if !defined(BOOST_NO_CHAR16_T) && !defined(BOOST_NO_UNICODE_LITERALS)
1585
1771
  bool operator>>(char16_t& output) { return shr_xchar(output); }
1586
1772
  #endif
1587
- #ifndef BOOST_NO_CHAR32_T
1773
+ #if !defined(BOOST_NO_CHAR32_T) && !defined(BOOST_NO_UNICODE_LITERALS)
1588
1774
  bool operator>>(char32_t& output) { return shr_xchar(output); }
1589
1775
  #endif
1590
- #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1591
- bool operator>>(std::string& str) { str.assign(start, finish); return true; }
1592
- # ifndef BOOST_LCAST_NO_WCHAR_T
1593
- bool operator>>(std::wstring& str) { str.assign(start, finish); return true; }
1594
- # endif
1595
- #else
1596
1776
  template<class Alloc>
1597
1777
  bool operator>>(std::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
1598
- #if !defined(__SUNPRO_CC)
1778
+
1599
1779
  template<class Alloc>
1600
1780
  bool operator>>(::boost::container::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
1601
- #endif // !defined(__SUNPRO_CC)
1602
- #endif
1781
+
1782
+
1783
+ private:
1784
+ template <std::size_t N, class ArrayT>
1785
+ bool shr_std_array(ArrayT& output) BOOST_NOEXCEPT
1786
+ {
1787
+ using namespace std;
1788
+ const std::size_t size = finish - start;
1789
+ if (size > N - 1) { // `-1` because we need to store \0 at the end
1790
+ return false;
1791
+ }
1792
+
1793
+ memcpy(output.begin(), start, size * sizeof(CharT));
1794
+ *(output.begin() + size) = Traits::to_char_type(0);
1795
+ return true;
1796
+ }
1797
+
1798
+ public:
1799
+
1800
+ template <std::size_t N>
1801
+ bool operator>>(boost::array<CharT, N>& output) BOOST_NOEXCEPT
1802
+ {
1803
+ return shr_std_array<N>(output);
1804
+ }
1805
+
1806
+ template <std::size_t N>
1807
+ bool operator>>(boost::array<unsigned char, N>& output)
1808
+ {
1809
+ return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
1810
+ }
1811
+
1812
+ template <std::size_t N>
1813
+ bool operator>>(boost::array<signed char, N>& output)
1814
+ {
1815
+ return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
1816
+ }
1817
+
1818
+ #if !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
1819
+ template <std::size_t N>
1820
+ bool operator>>(std::array<CharT, N>& output) BOOST_NOEXCEPT
1821
+ {
1822
+ return shr_std_array<N>(output);
1823
+ }
1824
+
1825
+ template <std::size_t N>
1826
+ bool operator>>(std::array<unsigned char, N>& output)
1827
+ {
1828
+ return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
1829
+ }
1830
+
1831
+ template <std::size_t N>
1832
+ bool operator>>(std::array<signed char, N>& in)
1833
+ {
1834
+ return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
1835
+ }
1836
+ #endif // !defined(BOOST_NO_CXX11_HDR_ARRAY) && defined(BOOST_HAS_TR1_ARRAY)
1837
+
1838
+
1603
1839
  /*
1604
1840
  * case "-0" || "0" || "+0" : output = false; return true;
1605
1841
  * case "1" || "+1": output = true; return true;
1606
1842
  * default: return false;
1607
1843
  */
1608
- bool operator>>(bool& output)
1844
+ bool operator>>(bool& output) BOOST_NOEXCEPT
1609
1845
  {
1610
1846
  CharT const zero = lcast_char_constants<CharT>::zero;
1611
1847
  CharT const plus = lcast_char_constants<CharT>::plus;
@@ -1655,10 +1891,10 @@ namespace boost
1655
1891
  CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
1656
1892
  if ( return_value &&
1657
1893
  (
1658
- *(finish-1) == lowercase_e // 1.0e
1659
- || *(finish-1) == capital_e // 1.0E
1660
- || *(finish-1) == minus // 1.0e- or 1.0E-
1661
- || *(finish-1) == plus // 1.0e+ or 1.0E+
1894
+ Traits::eq(*(finish-1), lowercase_e) // 1.0e
1895
+ || Traits::eq(*(finish-1), capital_e) // 1.0E
1896
+ || Traits::eq(*(finish-1), minus) // 1.0e- or 1.0E-
1897
+ || Traits::eq(*(finish-1), plus) // 1.0e+ or 1.0E+
1662
1898
  )
1663
1899
  ) return false;
1664
1900
 
@@ -1705,10 +1941,6 @@ namespace boost
1705
1941
  };
1706
1942
  }
1707
1943
 
1708
- #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1709
-
1710
- // call-by-const reference version
1711
-
1712
1944
  namespace detail
1713
1945
  {
1714
1946
  template<class T>
@@ -1734,49 +1966,12 @@ namespace boost
1734
1966
  {
1735
1967
  BOOST_STATIC_CONSTANT(bool, value = true );
1736
1968
  };
1737
- #if !defined(__SUNPRO_CC)
1969
+
1738
1970
  template<typename CharT, typename Traits, typename Alloc>
1739
1971
  struct is_stdstring< ::boost::container::basic_string<CharT, Traits, Alloc> >
1740
1972
  {
1741
1973
  BOOST_STATIC_CONSTANT(bool, value = true );
1742
1974
  };
1743
- #endif // !defined(__SUNPRO_CC)
1744
- template<typename T>
1745
- struct is_char_or_wchar
1746
- {
1747
- private:
1748
- #ifndef BOOST_LCAST_NO_WCHAR_T
1749
- typedef wchar_t wchar_t_if_supported;
1750
- #else
1751
- typedef char wchar_t_if_supported;
1752
- #endif
1753
-
1754
- #ifndef BOOST_NO_CHAR16_T
1755
- typedef char16_t char16_t_if_supported;
1756
- #else
1757
- typedef char char16_t_if_supported;
1758
- #endif
1759
-
1760
- #ifndef BOOST_NO_CHAR32_T
1761
- typedef char32_t char32_t_if_supported;
1762
- #else
1763
- typedef char char32_t_if_supported;
1764
- #endif
1765
- public:
1766
-
1767
- BOOST_STATIC_CONSTANT(bool, value =
1768
- (
1769
- ::boost::type_traits::ice_or<
1770
- is_same< T, char >::value,
1771
- is_same< T, wchar_t_if_supported >::value,
1772
- is_same< T, char16_t_if_supported >::value,
1773
- is_same< T, char32_t_if_supported >::value,
1774
- is_same< T, unsigned char >::value,
1775
- is_same< T, signed char >::value
1776
- >::value
1777
- )
1778
- );
1779
- };
1780
1975
 
1781
1976
  template<typename Target, typename Source>
1782
1977
  struct is_arithmetic_and_not_xchars
@@ -1784,8 +1979,8 @@ namespace boost
1784
1979
  BOOST_STATIC_CONSTANT(bool, value =
1785
1980
  (
1786
1981
  ::boost::type_traits::ice_and<
1787
- is_arithmetic<Source>::value,
1788
- is_arithmetic<Target>::value,
1982
+ ::boost::is_arithmetic<Source>::value,
1983
+ ::boost::is_arithmetic<Target>::value,
1789
1984
  ::boost::type_traits::ice_not<
1790
1985
  detail::is_char_or_wchar<Target>::value
1791
1986
  >::value,
@@ -1823,6 +2018,28 @@ namespace boost
1823
2018
  );
1824
2019
  };
1825
2020
 
2021
+
2022
+ // this metafunction evaluates to true, if we have optimized comnversion
2023
+ // from Float type to Char array.
2024
+ // Must be in sync with lexical_stream_limited_src<Char, ...>::shl_real_type(...)
2025
+ template <typename Float, typename Char>
2026
+ struct is_this_float_conversion_optimized
2027
+ {
2028
+ typedef ::boost::type_traits::ice_and<
2029
+ ::boost::is_float<Float>::value,
2030
+ #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
2031
+ ::boost::type_traits::ice_or<
2032
+ ::boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value,
2033
+ ::boost::is_same<Char, wchar_t>::value
2034
+ >::value
2035
+ #else
2036
+ ::boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value
2037
+ #endif
2038
+ > result_type;
2039
+
2040
+ BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
2041
+ };
2042
+
1826
2043
  template<typename Target, typename Source>
1827
2044
  struct is_char_array_to_stdstring
1828
2045
  {
@@ -1840,7 +2057,7 @@ namespace boost
1840
2057
  {
1841
2058
  BOOST_STATIC_CONSTANT(bool, value = true );
1842
2059
  };
1843
- #if !defined(__SUNPRO_CC)
2060
+
1844
2061
  template<typename CharT, typename Traits, typename Alloc>
1845
2062
  struct is_char_array_to_stdstring< ::boost::container::basic_string<CharT, Traits, Alloc>, CharT* >
1846
2063
  {
@@ -1852,7 +2069,6 @@ namespace boost
1852
2069
  {
1853
2070
  BOOST_STATIC_CONSTANT(bool, value = true );
1854
2071
  };
1855
- #endif // !defined(__SUNPRO_CC)
1856
2072
 
1857
2073
  #if (defined _MSC_VER)
1858
2074
  # pragma warning( push )
@@ -1866,59 +2082,64 @@ namespace boost
1866
2082
  static inline Target lexical_cast_impl(const Source& arg)
1867
2083
  {
1868
2084
  typedef BOOST_DEDUCED_TYPENAME detail::array_to_pointer_decay<Source>::type src;
1869
-
2085
+ typedef BOOST_DEDUCED_TYPENAME ::boost::remove_cv<src>::type no_cv_src;
2086
+ typedef BOOST_DEDUCED_TYPENAME detail::stream_char<Target>::type target_char_t;
2087
+ typedef BOOST_DEDUCED_TYPENAME detail::stream_char<no_cv_src>::type src_char_type;
1870
2088
  typedef BOOST_DEDUCED_TYPENAME detail::widest_char<
1871
- BOOST_DEDUCED_TYPENAME detail::stream_char<Target>::type
1872
- , BOOST_DEDUCED_TYPENAME detail::stream_char<src>::type
2089
+ target_char_t, src_char_type
1873
2090
  >::type char_type;
1874
2091
 
1875
- typedef detail::lcast_src_length<src> lcast_src_length;
1876
- std::size_t const src_len = lcast_src_length::value;
1877
- char_type buf[src_len + 1];
1878
- lcast_src_length::check_coverage();
2092
+ #if !defined(BOOST_NO_CHAR16_T) && defined(BOOST_NO_UNICODE_LITERALS)
2093
+ BOOST_STATIC_ASSERT_MSG(( !::boost::is_same<char16_t, src_char_type>::value
2094
+ && !::boost::is_same<char16_t, target_char_t>::value),
2095
+ "Your compiler does not have full support for char16_t" );
2096
+ #endif
2097
+ #if !defined(BOOST_NO_CHAR32_T) && defined(BOOST_NO_UNICODE_LITERALS)
2098
+ BOOST_STATIC_ASSERT_MSG(( !::boost::is_same<char32_t, src_char_type>::value
2099
+ && !::boost::is_same<char32_t, target_char_t>::value),
2100
+ "Your compiler does not have full support for char32_t" );
2101
+ #endif
1879
2102
 
1880
- typedef BOOST_DEDUCED_TYPENAME
1881
- deduce_char_traits<char_type,Target,Source>::type traits;
2103
+ typedef BOOST_DEDUCED_TYPENAME ::boost::detail::deduce_char_traits<
2104
+ char_type, Target, no_cv_src
2105
+ >::type traits;
1882
2106
 
1883
- typedef BOOST_DEDUCED_TYPENAME remove_pointer<src >::type removed_ptr_t;
2107
+ typedef ::boost::type_traits::ice_and<
2108
+ ::boost::detail::is_char_or_wchar<src_char_type>::value, // source is lexical type
2109
+ ::boost::detail::is_char_or_wchar<target_char_t>::value, // target is a lexical type
2110
+ ::boost::is_same<char, src_char_type>::value, // source is not a wide character based type
2111
+ ::boost::type_traits::ice_ne<sizeof(char), sizeof(target_char_t) >::value // target type is based on wide character
2112
+ > is_string_widening_required_t;
1884
2113
 
1885
- // is_char_types_match variable value can be computed via
1886
- // sizeof(char_type) == sizeof(removed_ptr_t). But when
1887
- // removed_ptr_t is an incomplete type or void*, compilers
1888
- // produce warnings or errors.
1889
- const bool is_char_types_match =
1890
- (::boost::type_traits::ice_or<
1891
- ::boost::type_traits::ice_and<
1892
- ::boost::type_traits::ice_eq<sizeof(char_type), sizeof(char) >::value,
1893
- ::boost::type_traits::ice_or<
1894
- ::boost::is_same<char, removed_ptr_t>::value,
1895
- ::boost::is_same<unsigned char, removed_ptr_t>::value,
1896
- ::boost::is_same<signed char, removed_ptr_t>::value
1897
- >::value
1898
- >::value,
1899
- is_same<char_type, removed_ptr_t>::value
1900
- >::value);
1901
-
1902
- const bool requires_stringbuf =
1903
- !(
1904
- ::boost::type_traits::ice_or<
1905
- is_stdstring<src >::value,
1906
- is_arithmetic<src >::value,
1907
- ::boost::type_traits::ice_and<
1908
- is_pointer<src >::value,
1909
- is_char_or_wchar<removed_ptr_t >::value,
1910
- is_char_types_match
1911
- >::value
1912
- >::value
1913
- );
1914
-
1915
- detail::lexical_stream_limited_src<char_type,traits, requires_stringbuf >
1916
- interpreter(buf, buf + src_len);
2114
+ typedef ::boost::type_traits::ice_or<
2115
+ ::boost::is_integral<no_cv_src>::value,
2116
+ ::boost::detail::is_this_float_conversion_optimized<no_cv_src, char_type >::value,
2117
+ ::boost::detail::is_char_or_wchar<src_char_type >::value
2118
+ > is_source_input_optimized_t;
1917
2119
 
2120
+ // Target type must be default constructible
1918
2121
  Target result;
2122
+
2123
+ // If we have an optimized conversion for
2124
+ // Source, we do not need to construct stringbuf.
2125
+ const bool requires_stringbuf = ::boost::type_traits::ice_or<
2126
+ is_string_widening_required_t::value,
2127
+ ::boost::type_traits::ice_not< is_source_input_optimized_t::value >::value
2128
+ >::value;
2129
+
2130
+ typedef detail::lexical_stream_limited_src<char_type, traits, requires_stringbuf > interpreter_type;
2131
+
2132
+ typedef detail::lcast_src_length<no_cv_src> lcast_src_length;
2133
+ std::size_t const src_len = lcast_src_length::value;
2134
+ char_type buf[src_len + 1];
2135
+ lcast_src_length::check_coverage();
2136
+
2137
+ interpreter_type interpreter(buf, buf + src_len);
2138
+
1919
2139
  // Disabling ADL, by directly specifying operators.
1920
2140
  if(!(interpreter.operator <<(arg) && interpreter.operator >>(result)))
1921
2141
  BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2142
+
1922
2143
  return result;
1923
2144
  }
1924
2145
  };
@@ -1926,88 +2147,80 @@ namespace boost
1926
2147
  # pragma warning( pop )
1927
2148
  #endif
1928
2149
 
1929
- template<typename Source>
2150
+ template <typename Source>
1930
2151
  struct lexical_cast_copy
1931
2152
  {
1932
- static inline Source lexical_cast_impl(const Source &arg)
2153
+ static inline const Source& lexical_cast_impl(const Source &arg) BOOST_NOEXCEPT
1933
2154
  {
1934
2155
  return arg;
1935
2156
  }
1936
2157
  };
1937
2158
 
1938
- class precision_loss_error : public boost::numeric::bad_numeric_cast
2159
+ template <class Source, class Target >
2160
+ struct detect_precision_loss
1939
2161
  {
1940
- public:
1941
- virtual const char * what() const throw()
1942
- { return "bad numeric conversion: precision loss error"; }
1943
- };
1944
-
1945
- template<class S >
1946
- struct throw_on_precision_loss
1947
- {
1948
- typedef boost::numeric::Trunc<S> Rounder;
1949
- typedef S source_type ;
2162
+ typedef boost::numeric::Trunc<Source> Rounder;
2163
+ typedef Source source_type ;
1950
2164
 
1951
- typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
2165
+ typedef BOOST_DEDUCED_TYPENAME mpl::if_<
2166
+ ::boost::is_arithmetic<Source>, Source, Source const&
2167
+ >::type argument_type ;
1952
2168
 
1953
2169
  static source_type nearbyint ( argument_type s )
1954
2170
  {
1955
- source_type orig_div_round = s / Rounder::nearbyint(s);
2171
+ const source_type orig_div_round = s / Rounder::nearbyint(s);
2172
+ const source_type eps = std::numeric_limits<source_type>::epsilon();
2173
+
2174
+ if ((orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > eps)
2175
+ BOOST_LCAST_THROW_BAD_CAST(Source, Target);
1956
2176
 
1957
- if ( (orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > std::numeric_limits<source_type>::epsilon() )
1958
- BOOST_THROW_EXCEPTION( precision_loss_error() );
1959
2177
  return s ;
1960
2178
  }
1961
2179
 
1962
2180
  typedef typename Rounder::round_style round_style;
1963
2181
  } ;
1964
2182
 
1965
- template<typename Target, typename Source>
2183
+ template <class Source, class Target >
2184
+ struct nothrow_overflow_handler
2185
+ {
2186
+ void operator() ( boost::numeric::range_check_result r )
2187
+ {
2188
+ if (r != boost::numeric::cInRange)
2189
+ BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2190
+ }
2191
+ } ;
2192
+
2193
+ template <typename Target, typename Source>
1966
2194
  struct lexical_cast_dynamic_num_not_ignoring_minus
1967
2195
  {
1968
2196
  static inline Target lexical_cast_impl(const Source &arg)
1969
2197
  {
1970
- try{
1971
- typedef boost::numeric::converter<
1972
- Target,
1973
- Source,
1974
- boost::numeric::conversion_traits<Target,Source>,
1975
- boost::numeric::def_overflow_handler,
1976
- throw_on_precision_loss<Source>
1977
- > Converter ;
1978
-
1979
- return Converter::convert(arg);
1980
- } catch( ::boost::numeric::bad_numeric_cast const& ) {
1981
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
1982
- }
1983
- BOOST_UNREACHABLE_RETURN(static_cast<Target>(0));
2198
+ return boost::numeric::converter<
2199
+ Target,
2200
+ Source,
2201
+ boost::numeric::conversion_traits<Target,Source>,
2202
+ nothrow_overflow_handler<Source, Target>,
2203
+ detect_precision_loss<Source, Target>
2204
+ >::convert(arg);
1984
2205
  }
1985
2206
  };
1986
2207
 
1987
- template<typename Target, typename Source>
2208
+ template <typename Target, typename Source>
1988
2209
  struct lexical_cast_dynamic_num_ignoring_minus
1989
2210
  {
1990
2211
  static inline Target lexical_cast_impl(const Source &arg)
1991
2212
  {
1992
- try{
1993
- typedef boost::numeric::converter<
1994
- Target,
1995
- Source,
1996
- boost::numeric::conversion_traits<Target,Source>,
1997
- boost::numeric::def_overflow_handler,
1998
- throw_on_precision_loss<Source>
1999
- > Converter ;
2000
-
2001
- bool has_minus = ( arg < 0);
2002
- if ( has_minus ) {
2003
- return static_cast<Target>(-Converter::convert(-arg));
2004
- } else {
2005
- return Converter::convert(arg);
2006
- }
2007
- } catch( ::boost::numeric::bad_numeric_cast const& ) {
2008
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2009
- }
2010
- BOOST_UNREACHABLE_RETURN(static_cast<Target>(0));
2213
+ typedef boost::numeric::converter<
2214
+ Target,
2215
+ Source,
2216
+ boost::numeric::conversion_traits<Target,Source>,
2217
+ nothrow_overflow_handler<Source, Target>,
2218
+ detect_precision_loss<Source, Target>
2219
+ > converter_t;
2220
+
2221
+ return (
2222
+ arg < 0 ? -converter_t::convert(-arg) : converter_t::convert(arg)
2223
+ );
2011
2224
  }
2012
2225
  };
2013
2226
 
@@ -2029,7 +2242,7 @@ namespace boost
2029
2242
  * optional, so if a negative number is read, no errors will arise
2030
2243
  * and the result will be the two's complement.
2031
2244
  */
2032
- template<typename Target, typename Source>
2245
+ template <typename Target, typename Source>
2033
2246
  struct lexical_cast_dynamic_num
2034
2247
  {
2035
2248
  static inline Target lexical_cast_impl(const Source &arg)
@@ -2041,10 +2254,10 @@ namespace boost
2041
2254
  ::boost::is_float<Source>::value
2042
2255
  >::value,
2043
2256
  ::boost::type_traits::ice_not<
2044
- is_same<Source, bool>::value
2257
+ ::boost::is_same<Source, bool>::value
2045
2258
  >::value,
2046
2259
  ::boost::type_traits::ice_not<
2047
- is_same<Target, bool>::value
2260
+ ::boost::is_same<Target, bool>::value
2048
2261
  >::value,
2049
2262
  ::boost::is_unsigned<Target>::value
2050
2263
  >::value,
@@ -2057,40 +2270,133 @@ namespace boost
2057
2270
  };
2058
2271
  }
2059
2272
 
2060
- template<typename Target, typename Source>
2273
+ template <typename Target, typename Source>
2061
2274
  inline Target lexical_cast(const Source &arg)
2062
2275
  {
2063
- typedef BOOST_DEDUCED_TYPENAME detail::array_to_pointer_decay<Source>::type src;
2276
+ typedef BOOST_DEDUCED_TYPENAME ::boost::detail::array_to_pointer_decay<Source>::type src;
2064
2277
 
2065
2278
  typedef BOOST_DEDUCED_TYPENAME ::boost::type_traits::ice_or<
2066
- detail::is_xchar_to_xchar<Target, src>::value,
2067
- detail::is_char_array_to_stdstring<Target,src>::value,
2279
+ ::boost::detail::is_xchar_to_xchar<Target, src >::value,
2280
+ ::boost::detail::is_char_array_to_stdstring<Target, src >::value,
2068
2281
  ::boost::type_traits::ice_and<
2069
- is_same<Target, src>::value,
2070
- detail::is_stdstring<Target>::value
2282
+ ::boost::is_same<Target, src >::value,
2283
+ ::boost::detail::is_stdstring<Target >::value
2071
2284
  >::value
2072
- > do_copy_type;
2285
+ > shall_we_copy_t;
2073
2286
 
2074
2287
  typedef BOOST_DEDUCED_TYPENAME
2075
- detail::is_arithmetic_and_not_xchars<Target, src> do_copy_with_dynamic_check_type;
2288
+ ::boost::detail::is_arithmetic_and_not_xchars<Target, src > shall_we_copy_with_dynamic_check_t;
2076
2289
 
2077
2290
  typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c<
2078
- do_copy_type::value,
2079
- detail::lexical_cast_copy<src>,
2291
+ shall_we_copy_t::value,
2292
+ ::boost::detail::lexical_cast_copy<src >,
2080
2293
  BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c<
2081
- do_copy_with_dynamic_check_type::value,
2082
- detail::lexical_cast_dynamic_num<Target, src>,
2083
- detail::lexical_cast_do_cast<Target, src>
2294
+ shall_we_copy_with_dynamic_check_t::value,
2295
+ ::boost::detail::lexical_cast_dynamic_num<Target, src >,
2296
+ ::boost::detail::lexical_cast_do_cast<Target, src >
2084
2297
  >::type
2085
2298
  >::type caster_type;
2086
2299
 
2087
2300
  return caster_type::lexical_cast_impl(arg);
2088
2301
  }
2089
2302
 
2090
- #else
2303
+ template <typename Target>
2304
+ inline Target lexical_cast(const char* chars, std::size_t count)
2305
+ {
2306
+ return ::boost::lexical_cast<Target>(
2307
+ ::boost::iterator_range<const char*>(chars, chars + count)
2308
+ );
2309
+ }
2310
+
2311
+
2312
+ template <typename Target>
2313
+ inline Target lexical_cast(const unsigned char* chars, std::size_t count)
2314
+ {
2315
+ return ::boost::lexical_cast<Target>(
2316
+ ::boost::iterator_range<const unsigned char*>(chars, chars + count)
2317
+ );
2318
+ }
2319
+
2320
+ template <typename Target>
2321
+ inline Target lexical_cast(const signed char* chars, std::size_t count)
2322
+ {
2323
+ return ::boost::lexical_cast<Target>(
2324
+ ::boost::iterator_range<const signed char*>(chars, chars + count)
2325
+ );
2326
+ }
2327
+
2328
+ #ifndef BOOST_LCAST_NO_WCHAR_T
2329
+ template <typename Target>
2330
+ inline Target lexical_cast(const wchar_t* chars, std::size_t count)
2331
+ {
2332
+ return ::boost::lexical_cast<Target>(
2333
+ ::boost::iterator_range<const wchar_t*>(chars, chars + count)
2334
+ );
2335
+ }
2336
+ #endif
2337
+ #ifndef BOOST_NO_CHAR16_T
2338
+ template <typename Target>
2339
+ inline Target lexical_cast(const char16_t* chars, std::size_t count)
2340
+ {
2341
+ return ::boost::lexical_cast<Target>(
2342
+ ::boost::iterator_range<const char16_t*>(chars, chars + count)
2343
+ );
2344
+ }
2345
+ #endif
2346
+ #ifndef BOOST_NO_CHAR32_T
2347
+ template <typename Target>
2348
+ inline Target lexical_cast(const char32_t* chars, std::size_t count)
2349
+ {
2350
+ return ::boost::lexical_cast<Target>(
2351
+ ::boost::iterator_range<const char32_t*>(chars, chars + count)
2352
+ );
2353
+ }
2354
+ #endif
2355
+
2356
+ } // namespace boost
2091
2357
 
2092
- namespace detail // stream wrapper for handling lexical conversions
2358
+ #else // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
2359
+
2360
+ namespace boost {
2361
+ namespace detail
2093
2362
  {
2363
+
2364
+ // selectors for choosing stream character type
2365
+ template<typename Type>
2366
+ struct stream_char
2367
+ {
2368
+ typedef char type;
2369
+ };
2370
+
2371
+ #ifndef BOOST_LCAST_NO_WCHAR_T
2372
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
2373
+ template<>
2374
+ struct stream_char<wchar_t>
2375
+ {
2376
+ typedef wchar_t type;
2377
+ };
2378
+ #endif
2379
+
2380
+ template<>
2381
+ struct stream_char<wchar_t *>
2382
+ {
2383
+ typedef wchar_t type;
2384
+ };
2385
+
2386
+ template<>
2387
+ struct stream_char<const wchar_t *>
2388
+ {
2389
+ typedef wchar_t type;
2390
+ };
2391
+
2392
+ template<>
2393
+ struct stream_char<std::wstring>
2394
+ {
2395
+ typedef wchar_t type;
2396
+ };
2397
+ #endif
2398
+
2399
+ // stream wrapper for handling lexical conversions
2094
2400
  template<typename Target, typename Source, typename Traits>
2095
2401
  class lexical_stream
2096
2402
  {
@@ -2180,8 +2486,9 @@ namespace boost
2180
2486
  return result;
2181
2487
  }
2182
2488
 
2183
- #endif
2184
- }
2489
+ } // namespace boost
2490
+
2491
+ #endif
2185
2492
 
2186
2493
  // Copyright Kevlin Henney, 2000-2005.
2187
2494
  // Copyright Alexander Nasonov, 2006-2010.
@@ -2191,5 +2498,8 @@ namespace boost
2191
2498
  // accompanying file LICENSE_1_0.txt or copy at
2192
2499
  // http://www.boost.org/LICENSE_1_0.txt)
2193
2500
 
2501
+ #undef BOOST_LCAST_THROW_BAD_CAST
2194
2502
  #undef BOOST_LCAST_NO_WCHAR_T
2195
- #endif
2503
+
2504
+ #endif // BOOST_LEXICAL_CAST_INCLUDED
2505
+