passenger 3.0.21 → 3.9.1.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 (835) hide show
  1. data/DEVELOPERS.TXT +4 -10
  2. data/NEWS +19 -27
  3. data/Rakefile +20 -19
  4. data/bin/passenger +3 -2
  5. data/bin/passenger-config +35 -5
  6. data/bin/passenger-install-apache2-module +12 -12
  7. data/bin/passenger-install-nginx-module +55 -38
  8. data/bin/passenger-memory-stats +3 -1
  9. data/bin/passenger-status +7 -35
  10. data/build/agents.rb +107 -21
  11. data/build/apache2.rb +11 -46
  12. data/build/basics.rb +61 -9
  13. data/build/common_library.rb +59 -142
  14. data/build/cxx_tests.rb +111 -110
  15. data/build/documentation.rb +33 -0
  16. data/build/misc.rb +30 -12
  17. data/build/nginx.rb +10 -39
  18. data/build/oxt_tests.rb +1 -0
  19. data/build/ruby_extension.rb +1 -5
  20. data/build/test_basics.rb +3 -2
  21. data/dev/copy_boost_headers.rb +2 -1
  22. data/doc/Architectural overview.html +49 -90
  23. data/doc/DebuggingAndStressTesting.txt.md +49 -0
  24. data/doc/Packaging.txt.md +254 -0
  25. data/doc/Security of user switching support.html +35 -66
  26. data/doc/Users guide Apache.html +588 -758
  27. data/doc/Users guide Apache.idmap.txt +253 -136
  28. data/doc/Users guide Apache.txt +154 -109
  29. data/doc/Users guide Nginx.html +544 -660
  30. data/doc/Users guide Nginx.idmap.txt +179 -91
  31. data/doc/Users guide Nginx.txt +192 -118
  32. data/doc/Users guide Standalone.html +65 -48
  33. data/doc/Users guide Standalone.idmap.txt +10 -2
  34. data/doc/Users guide Standalone.txt +4 -0
  35. data/doc/images/glyphicons-halflings-white.png +0 -0
  36. data/doc/images/glyphicons-halflings.png +0 -0
  37. data/doc/images/phusion_banner_small.png +0 -0
  38. data/doc/images/{smart-lv2.png → smart.png} +0 -0
  39. data/doc/images/{smart-lv2.svg → smart.svg} +0 -0
  40. data/doc/templates/bootstrap.min.css +397 -0
  41. data/doc/templates/markdown.html.erb +117 -0
  42. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +2 -1
  43. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +26 -48
  44. data/doc/users_guide_snippets/passenger_spawn_method.txt +18 -30
  45. data/doc/users_guide_snippets/support_information.txt +30 -0
  46. data/ext/apache2/Bucket.cpp +9 -26
  47. data/ext/apache2/Bucket.h +13 -10
  48. data/ext/apache2/Configuration.cpp +70 -58
  49. data/ext/apache2/Configuration.hpp +19 -47
  50. data/ext/apache2/DirectoryMapper.h +7 -7
  51. data/ext/apache2/Hooks.cpp +150 -313
  52. data/ext/boost/algorithm/string/detail/case_conv.hpp +4 -2
  53. data/ext/boost/algorithm/string/detail/find_format.hpp +20 -20
  54. data/ext/boost/algorithm/string/detail/find_format_all.hpp +23 -23
  55. data/ext/boost/algorithm/string/detail/find_format_store.hpp +2 -2
  56. data/ext/boost/algorithm/string/detail/formatter.hpp +25 -0
  57. data/ext/boost/algorithm/string/formatter.hpp +20 -3
  58. data/ext/boost/assert.hpp +85 -4
  59. data/ext/boost/bind/bind.hpp +1 -1
  60. data/ext/boost/concept/detail/backward_compatibility.hpp +1 -1
  61. data/ext/boost/concept_check.hpp +140 -64
  62. data/ext/boost/config.hpp +1 -1
  63. data/ext/boost/config/auto_link.hpp +8 -6
  64. data/ext/boost/config/compiler/borland.hpp +12 -2
  65. data/ext/boost/config/compiler/clang.hpp +89 -30
  66. data/ext/boost/config/compiler/codegear.hpp +3 -2
  67. data/ext/boost/config/compiler/common_edg.hpp +7 -5
  68. data/ext/boost/config/compiler/cray.hpp +61 -0
  69. data/ext/boost/config/compiler/digitalmars.hpp +9 -1
  70. data/ext/boost/config/compiler/gcc.hpp +33 -24
  71. data/ext/boost/config/compiler/gcc_xml.hpp +4 -0
  72. data/ext/boost/config/compiler/hp_acc.hpp +12 -1
  73. data/ext/boost/config/compiler/intel.hpp +78 -4
  74. data/ext/boost/config/compiler/metrowerks.hpp +4 -1
  75. data/ext/boost/config/compiler/mpw.hpp +4 -1
  76. data/ext/boost/config/compiler/nvcc.hpp +8 -66
  77. data/ext/boost/config/compiler/pathscale.hpp +80 -0
  78. data/ext/boost/config/compiler/pgi.hpp +5 -5
  79. data/ext/boost/config/compiler/sunpro_cc.hpp +4 -1
  80. data/ext/boost/config/compiler/vacpp.hpp +37 -13
  81. data/ext/boost/config/compiler/visualc.hpp +24 -11
  82. data/ext/boost/config/platform/bsd.hpp +1 -1
  83. data/ext/boost/config/platform/cray.hpp +18 -0
  84. data/ext/boost/config/platform/cygwin.hpp +10 -0
  85. data/ext/boost/config/platform/linux.hpp +5 -0
  86. data/ext/boost/config/platform/macos.hpp +5 -4
  87. data/ext/boost/config/platform/symbian.hpp +5 -2
  88. data/ext/boost/config/platform/vms.hpp +25 -0
  89. data/ext/boost/config/platform/win32.hpp +7 -1
  90. data/ext/boost/config/select_compiler_config.hpp +8 -25
  91. data/ext/boost/config/select_platform_config.hpp +8 -1
  92. data/ext/boost/config/select_stdlib_config.hpp +9 -1
  93. data/ext/boost/config/stdlib/dinkumware.hpp +6 -9
  94. data/ext/boost/config/stdlib/libcomo.hpp +1 -4
  95. data/ext/boost/config/stdlib/libcpp.hpp +36 -0
  96. data/ext/boost/config/stdlib/libstdcpp3.hpp +37 -11
  97. data/ext/boost/config/stdlib/modena.hpp +1 -4
  98. data/ext/boost/config/stdlib/msl.hpp +1 -4
  99. data/ext/boost/config/stdlib/roguewave.hpp +9 -6
  100. data/ext/boost/config/stdlib/sgi.hpp +12 -4
  101. data/ext/boost/config/stdlib/stlport.hpp +11 -4
  102. data/ext/boost/config/stdlib/vacpp.hpp +11 -4
  103. data/ext/boost/config/suffix.hpp +71 -6
  104. data/ext/boost/config/warning_disable.hpp +1 -1
  105. data/ext/boost/container/container_fwd.hpp +177 -0
  106. data/ext/boost/cstdint.hpp +17 -12
  107. data/ext/boost/current_function.hpp +2 -1
  108. data/ext/boost/date_time/c_time.hpp +17 -1
  109. data/ext/boost/date_time/compiler_config.hpp +13 -15
  110. data/ext/boost/date_time/date_formatting.hpp +7 -1
  111. data/ext/boost/date_time/filetime_functions.hpp +4 -4
  112. data/ext/boost/date_time/gregorian_calendar.ipp +2 -2
  113. data/ext/boost/date_time/strings_from_facet.hpp +3 -3
  114. data/ext/boost/date_time/time_facet.hpp +101 -101
  115. data/ext/boost/detail/endian.hpp +4 -2
  116. data/ext/boost/detail/fenv.hpp +74 -0
  117. data/ext/boost/detail/sp_typeinfo.hpp +6 -0
  118. data/ext/boost/exception/detail/clone_current_exception.hpp +47 -0
  119. data/ext/boost/exception/detail/exception_ptr.hpp +194 -122
  120. data/ext/boost/exception/detail/type_info.hpp +3 -3
  121. data/ext/boost/exception/diagnostic_information.hpp +37 -21
  122. data/ext/boost/exception/exception.hpp +21 -1
  123. data/ext/boost/exception/info.hpp +0 -1
  124. data/ext/boost/function.hpp +2 -2
  125. data/ext/boost/function/function_base.hpp +15 -9
  126. data/ext/boost/function/function_template.hpp +26 -48
  127. data/ext/boost/integer_fwd.hpp +0 -16
  128. data/ext/boost/integer_traits.hpp +2 -2
  129. data/ext/boost/iterator.hpp +1 -1
  130. data/ext/boost/iterator/iterator_adaptor.hpp +1 -7
  131. data/ext/boost/iterator/iterator_facade.hpp +13 -13
  132. data/ext/boost/iterator/transform_iterator.hpp +5 -20
  133. data/ext/boost/lexical_cast.hpp +1655 -673
  134. data/ext/boost/math/policies/policy.hpp +982 -0
  135. data/ext/boost/math/special_functions/detail/fp_traits.hpp +570 -0
  136. data/ext/boost/math/special_functions/detail/round_fwd.hpp +80 -0
  137. data/ext/boost/math/special_functions/fpclassify.hpp +533 -0
  138. data/ext/boost/math/special_functions/math_fwd.hpp +1070 -0
  139. data/ext/boost/math/special_functions/sign.hpp +145 -0
  140. data/ext/boost/math/tools/config.hpp +321 -0
  141. data/ext/boost/math/tools/promotion.hpp +150 -0
  142. data/ext/boost/math/tools/real_cast.hpp +29 -0
  143. data/ext/boost/math/tools/user.hpp +97 -0
  144. data/ext/boost/move/move.hpp +1222 -0
  145. data/ext/boost/mpl/O1_size.hpp +40 -0
  146. data/ext/boost/mpl/O1_size_fwd.hpp +24 -0
  147. data/ext/boost/mpl/advance.hpp +76 -0
  148. data/ext/boost/mpl/advance_fwd.hpp +28 -0
  149. data/ext/boost/mpl/at.hpp +52 -0
  150. data/ext/boost/mpl/at_fwd.hpp +24 -0
  151. data/ext/boost/mpl/aux_/O1_size_impl.hpp +87 -0
  152. data/ext/boost/mpl/aux_/advance_backward.hpp +128 -0
  153. data/ext/boost/mpl/aux_/advance_forward.hpp +127 -0
  154. data/ext/boost/mpl/aux_/arithmetic_op.hpp +92 -0
  155. data/ext/boost/mpl/aux_/at_impl.hpp +45 -0
  156. data/ext/boost/mpl/aux_/begin_end_impl.hpp +101 -0
  157. data/ext/boost/mpl/aux_/clear_impl.hpp +35 -0
  158. data/ext/boost/mpl/aux_/comparison_op.hpp +83 -0
  159. data/ext/boost/mpl/aux_/config/forwarding.hpp +27 -0
  160. data/ext/boost/mpl/aux_/config/typeof.hpp +38 -0
  161. data/ext/boost/mpl/aux_/contains_impl.hpp +61 -0
  162. data/ext/boost/mpl/aux_/find_if_pred.hpp +31 -0
  163. data/ext/boost/mpl/aux_/fold_impl.hpp +43 -0
  164. data/ext/boost/mpl/aux_/has_begin.hpp +23 -0
  165. data/ext/boost/mpl/aux_/has_size.hpp +23 -0
  166. data/ext/boost/mpl/aux_/has_tag.hpp +23 -0
  167. data/ext/boost/mpl/aux_/inserter_algorithm.hpp +159 -0
  168. data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +64 -0
  169. data/ext/boost/mpl/aux_/iter_apply.hpp +47 -0
  170. data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +210 -0
  171. data/ext/boost/mpl/aux_/iter_fold_impl.hpp +42 -0
  172. data/ext/boost/mpl/aux_/lambda_spec.hpp +49 -0
  173. data/ext/boost/mpl/aux_/largest_int.hpp +63 -0
  174. data/ext/boost/mpl/aux_/msvc_eti_base.hpp +77 -0
  175. data/ext/boost/mpl/aux_/msvc_type.hpp +62 -0
  176. data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +77 -0
  177. data/ext/boost/mpl/aux_/numeric_op.hpp +315 -0
  178. data/ext/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp +97 -0
  179. data/ext/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp +97 -0
  180. data/ext/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp +94 -0
  181. data/ext/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp +180 -0
  182. data/ext/boost/mpl/aux_/preprocessed/gcc/greater.hpp +94 -0
  183. data/ext/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp +94 -0
  184. data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp +133 -0
  185. data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp +180 -0
  186. data/ext/boost/mpl/aux_/preprocessed/gcc/less.hpp +94 -0
  187. data/ext/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp +94 -0
  188. data/ext/boost/mpl/aux_/preprocessed/gcc/list.hpp +323 -0
  189. data/ext/boost/mpl/aux_/preprocessed/gcc/minus.hpp +146 -0
  190. data/ext/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp +94 -0
  191. data/ext/boost/mpl/aux_/preprocessed/gcc/plus.hpp +146 -0
  192. data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +231 -0
  193. data/ext/boost/mpl/aux_/preprocessed/gcc/times.hpp +146 -0
  194. data/ext/boost/mpl/aux_/preprocessed/gcc/vector.hpp +323 -0
  195. data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +67 -0
  196. data/ext/boost/mpl/aux_/push_back_impl.hpp +70 -0
  197. data/ext/boost/mpl/aux_/push_front_impl.hpp +71 -0
  198. data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +44 -0
  199. data/ext/boost/mpl/aux_/size_impl.hpp +52 -0
  200. data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +63 -0
  201. data/ext/boost/mpl/back_fwd.hpp +24 -0
  202. data/ext/boost/mpl/back_inserter.hpp +34 -0
  203. data/ext/boost/mpl/begin_end.hpp +57 -0
  204. data/ext/boost/mpl/begin_end_fwd.hpp +27 -0
  205. data/ext/boost/mpl/clear.hpp +39 -0
  206. data/ext/boost/mpl/clear_fwd.hpp +24 -0
  207. data/ext/boost/mpl/comparison.hpp +24 -0
  208. data/ext/boost/mpl/contains.hpp +41 -0
  209. data/ext/boost/mpl/contains_fwd.hpp +25 -0
  210. data/ext/boost/mpl/deref.hpp +41 -0
  211. data/ext/boost/mpl/distance.hpp +78 -0
  212. data/ext/boost/mpl/distance_fwd.hpp +28 -0
  213. data/ext/boost/mpl/empty_fwd.hpp +24 -0
  214. data/ext/boost/mpl/equal_to.hpp +21 -0
  215. data/ext/boost/mpl/find.hpp +38 -0
  216. data/ext/boost/mpl/find_if.hpp +50 -0
  217. data/ext/boost/mpl/fold.hpp +48 -0
  218. data/ext/boost/mpl/front_fwd.hpp +24 -0
  219. data/ext/boost/mpl/front_inserter.hpp +33 -0
  220. data/ext/boost/mpl/greater.hpp +21 -0
  221. data/ext/boost/mpl/greater_equal.hpp +21 -0
  222. data/ext/boost/mpl/inserter.hpp +32 -0
  223. data/ext/boost/mpl/iter_fold.hpp +49 -0
  224. data/ext/boost/mpl/iter_fold_if.hpp +117 -0
  225. data/ext/boost/mpl/iterator_range.hpp +42 -0
  226. data/ext/boost/mpl/iterator_tags.hpp +27 -0
  227. data/ext/boost/mpl/less.hpp +21 -0
  228. data/ext/boost/mpl/less_equal.hpp +21 -0
  229. data/ext/boost/mpl/limits/list.hpp +21 -0
  230. data/ext/boost/mpl/limits/vector.hpp +21 -0
  231. data/ext/boost/mpl/list.hpp +57 -0
  232. data/ext/boost/mpl/list/aux_/O1_size.hpp +33 -0
  233. data/ext/boost/mpl/list/aux_/begin_end.hpp +44 -0
  234. data/ext/boost/mpl/list/aux_/clear.hpp +34 -0
  235. data/ext/boost/mpl/list/aux_/empty.hpp +34 -0
  236. data/ext/boost/mpl/list/aux_/front.hpp +33 -0
  237. data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +35 -0
  238. data/ext/boost/mpl/list/aux_/item.hpp +55 -0
  239. data/ext/boost/mpl/list/aux_/iterator.hpp +76 -0
  240. data/ext/boost/mpl/list/aux_/pop_front.hpp +34 -0
  241. data/ext/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +149 -0
  242. data/ext/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +169 -0
  243. data/ext/boost/mpl/list/aux_/push_back.hpp +36 -0
  244. data/ext/boost/mpl/list/aux_/push_front.hpp +39 -0
  245. data/ext/boost/mpl/list/aux_/size.hpp +33 -0
  246. data/ext/boost/mpl/list/aux_/tag.hpp +24 -0
  247. data/ext/boost/mpl/list/list0.hpp +42 -0
  248. data/ext/boost/mpl/list/list10.hpp +43 -0
  249. data/ext/boost/mpl/list/list20.hpp +43 -0
  250. data/ext/boost/mpl/long.hpp +22 -0
  251. data/ext/boost/mpl/long_fwd.hpp +27 -0
  252. data/ext/boost/mpl/minus.hpp +21 -0
  253. data/ext/boost/mpl/multiplies.hpp +53 -0
  254. data/ext/boost/mpl/negate.hpp +81 -0
  255. data/ext/boost/mpl/not_equal_to.hpp +21 -0
  256. data/ext/boost/mpl/numeric_cast.hpp +41 -0
  257. data/ext/boost/mpl/pair.hpp +70 -0
  258. data/ext/boost/mpl/plus.hpp +21 -0
  259. data/ext/boost/mpl/pop_back_fwd.hpp +24 -0
  260. data/ext/boost/mpl/pop_front_fwd.hpp +24 -0
  261. data/ext/boost/mpl/prior.hpp +19 -0
  262. data/ext/boost/mpl/push_back.hpp +53 -0
  263. data/ext/boost/mpl/push_back_fwd.hpp +24 -0
  264. data/ext/boost/mpl/push_front.hpp +52 -0
  265. data/ext/boost/mpl/push_front_fwd.hpp +24 -0
  266. data/ext/boost/mpl/remove_if.hpp +83 -0
  267. data/ext/boost/mpl/reverse_fold.hpp +50 -0
  268. data/ext/boost/mpl/same_as.hpp +55 -0
  269. data/ext/boost/mpl/sequence_tag.hpp +124 -0
  270. data/ext/boost/mpl/sequence_tag_fwd.hpp +26 -0
  271. data/ext/boost/mpl/size.hpp +42 -0
  272. data/ext/boost/mpl/size_fwd.hpp +24 -0
  273. data/ext/boost/mpl/tag.hpp +52 -0
  274. data/ext/boost/mpl/times.hpp +21 -0
  275. data/ext/boost/mpl/vector.hpp +57 -0
  276. data/ext/boost/mpl/vector/aux_/O1_size.hpp +56 -0
  277. data/ext/boost/mpl/vector/aux_/at.hpp +116 -0
  278. data/ext/boost/mpl/vector/aux_/back.hpp +59 -0
  279. data/ext/boost/mpl/vector/aux_/begin_end.hpp +49 -0
  280. data/ext/boost/mpl/vector/aux_/clear.hpp +55 -0
  281. data/ext/boost/mpl/vector/aux_/empty.hpp +68 -0
  282. data/ext/boost/mpl/vector/aux_/front.hpp +56 -0
  283. data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +55 -0
  284. data/ext/boost/mpl/vector/aux_/item.hpp +103 -0
  285. data/ext/boost/mpl/vector/aux_/iterator.hpp +130 -0
  286. data/ext/boost/mpl/vector/aux_/pop_back.hpp +40 -0
  287. data/ext/boost/mpl/vector/aux_/pop_front.hpp +40 -0
  288. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +829 -0
  289. data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +1144 -0
  290. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +139 -0
  291. data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +159 -0
  292. data/ext/boost/mpl/vector/aux_/push_back.hpp +40 -0
  293. data/ext/boost/mpl/vector/aux_/push_front.hpp +40 -0
  294. data/ext/boost/mpl/vector/aux_/size.hpp +49 -0
  295. data/ext/boost/mpl/vector/aux_/tag.hpp +32 -0
  296. data/ext/boost/mpl/vector/aux_/vector0.hpp +52 -0
  297. data/ext/boost/mpl/vector/vector0.hpp +34 -0
  298. data/ext/boost/mpl/vector/vector10.hpp +45 -0
  299. data/ext/boost/mpl/vector/vector20.hpp +45 -0
  300. data/ext/boost/none.hpp +1 -1
  301. data/ext/boost/numeric/conversion/bounds.hpp +24 -0
  302. data/ext/boost/numeric/conversion/cast.hpp +61 -0
  303. data/ext/boost/numeric/conversion/conversion_traits.hpp +39 -0
  304. data/ext/boost/numeric/conversion/converter.hpp +68 -0
  305. data/ext/boost/numeric/conversion/converter_policies.hpp +186 -0
  306. data/ext/boost/numeric/conversion/detail/bounds.hpp +58 -0
  307. data/ext/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
  308. data/ext/boost/numeric/conversion/detail/converter.hpp +602 -0
  309. data/ext/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
  310. data/ext/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
  311. data/ext/boost/numeric/conversion/detail/meta.hpp +120 -0
  312. data/ext/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
  313. data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
  314. data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
  315. data/ext/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
  316. data/ext/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
  317. data/ext/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
  318. data/ext/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
  319. data/ext/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
  320. data/ext/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
  321. data/ext/boost/operators.hpp +3 -1
  322. data/ext/boost/optional/optional.hpp +146 -79
  323. data/ext/boost/optional/optional_fwd.hpp +8 -1
  324. data/ext/boost/preprocessor/cat.hpp +2 -2
  325. data/ext/boost/preprocessor/config/config.hpp +39 -4
  326. data/ext/boost/preprocessor/facilities/intercept.hpp +277 -0
  327. data/ext/boost/preprocessor/facilities/overload.hpp +25 -0
  328. data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +3 -3
  329. data/ext/boost/preprocessor/iteration/iterate.hpp +3 -3
  330. data/ext/boost/preprocessor/punctuation/paren.hpp +23 -0
  331. data/ext/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
  332. data/ext/boost/preprocessor/seq/cat.hpp +5 -4
  333. data/ext/boost/preprocessor/seq/size.hpp +0 -1
  334. data/ext/boost/preprocessor/tuple/eat.hpp +83 -34
  335. data/ext/boost/preprocessor/tuple/elem.hpp +161 -355
  336. data/ext/boost/preprocessor/tuple/rem.hpp +110 -48
  337. data/ext/boost/preprocessor/tuple/to_list.hpp +90 -36
  338. data/ext/boost/preprocessor/variadic/elem.hpp +94 -0
  339. data/ext/boost/preprocessor/variadic/size.hpp +30 -0
  340. data/ext/boost/range/begin.hpp +17 -6
  341. data/ext/boost/range/concepts.hpp +37 -2
  342. data/ext/boost/range/detail/safe_bool.hpp +72 -0
  343. data/ext/boost/range/end.hpp +14 -9
  344. data/ext/boost/range/iterator_range_core.hpp +120 -12
  345. data/ext/boost/range/size.hpp +21 -5
  346. data/ext/boost/smart_ptr/detail/shared_count.hpp +88 -0
  347. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -0
  348. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +142 -0
  349. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +9 -0
  350. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +10 -2
  351. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +5 -1
  352. data/ext/boost/smart_ptr/detail/spinlock.hpp +4 -1
  353. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +20 -3
  354. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +4 -0
  355. data/ext/boost/smart_ptr/make_shared.hpp +591 -22
  356. data/ext/boost/smart_ptr/shared_array.hpp +29 -1
  357. data/ext/boost/smart_ptr/shared_ptr.hpp +29 -13
  358. data/ext/boost/smart_ptr/weak_ptr.hpp +24 -12
  359. data/ext/boost/src/pthread/once.cpp +9 -7
  360. data/ext/boost/src/pthread/thread.cpp +32 -28
  361. data/ext/boost/src/pthread/timeconv.inl +4 -5
  362. data/ext/boost/src/tss_null.cpp +5 -1
  363. data/ext/boost/static_assert.hpp +8 -2
  364. data/ext/boost/thread/detail/config.hpp +19 -4
  365. data/ext/boost/thread/detail/move.hpp +11 -5
  366. data/ext/boost/thread/detail/thread.hpp +59 -43
  367. data/ext/boost/thread/exceptions.hpp +9 -9
  368. data/ext/boost/thread/future.hpp +150 -82
  369. data/ext/boost/thread/locks.hpp +101 -60
  370. data/ext/boost/thread/pthread/condition_variable.hpp +79 -32
  371. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +12 -3
  372. data/ext/boost/thread/pthread/mutex.hpp +17 -14
  373. data/ext/boost/thread/pthread/once.hpp +3 -4
  374. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +12 -2
  375. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -19
  376. data/ext/boost/thread/pthread/shared_mutex.hpp +13 -13
  377. data/ext/boost/thread/pthread/thread_data.hpp +40 -12
  378. data/ext/boost/thread/thread_time.hpp +5 -0
  379. data/ext/boost/throw_exception.hpp +1 -1
  380. data/ext/boost/token_functions.hpp +34 -10
  381. data/ext/boost/type_traits/add_rvalue_reference.hpp +66 -0
  382. data/ext/boost/type_traits/alignment_of.hpp +1 -1
  383. data/ext/boost/type_traits/detail/bool_trait_def.hpp +26 -3
  384. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +3 -2
  385. data/ext/boost/type_traits/detail/cv_traits_impl.hpp +1 -1
  386. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +6 -4
  387. data/ext/boost/type_traits/detail/type_trait_def.hpp +8 -2
  388. data/ext/boost/type_traits/function_traits.hpp +1 -1
  389. data/ext/boost/type_traits/has_nothrow_constructor.hpp +53 -0
  390. data/ext/boost/type_traits/has_nothrow_copy.hpp +19 -5
  391. data/ext/boost/type_traits/has_trivial_constructor.hpp +51 -0
  392. data/ext/boost/type_traits/has_trivial_copy.hpp +20 -5
  393. data/ext/boost/type_traits/has_trivial_destructor.hpp +12 -5
  394. data/ext/boost/type_traits/intrinsics.hpp +119 -71
  395. data/ext/boost/type_traits/is_const.hpp +5 -5
  396. data/ext/boost/type_traits/is_convertible.hpp +14 -13
  397. data/ext/boost/type_traits/is_enum.hpp +1 -1
  398. data/ext/boost/type_traits/is_floating_point.hpp +27 -0
  399. data/ext/boost/type_traits/is_function.hpp +3 -3
  400. data/ext/boost/type_traits/is_fundamental.hpp +1 -1
  401. data/ext/boost/type_traits/is_member_function_pointer.hpp +2 -2
  402. data/ext/boost/type_traits/is_member_pointer.hpp +2 -2
  403. data/ext/boost/type_traits/is_pod.hpp +11 -3
  404. data/ext/boost/type_traits/is_pointer.hpp +2 -2
  405. data/ext/boost/type_traits/is_signed.hpp +8 -3
  406. data/ext/boost/type_traits/is_union.hpp +8 -0
  407. data/ext/boost/type_traits/is_unsigned.hpp +9 -4
  408. data/ext/boost/type_traits/is_volatile.hpp +5 -5
  409. data/ext/boost/type_traits/remove_cv.hpp +4 -3
  410. data/ext/boost/type_traits/remove_pointer.hpp +51 -2
  411. data/ext/boost/type_traits/remove_reference.hpp +2 -2
  412. data/ext/boost/type_traits/type_with_alignment.hpp +8 -2
  413. data/ext/boost/utility/declval.hpp +44 -0
  414. data/ext/boost/utility/detail/in_place_factory_prefix.hpp +36 -0
  415. data/ext/boost/utility/detail/in_place_factory_suffix.hpp +23 -0
  416. data/ext/boost/utility/detail/result_of_iterate.hpp +142 -0
  417. data/ext/boost/utility/in_place_factory.hpp +88 -0
  418. data/ext/boost/utility/result_of.hpp +103 -0
  419. data/ext/boost/utility/swap.hpp +55 -0
  420. data/ext/common/AnsiColorConstants.h +36 -0
  421. data/ext/common/ApplicationPool2/Common.h +87 -0
  422. data/ext/common/ApplicationPool2/ComponentInfo.h +53 -0
  423. data/ext/common/ApplicationPool2/Group.h +648 -0
  424. data/ext/common/ApplicationPool2/Implementation.cpp +580 -0
  425. data/ext/common/ApplicationPool2/Options.h +576 -0
  426. data/ext/common/ApplicationPool2/PipeWatcher.h +61 -0
  427. data/ext/common/ApplicationPool2/Pool.h +1181 -0
  428. data/ext/common/ApplicationPool2/Process.h +425 -0
  429. data/ext/common/ApplicationPool2/README.md +96 -0
  430. data/ext/common/ApplicationPool2/Session.h +158 -0
  431. data/ext/common/ApplicationPool2/Socket.h +246 -0
  432. data/ext/common/ApplicationPool2/Spawner.h +2212 -0
  433. data/ext/common/ApplicationPool2/SuperGroup.h +749 -0
  434. data/ext/common/BackgroundEventLoop.cpp +129 -0
  435. data/ext/common/BackgroundEventLoop.h +61 -0
  436. data/ext/common/Constants.h +3 -1
  437. data/ext/common/EventedBufferedInput.h +331 -0
  438. data/ext/common/EventedMessageServer.h +17 -34
  439. data/ext/common/EventedServer.h +2 -2
  440. data/ext/common/Exceptions.h +71 -19
  441. data/ext/common/FileDescriptor.h +8 -6
  442. data/ext/common/HttpConstants.h +167 -0
  443. data/ext/common/IniFile.h +24 -0
  444. data/ext/common/Logging.h +62 -849
  445. data/ext/common/MessageReadersWriters.h +19 -0
  446. data/ext/common/MessageServer.h +11 -14
  447. data/ext/common/MultiLibeio.cpp +198 -0
  448. data/ext/common/MultiLibeio.h +67 -0
  449. data/ext/common/ResourceLocator.h +24 -41
  450. data/ext/common/SafeLibev.h +186 -14
  451. data/ext/common/StaticString.h +23 -3
  452. data/ext/common/UnionStation.h +972 -0
  453. data/ext/common/Utils.cpp +168 -24
  454. data/ext/common/Utils.h +25 -3
  455. data/ext/common/Utils/CachedFileStat.hpp +4 -3
  456. data/ext/common/Utils/FileChangeChecker.h +2 -2
  457. data/ext/common/Utils/HashMap.h +50 -0
  458. data/ext/common/Utils/IOUtils.cpp +229 -68
  459. data/ext/common/Utils/IOUtils.h +134 -3
  460. data/ext/common/Utils/Lock.h +28 -0
  461. data/ext/common/Utils/MemoryBarrier.h +52 -0
  462. data/ext/common/Utils/PriorityQueue.h +54 -0
  463. data/ext/common/Utils/ProcessMetricsCollector.h +9 -11
  464. data/ext/common/Utils/ScopeGuard.h +50 -1
  465. data/ext/common/Utils/SmallVector.h +653 -0
  466. data/ext/common/Utils/StrIntUtils.cpp +26 -2
  467. data/ext/common/Utils/StrIntUtils.h +18 -2
  468. data/ext/common/Utils/StringMap.h +125 -8
  469. data/ext/common/Utils/Template.h +212 -0
  470. data/ext/common/Utils/fib.c +699 -0
  471. data/ext/common/Utils/fib.h +101 -0
  472. data/ext/common/Utils/fibpriv.h +67 -0
  473. data/ext/common/Utils/json-forwards.h +249 -0
  474. data/ext/common/Utils/json.h +1855 -0
  475. data/ext/common/Utils/jsoncpp.cpp +4230 -0
  476. data/ext/common/agents/Base.cpp +1126 -0
  477. data/ext/common/{AgentBase.h → agents/Base.h} +5 -1
  478. data/ext/common/agents/EnvPrinter.c +16 -0
  479. data/ext/common/agents/HelperAgent/AgentOptions.h +81 -0
  480. data/ext/common/{HelperAgent → agents/HelperAgent}/BacktracesServer.h +3 -2
  481. data/ext/common/agents/HelperAgent/FileBackedPipe.h +732 -0
  482. data/ext/common/agents/HelperAgent/Main.cpp +497 -0
  483. data/ext/common/agents/HelperAgent/RequestHandler.cpp +283 -0
  484. data/ext/common/agents/HelperAgent/RequestHandler.h +2139 -0
  485. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +451 -0
  486. data/ext/common/{LoggingAgent → agents/LoggingAgent}/DataStoreId.h +1 -1
  487. data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.cpp +1 -1
  488. data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.h +0 -0
  489. data/ext/common/{LoggingAgent → agents/LoggingAgent}/LoggingServer.h +18 -16
  490. data/ext/common/{LoggingAgent → agents/LoggingAgent}/Main.cpp +15 -13
  491. data/ext/common/{LoggingAgent → agents/LoggingAgent}/RemoteSender.h +6 -6
  492. data/ext/common/agents/SpawnPreparer.cpp +127 -0
  493. data/ext/common/{Watchdog.cpp → agents/Watchdog/Main.cpp} +63 -25
  494. data/ext/libeio/Changes +72 -0
  495. data/ext/{google/COPYING → libeio/LICENSE} +17 -9
  496. data/ext/libeio/Makefile.am +15 -0
  497. data/ext/libeio/Makefile.in +694 -0
  498. data/ext/libeio/aclocal.m4 +9418 -0
  499. data/ext/libeio/autogen.sh +3 -0
  500. data/ext/libeio/config.guess +1501 -0
  501. data/ext/libeio/config.h.in +136 -0
  502. data/ext/libeio/config.sub +1705 -0
  503. data/ext/libeio/configure +14822 -0
  504. data/ext/libeio/configure.ac +22 -0
  505. data/ext/libeio/demo.c +194 -0
  506. data/ext/libeio/ecb.h +457 -0
  507. data/ext/libeio/eio.c +2816 -0
  508. data/ext/libeio/eio.h +411 -0
  509. data/ext/libeio/install-sh +520 -0
  510. data/ext/libeio/libeio.m4 +211 -0
  511. data/ext/libeio/ltmain.sh +9636 -0
  512. data/ext/libeio/missing +376 -0
  513. data/ext/libeio/xthread.h +166 -0
  514. data/ext/libev/Changes +125 -7
  515. data/ext/libev/Makefile.am +5 -3
  516. data/ext/libev/Makefile.in +209 -120
  517. data/ext/libev/aclocal.m4 +6027 -4619
  518. data/ext/libev/autogen.sh +1 -4
  519. data/ext/libev/config.h.in +11 -7
  520. data/ext/libev/configure +7312 -14993
  521. data/ext/libev/configure.ac +12 -5
  522. data/ext/libev/depcomp +630 -0
  523. data/ext/libev/ev++.h +48 -32
  524. data/ext/libev/ev.c +1173 -391
  525. data/ext/libev/ev.h +315 -181
  526. data/ext/libev/ev_epoll.c +66 -15
  527. data/ext/libev/ev_kqueue.c +20 -18
  528. data/ext/libev/ev_poll.c +27 -23
  529. data/ext/libev/ev_port.c +39 -19
  530. data/ext/libev/ev_select.c +23 -17
  531. data/ext/libev/ev_vars.h +25 -8
  532. data/ext/libev/ev_win32.c +6 -6
  533. data/ext/libev/ev_wrap.h +22 -2
  534. data/ext/libev/event.c +18 -17
  535. data/ext/libev/event.h +16 -4
  536. data/ext/libev/libev.m4 +10 -6
  537. data/ext/libev/ltmain.sh +7353 -5811
  538. data/ext/nginx/Configuration.c +74 -42
  539. data/ext/nginx/Configuration.h +3 -5
  540. data/ext/nginx/ContentHandler.c +26 -83
  541. data/ext/nginx/ContentHandler.h +1 -1
  542. data/ext/nginx/config +13 -9
  543. data/ext/nginx/ngx_http_passenger_module.c +3 -7
  544. data/ext/oxt/detail/backtrace_enabled.hpp +5 -102
  545. data/ext/oxt/detail/context.hpp +90 -0
  546. data/ext/oxt/detail/spin_lock_darwin.hpp +4 -0
  547. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +4 -0
  548. data/ext/oxt/detail/spin_lock_pthreads.hpp +14 -0
  549. data/ext/oxt/detail/tracable_exception_enabled.hpp +2 -2
  550. data/ext/oxt/dynamic_thread_group.hpp +27 -1
  551. data/ext/oxt/implementation.cpp +415 -0
  552. data/ext/oxt/{thread.cpp → initialize.hpp} +13 -6
  553. data/ext/oxt/macros.hpp +32 -1
  554. data/ext/oxt/spin_lock.hpp +6 -11
  555. data/ext/oxt/system_calls.cpp +204 -16
  556. data/ext/oxt/system_calls.hpp +85 -45
  557. data/ext/oxt/thread.hpp +13 -117
  558. data/ext/ruby/passenger_native_support.c +82 -237
  559. data/helper-scripts/backtrace-sanitizer.rb +114 -0
  560. data/helper-scripts/classic-rails-loader.rb +135 -0
  561. data/helper-scripts/classic-rails-preloader.rb +161 -0
  562. data/helper-scripts/node-loader.js +314 -0
  563. data/helper-scripts/rack-loader.rb +104 -0
  564. data/helper-scripts/rack-preloader.rb +132 -0
  565. data/helper-scripts/wsgi-loader.py +231 -0
  566. data/helper-scripts/wsgi-preloader.py +1 -0
  567. data/lib/phusion_passenger.rb +159 -61
  568. data/lib/phusion_passenger/abstract_installer.rb +182 -87
  569. data/lib/phusion_passenger/admin_tools/server_instance.rb +25 -19
  570. data/lib/phusion_passenger/analytics_logger.rb +5 -4
  571. data/lib/phusion_passenger/classic_rails/{request_handler.rb → thread_handler_extension.rb} +4 -40
  572. data/lib/phusion_passenger/classic_rails_extensions/init.rb +5 -3
  573. data/lib/phusion_passenger/common_library.rb +441 -0
  574. data/lib/phusion_passenger/console_text_template.rb +4 -16
  575. data/lib/phusion_passenger/constants.rb +1 -8
  576. data/lib/phusion_passenger/debug_logging.rb +5 -2
  577. data/lib/phusion_passenger/dependencies.rb +51 -13
  578. data/lib/phusion_passenger/loader_shared_helpers.rb +318 -0
  579. data/lib/phusion_passenger/message_channel.rb +3 -47
  580. data/lib/phusion_passenger/message_client.rb +2 -2
  581. data/lib/phusion_passenger/native_support.rb +36 -15
  582. data/lib/phusion_passenger/packaging.rb +8 -11
  583. data/lib/phusion_passenger/platform_info.rb +25 -17
  584. data/lib/phusion_passenger/platform_info/apache.rb +10 -7
  585. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +10 -30
  586. data/lib/phusion_passenger/platform_info/compiler.rb +93 -34
  587. data/lib/phusion_passenger/platform_info/ruby.rb +37 -97
  588. data/lib/phusion_passenger/preloader_shared_helpers.rb +121 -0
  589. data/lib/phusion_passenger/public_api.rb +1 -4
  590. data/lib/phusion_passenger/rack/{request_handler.rb → thread_handler_extension.rb} +14 -63
  591. data/lib/phusion_passenger/rails3_extensions/init.rb +9 -8
  592. data/lib/phusion_passenger/request_handler.rb +500 -0
  593. data/lib/phusion_passenger/request_handler/thread_handler.rb +360 -0
  594. data/lib/phusion_passenger/ruby_core_enhancements.rb +142 -0
  595. data/lib/phusion_passenger/standalone/command.rb +36 -15
  596. data/lib/phusion_passenger/standalone/package_runtime_command.rb +16 -8
  597. data/lib/phusion_passenger/standalone/runtime_installer.rb +169 -72
  598. data/lib/phusion_passenger/standalone/start_command.rb +44 -39
  599. data/lib/phusion_passenger/standalone/utils.rb +5 -5
  600. data/lib/phusion_passenger/utils.rb +35 -914
  601. data/lib/phusion_passenger/utils/ansi_colors.rb +59 -0
  602. data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
  603. data/lib/phusion_passenger/utils/robust_interruption.rb +134 -0
  604. data/lib/phusion_passenger/utils/tee_input.rb +174 -0
  605. data/lib/phusion_passenger/utils/tmpio.rb +33 -0
  606. data/lib/phusion_passenger/utils/unseekable_socket.rb +6 -0
  607. data/resources/mime.types +5 -1
  608. data/{lib/phusion_passenger/templates → resources}/standalone_default_root/index.html +0 -0
  609. data/{lib/phusion_passenger → resources}/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
  610. data/{lib/phusion_passenger → resources}/templates/apache2/config_snippets.txt.erb +0 -0
  611. data/{lib/phusion_passenger → resources}/templates/apache2/deployment_example.txt.erb +0 -0
  612. data/{lib/phusion_passenger → resources}/templates/apache2/no_write_permission_to_passenger_root.txt.erb +0 -0
  613. data/{lib/phusion_passenger → resources}/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  614. data/{lib/phusion_passenger → resources}/templates/apache2/run_installer_as_root.txt.erb +0 -0
  615. data/{lib/phusion_passenger → resources}/templates/apache2/welcome.txt.erb +0 -0
  616. data/{lib/phusion_passenger → resources}/templates/error_layout.css +6 -0
  617. data/resources/templates/error_layout.html.template +89 -0
  618. data/resources/templates/general_error.html.template +1 -0
  619. data/resources/templates/general_error_with_html.html.template +1 -0
  620. data/{lib/phusion_passenger → resources}/templates/nginx/ask_for_extra_configure_flags.txt.erb +0 -0
  621. data/{lib/phusion_passenger → resources}/templates/nginx/cannot_write_to_dir.txt.erb +0 -0
  622. data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets.txt.erb +0 -0
  623. data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets_inserted.txt.erb +0 -0
  624. data/{lib/phusion_passenger → resources}/templates/nginx/confirm_extra_configure_flags.txt.erb +0 -0
  625. data/{lib/phusion_passenger → resources}/templates/nginx/deployment_example.txt.erb +0 -0
  626. data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +8 -0
  627. data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_downloaded.txt.erb +0 -0
  628. data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_extracted.txt.erb +0 -0
  629. data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  630. data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
  631. data/{lib/phusion_passenger → resources}/templates/nginx/query_download_and_install.txt.erb +0 -0
  632. data/{lib/phusion_passenger → resources}/templates/nginx/run_installer_as_root.txt.erb +0 -0
  633. data/{lib/phusion_passenger → resources}/templates/nginx/welcome.txt.erb +0 -0
  634. data/{lib/phusion_passenger → resources}/templates/standalone/cannot_write_to_dir.txt.erb +0 -0
  635. data/{lib/phusion_passenger → resources}/templates/standalone/config.erb +26 -5
  636. data/{lib/phusion_passenger → resources}/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
  637. data/{lib/phusion_passenger → resources}/templates/standalone/run_installer_as_root.txt.erb +0 -0
  638. data/{lib/phusion_passenger → resources}/templates/standalone/welcome.txt.erb +0 -0
  639. data/resources/templates/undisclosed_error.html.template +25 -0
  640. data/test/config.json.example +42 -0
  641. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +86 -0
  642. data/test/cxx/ApplicationPool2/OptionsTest.cpp +44 -0
  643. data/test/cxx/ApplicationPool2/PoolTest.cpp +1234 -0
  644. data/test/cxx/ApplicationPool2/ProcessTest.cpp +131 -0
  645. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +229 -0
  646. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +744 -0
  647. data/test/cxx/BufferedIOTest.cpp +7 -7
  648. data/test/cxx/CxxTestMain.cpp +65 -2
  649. data/test/cxx/FileBackedPipeTest.cpp +626 -0
  650. data/test/cxx/FileChangeCheckerTest.cpp +20 -18
  651. data/test/cxx/FilterSupportTest.cpp +5 -5
  652. data/test/cxx/IOUtilsTest.cpp +11 -4
  653. data/test/cxx/MessageReadersWritersTest.cpp +1 -1
  654. data/test/cxx/MessageServerTest.cpp +31 -30
  655. data/test/cxx/RequestHandlerTest.cpp +777 -0
  656. data/test/cxx/ScgiRequestParserTest.cpp +36 -16
  657. data/test/cxx/ServerInstanceDirTest.cpp +1 -1
  658. data/test/cxx/StringMapTest.cpp +61 -0
  659. data/test/cxx/TemplateTest.cpp +118 -0
  660. data/test/cxx/TestSupport.cpp +25 -68
  661. data/test/cxx/TestSupport.h +81 -41
  662. data/test/cxx/{LoggingTest.cpp → UnionStationTest.cpp} +79 -74
  663. data/test/cxx/UtilsTest.cpp +59 -5
  664. data/test/integration_tests/apache2_tests.rb +2 -2
  665. data/test/integration_tests/nginx_tests.rb +1 -1
  666. data/test/integration_tests/spec_helper.rb +7 -5
  667. data/test/oxt/oxt_test_main.cpp +2 -0
  668. data/test/oxt/syscall_interruption_test.cpp +1 -0
  669. data/test/ruby/classic_rails/loader_spec.rb +48 -0
  670. data/test/ruby/classic_rails/preloader_spec.rb +54 -0
  671. data/test/ruby/rack/loader_spec.rb +62 -0
  672. data/test/ruby/rack/preloader_spec.rb +74 -0
  673. data/test/ruby/{abstract_request_handler_spec.rb → request_handler_spec.rb} +31 -68
  674. data/test/ruby/shared/loader_spec.rb +241 -0
  675. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +141 -182
  676. data/test/ruby/shared/ruby_loader_spec.rb +55 -0
  677. data/test/ruby/spec_helper.rb +8 -53
  678. data/test/ruby/utils/file_system_watcher_spec.rb +9 -1
  679. data/test/ruby/utils_spec.rb +10 -683
  680. data/test/stub/rack/config.ru +28 -3
  681. data/test/stub/rack/start.rb +47 -0
  682. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/Rakefile +0 -0
  683. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/application_controller.rb +0 -2
  684. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_1.rb +0 -0
  685. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_2.rb +0 -0
  686. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/foo_controller.rb +0 -0
  687. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/helpers/application_helper.rb +0 -0
  688. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/boot.rb +0 -0
  689. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/database.yml +3 -3
  690. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environment.rb +5 -2
  691. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/development.rb +0 -0
  692. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/production.rb +0 -0
  693. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/staging.rb +0 -0
  694. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/inflections.rb +0 -0
  695. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/mime_types.rb +0 -0
  696. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/routes.rb +1 -0
  697. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/about +0 -0
  698. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/console +0 -0
  699. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/dbconsole +0 -0
  700. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/destroy +0 -0
  701. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/generate +0 -0
  702. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/benchmarker +0 -0
  703. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/profiler +0 -0
  704. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/request +0 -0
  705. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/plugin +0 -0
  706. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/inspector +0 -0
  707. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/reaper +0 -0
  708. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/spawner +0 -0
  709. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/runner +0 -0
  710. data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/server +0 -0
  711. data/test/stub/{rails_apps/3.0/empty → rails3.0}/Gemfile +0 -0
  712. data/test/stub/rails3.0/Gemfile.lock +80 -0
  713. data/test/stub/{rails_apps/3.0/empty → rails3.0}/Rakefile +0 -0
  714. data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/controllers/application_controller.rb +0 -0
  715. data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/helpers/application_helper.rb +0 -0
  716. data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/views/layouts/application.html.erb +0 -0
  717. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config.ru +0 -0
  718. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/application.rb +0 -0
  719. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/boot.rb +0 -0
  720. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/database.yml +0 -0
  721. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environment.rb +0 -0
  722. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/development.rb +0 -0
  723. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/production.rb +0 -0
  724. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/test.rb +0 -0
  725. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/backtrace_silencers.rb +0 -0
  726. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/inflections.rb +0 -0
  727. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/mime_types.rb +0 -0
  728. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/passenger.rb +0 -0
  729. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/secret_token.rb +0 -0
  730. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/session_store.rb +0 -0
  731. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/locales/en.yml +0 -0
  732. data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/routes.rb +0 -0
  733. data/test/stub/{rails_apps/3.0/empty → rails3.0}/db/seeds.rb +0 -0
  734. data/test/stub/{rails_apps/3.0/empty → rails3.0}/doc/README_FOR_APP +0 -0
  735. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/404.html +0 -0
  736. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/422.html +0 -0
  737. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/500.html +0 -0
  738. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/favicon.ico +0 -0
  739. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/index.html +0 -0
  740. data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/robots.txt +0 -0
  741. data/test/stub/{rails_apps/3.0/empty → rails3.0}/script/rails +0 -0
  742. data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/performance/browsing_test.rb +0 -0
  743. data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/test_helper.rb +0 -0
  744. data/test/stub/start_error.pl +24 -0
  745. data/test/stub/wsgi/passenger_wsgi.py +71 -3
  746. data/test/support/apache2_controller.rb +2 -2
  747. data/test/support/placebo-preloader.rb +88 -0
  748. data/test/support/test_helper.rb +1 -14
  749. data/test/tut/tut.h +11 -4
  750. metadata +590 -326
  751. data.tar.gz.asc +0 -12
  752. data/PACKAGING.TXT +0 -25
  753. data/build/config.rb +0 -46
  754. data/ext/apache2/HelperAgent.cpp +0 -364
  755. data/ext/boost/call_traits.hpp +0 -24
  756. data/ext/boost/detail/call_traits.hpp +0 -164
  757. data/ext/common/AbstractSpawnManager.h +0 -110
  758. data/ext/common/AgentBase.cpp +0 -432
  759. data/ext/common/ApplicationPool/Client.h +0 -788
  760. data/ext/common/ApplicationPool/Interface.h +0 -295
  761. data/ext/common/ApplicationPool/Pool.h +0 -1327
  762. data/ext/common/ApplicationPool/Server.h +0 -479
  763. data/ext/common/MessageChannel.h +0 -494
  764. data/ext/common/PoolOptions.h +0 -518
  765. data/ext/common/Process.h +0 -253
  766. data/ext/common/Session.h +0 -436
  767. data/ext/common/SpawnManager.h +0 -611
  768. data/ext/google/ChangeLog +0 -167
  769. data/ext/google/dense_hash_map +0 -310
  770. data/ext/google/dense_hash_set +0 -287
  771. data/ext/google/sparse_hash_map +0 -294
  772. data/ext/google/sparse_hash_set +0 -275
  773. data/ext/google/sparsehash/densehashtable.h +0 -1062
  774. data/ext/google/sparsehash/sparseconfig.h +0 -55
  775. data/ext/google/sparsehash/sparsehashtable.h +0 -1015
  776. data/ext/google/sparsetable +0 -1468
  777. data/ext/google/type_traits.h +0 -250
  778. data/ext/nginx/HelperAgent.cpp +0 -1355
  779. data/ext/nginx/ScgiRequestParser.h +0 -375
  780. data/ext/oxt/backtrace.cpp +0 -185
  781. data/ext/oxt/tracable_exception.cpp +0 -89
  782. data/helper-scripts/passenger-spawn-server +0 -106
  783. data/lib/phusion_passenger/abstract_request_handler.rb +0 -766
  784. data/lib/phusion_passenger/abstract_server.rb +0 -372
  785. data/lib/phusion_passenger/abstract_server_collection.rb +0 -335
  786. data/lib/phusion_passenger/app_process.rb +0 -174
  787. data/lib/phusion_passenger/classic_rails/application_spawner.rb +0 -344
  788. data/lib/phusion_passenger/classic_rails/framework_spawner.rb +0 -311
  789. data/lib/phusion_passenger/exceptions.rb +0 -103
  790. data/lib/phusion_passenger/html_template.rb +0 -107
  791. data/lib/phusion_passenger/rack/application_spawner.rb +0 -231
  792. data/lib/phusion_passenger/spawn_manager.rb +0 -359
  793. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +0 -38
  794. data/lib/phusion_passenger/templates/app_init_error.html.erb +0 -64
  795. data/lib/phusion_passenger/templates/database_error.html.erb +0 -66
  796. data/lib/phusion_passenger/templates/error_layout.html.erb +0 -39
  797. data/lib/phusion_passenger/templates/framework_init_error.html.erb +0 -39
  798. data/lib/phusion_passenger/templates/general_error.html.erb +0 -22
  799. data/lib/phusion_passenger/templates/load_error.html.erb +0 -46
  800. data/lib/phusion_passenger/templates/version_not_found.html.erb +0 -34
  801. data/lib/phusion_passenger/utils/rewindable_input.rb +0 -125
  802. data/lib/phusion_passenger/wsgi/application_spawner.rb +0 -108
  803. data/test/config.yml.example +0 -41
  804. data/test/cxx/ApplicationPool_PoolTest.cpp +0 -33
  805. data/test/cxx/ApplicationPool_PoolTestCases.cpp +0 -1029
  806. data/test/cxx/ApplicationPool_ServerTest.cpp +0 -308
  807. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +0 -80
  808. data/test/cxx/MessageChannelTest.cpp +0 -557
  809. data/test/cxx/PoolOptionsTest.cpp +0 -116
  810. data/test/cxx/SpawnManagerTest.cpp +0 -161
  811. data/test/ruby/abstract_server_collection_spec.rb +0 -247
  812. data/test/ruby/abstract_server_spec.rb +0 -61
  813. data/test/ruby/app_process_spec.rb +0 -43
  814. data/test/ruby/classic_rails/application_spawner_spec.rb +0 -89
  815. data/test/ruby/classic_rails/framework_spawner_spec.rb +0 -92
  816. data/test/ruby/rack/application_spawner_spec.rb +0 -116
  817. data/test/ruby/shared/abstract_server_spec.rb +0 -23
  818. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +0 -38
  819. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +0 -19
  820. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +0 -15
  821. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +0 -27
  822. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +0 -29
  823. data/test/ruby/shared/spawners/reload_all_spec.rb +0 -36
  824. data/test/ruby/shared/spawners/reload_single_spec.rb +0 -52
  825. data/test/ruby/shared/spawners/spawn_server_spec.rb +0 -28
  826. data/test/ruby/shared/spawners/spawner_spec.rb +0 -273
  827. data/test/ruby/shared/utils/pseudo_io_spec.rb +0 -60
  828. data/test/ruby/spawn_manager_spec.rb +0 -134
  829. data/test/ruby/wsgi/application_spawner_spec.rb +0 -50
  830. data/test/stub/message_channel.rb +0 -11
  831. data/test/stub/message_channel_2.rb +0 -12
  832. data/test/stub/message_channel_3.rb +0 -19
  833. data/test/stub/rails_apps/3.0/empty/Gemfile.lock +0 -73
  834. data/test/stub/spawn_server.rb +0 -22
  835. metadata.gz.asc +0 -12
@@ -0,0 +1,1741 @@
1
+ //
2
+ //! Copyright (c) 2011-2012
3
+ //! Brandon Kohn
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
+
10
+
11
+
12
+ namespace boost { namespace numeric {
13
+
14
+ template <>
15
+ struct numeric_cast_traits
16
+ <
17
+ char
18
+ , char
19
+ >
20
+ {
21
+ typedef def_overflow_handler overflow_policy;
22
+ typedef UseInternalRangeChecker range_checking_policy;
23
+ typedef Trunc<char> rounding_policy;
24
+ };
25
+
26
+ template <>
27
+ struct numeric_cast_traits
28
+ <
29
+ char
30
+ , signed char
31
+ >
32
+ {
33
+ typedef def_overflow_handler overflow_policy;
34
+ typedef UseInternalRangeChecker range_checking_policy;
35
+ typedef Trunc<signed char> rounding_policy;
36
+ };
37
+
38
+ template <>
39
+ struct numeric_cast_traits
40
+ <
41
+ char
42
+ , unsigned char
43
+ >
44
+ {
45
+ typedef def_overflow_handler overflow_policy;
46
+ typedef UseInternalRangeChecker range_checking_policy;
47
+ typedef Trunc<unsigned char> rounding_policy;
48
+ };
49
+
50
+ template <>
51
+ struct numeric_cast_traits
52
+ <
53
+ char
54
+ , short
55
+ >
56
+ {
57
+ typedef def_overflow_handler overflow_policy;
58
+ typedef UseInternalRangeChecker range_checking_policy;
59
+ typedef Trunc<short> rounding_policy;
60
+ };
61
+
62
+ template <>
63
+ struct numeric_cast_traits
64
+ <
65
+ char
66
+ , unsigned short
67
+ >
68
+ {
69
+ typedef def_overflow_handler overflow_policy;
70
+ typedef UseInternalRangeChecker range_checking_policy;
71
+ typedef Trunc<unsigned short> rounding_policy;
72
+ };
73
+
74
+ template <>
75
+ struct numeric_cast_traits
76
+ <
77
+ char
78
+ , int
79
+ >
80
+ {
81
+ typedef def_overflow_handler overflow_policy;
82
+ typedef UseInternalRangeChecker range_checking_policy;
83
+ typedef Trunc<int> rounding_policy;
84
+ };
85
+
86
+ template <>
87
+ struct numeric_cast_traits
88
+ <
89
+ char
90
+ , unsigned int
91
+ >
92
+ {
93
+ typedef def_overflow_handler overflow_policy;
94
+ typedef UseInternalRangeChecker range_checking_policy;
95
+ typedef Trunc<unsigned int> rounding_policy;
96
+ };
97
+
98
+ template <>
99
+ struct numeric_cast_traits
100
+ <
101
+ char
102
+ , long
103
+ >
104
+ {
105
+ typedef def_overflow_handler overflow_policy;
106
+ typedef UseInternalRangeChecker range_checking_policy;
107
+ typedef Trunc<long> rounding_policy;
108
+ };
109
+
110
+ template <>
111
+ struct numeric_cast_traits
112
+ <
113
+ char
114
+ , unsigned long
115
+ >
116
+ {
117
+ typedef def_overflow_handler overflow_policy;
118
+ typedef UseInternalRangeChecker range_checking_policy;
119
+ typedef Trunc<unsigned long> rounding_policy;
120
+ };
121
+
122
+ template <>
123
+ struct numeric_cast_traits
124
+ <
125
+ char
126
+ , float
127
+ >
128
+ {
129
+ typedef def_overflow_handler overflow_policy;
130
+ typedef UseInternalRangeChecker range_checking_policy;
131
+ typedef Trunc<float> rounding_policy;
132
+ };
133
+
134
+ template <>
135
+ struct numeric_cast_traits
136
+ <
137
+ char
138
+ , double
139
+ >
140
+ {
141
+ typedef def_overflow_handler overflow_policy;
142
+ typedef UseInternalRangeChecker range_checking_policy;
143
+ typedef Trunc<double> rounding_policy;
144
+ };
145
+
146
+ template <>
147
+ struct numeric_cast_traits
148
+ <
149
+ char
150
+ , long double
151
+ >
152
+ {
153
+ typedef def_overflow_handler overflow_policy;
154
+ typedef UseInternalRangeChecker range_checking_policy;
155
+ typedef Trunc<long double> rounding_policy;
156
+ };
157
+
158
+ template <>
159
+ struct numeric_cast_traits
160
+ <
161
+ signed char
162
+ , char
163
+ >
164
+ {
165
+ typedef def_overflow_handler overflow_policy;
166
+ typedef UseInternalRangeChecker range_checking_policy;
167
+ typedef Trunc<char> rounding_policy;
168
+ };
169
+
170
+ template <>
171
+ struct numeric_cast_traits
172
+ <
173
+ signed char
174
+ , signed char
175
+ >
176
+ {
177
+ typedef def_overflow_handler overflow_policy;
178
+ typedef UseInternalRangeChecker range_checking_policy;
179
+ typedef Trunc<signed char> rounding_policy;
180
+ };
181
+
182
+ template <>
183
+ struct numeric_cast_traits
184
+ <
185
+ signed char
186
+ , unsigned char
187
+ >
188
+ {
189
+ typedef def_overflow_handler overflow_policy;
190
+ typedef UseInternalRangeChecker range_checking_policy;
191
+ typedef Trunc<unsigned char> rounding_policy;
192
+ };
193
+
194
+ template <>
195
+ struct numeric_cast_traits
196
+ <
197
+ signed char
198
+ , short
199
+ >
200
+ {
201
+ typedef def_overflow_handler overflow_policy;
202
+ typedef UseInternalRangeChecker range_checking_policy;
203
+ typedef Trunc<short> rounding_policy;
204
+ };
205
+
206
+ template <>
207
+ struct numeric_cast_traits
208
+ <
209
+ signed char
210
+ , unsigned short
211
+ >
212
+ {
213
+ typedef def_overflow_handler overflow_policy;
214
+ typedef UseInternalRangeChecker range_checking_policy;
215
+ typedef Trunc<unsigned short> rounding_policy;
216
+ };
217
+
218
+ template <>
219
+ struct numeric_cast_traits
220
+ <
221
+ signed char
222
+ , int
223
+ >
224
+ {
225
+ typedef def_overflow_handler overflow_policy;
226
+ typedef UseInternalRangeChecker range_checking_policy;
227
+ typedef Trunc<int> rounding_policy;
228
+ };
229
+
230
+ template <>
231
+ struct numeric_cast_traits
232
+ <
233
+ signed char
234
+ , unsigned int
235
+ >
236
+ {
237
+ typedef def_overflow_handler overflow_policy;
238
+ typedef UseInternalRangeChecker range_checking_policy;
239
+ typedef Trunc<unsigned int> rounding_policy;
240
+ };
241
+
242
+ template <>
243
+ struct numeric_cast_traits
244
+ <
245
+ signed char
246
+ , long
247
+ >
248
+ {
249
+ typedef def_overflow_handler overflow_policy;
250
+ typedef UseInternalRangeChecker range_checking_policy;
251
+ typedef Trunc<long> rounding_policy;
252
+ };
253
+
254
+ template <>
255
+ struct numeric_cast_traits
256
+ <
257
+ signed char
258
+ , unsigned long
259
+ >
260
+ {
261
+ typedef def_overflow_handler overflow_policy;
262
+ typedef UseInternalRangeChecker range_checking_policy;
263
+ typedef Trunc<unsigned long> rounding_policy;
264
+ };
265
+
266
+ template <>
267
+ struct numeric_cast_traits
268
+ <
269
+ signed char
270
+ , float
271
+ >
272
+ {
273
+ typedef def_overflow_handler overflow_policy;
274
+ typedef UseInternalRangeChecker range_checking_policy;
275
+ typedef Trunc<float> rounding_policy;
276
+ };
277
+
278
+ template <>
279
+ struct numeric_cast_traits
280
+ <
281
+ signed char
282
+ , double
283
+ >
284
+ {
285
+ typedef def_overflow_handler overflow_policy;
286
+ typedef UseInternalRangeChecker range_checking_policy;
287
+ typedef Trunc<double> rounding_policy;
288
+ };
289
+
290
+ template <>
291
+ struct numeric_cast_traits
292
+ <
293
+ signed char
294
+ , long double
295
+ >
296
+ {
297
+ typedef def_overflow_handler overflow_policy;
298
+ typedef UseInternalRangeChecker range_checking_policy;
299
+ typedef Trunc<long double> rounding_policy;
300
+ };
301
+
302
+ template <>
303
+ struct numeric_cast_traits
304
+ <
305
+ unsigned char
306
+ , char
307
+ >
308
+ {
309
+ typedef def_overflow_handler overflow_policy;
310
+ typedef UseInternalRangeChecker range_checking_policy;
311
+ typedef Trunc<char> rounding_policy;
312
+ };
313
+
314
+ template <>
315
+ struct numeric_cast_traits
316
+ <
317
+ unsigned char
318
+ , signed char
319
+ >
320
+ {
321
+ typedef def_overflow_handler overflow_policy;
322
+ typedef UseInternalRangeChecker range_checking_policy;
323
+ typedef Trunc<signed char> rounding_policy;
324
+ };
325
+
326
+ template <>
327
+ struct numeric_cast_traits
328
+ <
329
+ unsigned char
330
+ , unsigned char
331
+ >
332
+ {
333
+ typedef def_overflow_handler overflow_policy;
334
+ typedef UseInternalRangeChecker range_checking_policy;
335
+ typedef Trunc<unsigned char> rounding_policy;
336
+ };
337
+
338
+ template <>
339
+ struct numeric_cast_traits
340
+ <
341
+ unsigned char
342
+ , short
343
+ >
344
+ {
345
+ typedef def_overflow_handler overflow_policy;
346
+ typedef UseInternalRangeChecker range_checking_policy;
347
+ typedef Trunc<short> rounding_policy;
348
+ };
349
+
350
+ template <>
351
+ struct numeric_cast_traits
352
+ <
353
+ unsigned char
354
+ , unsigned short
355
+ >
356
+ {
357
+ typedef def_overflow_handler overflow_policy;
358
+ typedef UseInternalRangeChecker range_checking_policy;
359
+ typedef Trunc<unsigned short> rounding_policy;
360
+ };
361
+
362
+ template <>
363
+ struct numeric_cast_traits
364
+ <
365
+ unsigned char
366
+ , int
367
+ >
368
+ {
369
+ typedef def_overflow_handler overflow_policy;
370
+ typedef UseInternalRangeChecker range_checking_policy;
371
+ typedef Trunc<int> rounding_policy;
372
+ };
373
+
374
+ template <>
375
+ struct numeric_cast_traits
376
+ <
377
+ unsigned char
378
+ , unsigned int
379
+ >
380
+ {
381
+ typedef def_overflow_handler overflow_policy;
382
+ typedef UseInternalRangeChecker range_checking_policy;
383
+ typedef Trunc<unsigned int> rounding_policy;
384
+ };
385
+
386
+ template <>
387
+ struct numeric_cast_traits
388
+ <
389
+ unsigned char
390
+ , long
391
+ >
392
+ {
393
+ typedef def_overflow_handler overflow_policy;
394
+ typedef UseInternalRangeChecker range_checking_policy;
395
+ typedef Trunc<long> rounding_policy;
396
+ };
397
+
398
+ template <>
399
+ struct numeric_cast_traits
400
+ <
401
+ unsigned char
402
+ , unsigned long
403
+ >
404
+ {
405
+ typedef def_overflow_handler overflow_policy;
406
+ typedef UseInternalRangeChecker range_checking_policy;
407
+ typedef Trunc<unsigned long> rounding_policy;
408
+ };
409
+
410
+ template <>
411
+ struct numeric_cast_traits
412
+ <
413
+ unsigned char
414
+ , float
415
+ >
416
+ {
417
+ typedef def_overflow_handler overflow_policy;
418
+ typedef UseInternalRangeChecker range_checking_policy;
419
+ typedef Trunc<float> rounding_policy;
420
+ };
421
+
422
+ template <>
423
+ struct numeric_cast_traits
424
+ <
425
+ unsigned char
426
+ , double
427
+ >
428
+ {
429
+ typedef def_overflow_handler overflow_policy;
430
+ typedef UseInternalRangeChecker range_checking_policy;
431
+ typedef Trunc<double> rounding_policy;
432
+ };
433
+
434
+ template <>
435
+ struct numeric_cast_traits
436
+ <
437
+ unsigned char
438
+ , long double
439
+ >
440
+ {
441
+ typedef def_overflow_handler overflow_policy;
442
+ typedef UseInternalRangeChecker range_checking_policy;
443
+ typedef Trunc<long double> rounding_policy;
444
+ };
445
+
446
+ template <>
447
+ struct numeric_cast_traits
448
+ <
449
+ short
450
+ , char
451
+ >
452
+ {
453
+ typedef def_overflow_handler overflow_policy;
454
+ typedef UseInternalRangeChecker range_checking_policy;
455
+ typedef Trunc<char> rounding_policy;
456
+ };
457
+
458
+ template <>
459
+ struct numeric_cast_traits
460
+ <
461
+ short
462
+ , signed char
463
+ >
464
+ {
465
+ typedef def_overflow_handler overflow_policy;
466
+ typedef UseInternalRangeChecker range_checking_policy;
467
+ typedef Trunc<signed char> rounding_policy;
468
+ };
469
+
470
+ template <>
471
+ struct numeric_cast_traits
472
+ <
473
+ short
474
+ , unsigned char
475
+ >
476
+ {
477
+ typedef def_overflow_handler overflow_policy;
478
+ typedef UseInternalRangeChecker range_checking_policy;
479
+ typedef Trunc<unsigned char> rounding_policy;
480
+ };
481
+
482
+ template <>
483
+ struct numeric_cast_traits
484
+ <
485
+ short
486
+ , short
487
+ >
488
+ {
489
+ typedef def_overflow_handler overflow_policy;
490
+ typedef UseInternalRangeChecker range_checking_policy;
491
+ typedef Trunc<short> rounding_policy;
492
+ };
493
+
494
+ template <>
495
+ struct numeric_cast_traits
496
+ <
497
+ short
498
+ , unsigned short
499
+ >
500
+ {
501
+ typedef def_overflow_handler overflow_policy;
502
+ typedef UseInternalRangeChecker range_checking_policy;
503
+ typedef Trunc<unsigned short> rounding_policy;
504
+ };
505
+
506
+ template <>
507
+ struct numeric_cast_traits
508
+ <
509
+ short
510
+ , int
511
+ >
512
+ {
513
+ typedef def_overflow_handler overflow_policy;
514
+ typedef UseInternalRangeChecker range_checking_policy;
515
+ typedef Trunc<int> rounding_policy;
516
+ };
517
+
518
+ template <>
519
+ struct numeric_cast_traits
520
+ <
521
+ short
522
+ , unsigned int
523
+ >
524
+ {
525
+ typedef def_overflow_handler overflow_policy;
526
+ typedef UseInternalRangeChecker range_checking_policy;
527
+ typedef Trunc<unsigned int> rounding_policy;
528
+ };
529
+
530
+ template <>
531
+ struct numeric_cast_traits
532
+ <
533
+ short
534
+ , long
535
+ >
536
+ {
537
+ typedef def_overflow_handler overflow_policy;
538
+ typedef UseInternalRangeChecker range_checking_policy;
539
+ typedef Trunc<long> rounding_policy;
540
+ };
541
+
542
+ template <>
543
+ struct numeric_cast_traits
544
+ <
545
+ short
546
+ , unsigned long
547
+ >
548
+ {
549
+ typedef def_overflow_handler overflow_policy;
550
+ typedef UseInternalRangeChecker range_checking_policy;
551
+ typedef Trunc<unsigned long> rounding_policy;
552
+ };
553
+
554
+ template <>
555
+ struct numeric_cast_traits
556
+ <
557
+ short
558
+ , float
559
+ >
560
+ {
561
+ typedef def_overflow_handler overflow_policy;
562
+ typedef UseInternalRangeChecker range_checking_policy;
563
+ typedef Trunc<float> rounding_policy;
564
+ };
565
+
566
+ template <>
567
+ struct numeric_cast_traits
568
+ <
569
+ short
570
+ , double
571
+ >
572
+ {
573
+ typedef def_overflow_handler overflow_policy;
574
+ typedef UseInternalRangeChecker range_checking_policy;
575
+ typedef Trunc<double> rounding_policy;
576
+ };
577
+
578
+ template <>
579
+ struct numeric_cast_traits
580
+ <
581
+ short
582
+ , long double
583
+ >
584
+ {
585
+ typedef def_overflow_handler overflow_policy;
586
+ typedef UseInternalRangeChecker range_checking_policy;
587
+ typedef Trunc<long double> rounding_policy;
588
+ };
589
+
590
+ template <>
591
+ struct numeric_cast_traits
592
+ <
593
+ unsigned short
594
+ , char
595
+ >
596
+ {
597
+ typedef def_overflow_handler overflow_policy;
598
+ typedef UseInternalRangeChecker range_checking_policy;
599
+ typedef Trunc<char> rounding_policy;
600
+ };
601
+
602
+ template <>
603
+ struct numeric_cast_traits
604
+ <
605
+ unsigned short
606
+ , signed char
607
+ >
608
+ {
609
+ typedef def_overflow_handler overflow_policy;
610
+ typedef UseInternalRangeChecker range_checking_policy;
611
+ typedef Trunc<signed char> rounding_policy;
612
+ };
613
+
614
+ template <>
615
+ struct numeric_cast_traits
616
+ <
617
+ unsigned short
618
+ , unsigned char
619
+ >
620
+ {
621
+ typedef def_overflow_handler overflow_policy;
622
+ typedef UseInternalRangeChecker range_checking_policy;
623
+ typedef Trunc<unsigned char> rounding_policy;
624
+ };
625
+
626
+ template <>
627
+ struct numeric_cast_traits
628
+ <
629
+ unsigned short
630
+ , short
631
+ >
632
+ {
633
+ typedef def_overflow_handler overflow_policy;
634
+ typedef UseInternalRangeChecker range_checking_policy;
635
+ typedef Trunc<short> rounding_policy;
636
+ };
637
+
638
+ template <>
639
+ struct numeric_cast_traits
640
+ <
641
+ unsigned short
642
+ , unsigned short
643
+ >
644
+ {
645
+ typedef def_overflow_handler overflow_policy;
646
+ typedef UseInternalRangeChecker range_checking_policy;
647
+ typedef Trunc<unsigned short> rounding_policy;
648
+ };
649
+
650
+ template <>
651
+ struct numeric_cast_traits
652
+ <
653
+ unsigned short
654
+ , int
655
+ >
656
+ {
657
+ typedef def_overflow_handler overflow_policy;
658
+ typedef UseInternalRangeChecker range_checking_policy;
659
+ typedef Trunc<int> rounding_policy;
660
+ };
661
+
662
+ template <>
663
+ struct numeric_cast_traits
664
+ <
665
+ unsigned short
666
+ , unsigned int
667
+ >
668
+ {
669
+ typedef def_overflow_handler overflow_policy;
670
+ typedef UseInternalRangeChecker range_checking_policy;
671
+ typedef Trunc<unsigned int> rounding_policy;
672
+ };
673
+
674
+ template <>
675
+ struct numeric_cast_traits
676
+ <
677
+ unsigned short
678
+ , long
679
+ >
680
+ {
681
+ typedef def_overflow_handler overflow_policy;
682
+ typedef UseInternalRangeChecker range_checking_policy;
683
+ typedef Trunc<long> rounding_policy;
684
+ };
685
+
686
+ template <>
687
+ struct numeric_cast_traits
688
+ <
689
+ unsigned short
690
+ , unsigned long
691
+ >
692
+ {
693
+ typedef def_overflow_handler overflow_policy;
694
+ typedef UseInternalRangeChecker range_checking_policy;
695
+ typedef Trunc<unsigned long> rounding_policy;
696
+ };
697
+
698
+ template <>
699
+ struct numeric_cast_traits
700
+ <
701
+ unsigned short
702
+ , float
703
+ >
704
+ {
705
+ typedef def_overflow_handler overflow_policy;
706
+ typedef UseInternalRangeChecker range_checking_policy;
707
+ typedef Trunc<float> rounding_policy;
708
+ };
709
+
710
+ template <>
711
+ struct numeric_cast_traits
712
+ <
713
+ unsigned short
714
+ , double
715
+ >
716
+ {
717
+ typedef def_overflow_handler overflow_policy;
718
+ typedef UseInternalRangeChecker range_checking_policy;
719
+ typedef Trunc<double> rounding_policy;
720
+ };
721
+
722
+ template <>
723
+ struct numeric_cast_traits
724
+ <
725
+ unsigned short
726
+ , long double
727
+ >
728
+ {
729
+ typedef def_overflow_handler overflow_policy;
730
+ typedef UseInternalRangeChecker range_checking_policy;
731
+ typedef Trunc<long double> rounding_policy;
732
+ };
733
+
734
+ template <>
735
+ struct numeric_cast_traits
736
+ <
737
+ int
738
+ , char
739
+ >
740
+ {
741
+ typedef def_overflow_handler overflow_policy;
742
+ typedef UseInternalRangeChecker range_checking_policy;
743
+ typedef Trunc<char> rounding_policy;
744
+ };
745
+
746
+ template <>
747
+ struct numeric_cast_traits
748
+ <
749
+ int
750
+ , signed char
751
+ >
752
+ {
753
+ typedef def_overflow_handler overflow_policy;
754
+ typedef UseInternalRangeChecker range_checking_policy;
755
+ typedef Trunc<signed char> rounding_policy;
756
+ };
757
+
758
+ template <>
759
+ struct numeric_cast_traits
760
+ <
761
+ int
762
+ , unsigned char
763
+ >
764
+ {
765
+ typedef def_overflow_handler overflow_policy;
766
+ typedef UseInternalRangeChecker range_checking_policy;
767
+ typedef Trunc<unsigned char> rounding_policy;
768
+ };
769
+
770
+ template <>
771
+ struct numeric_cast_traits
772
+ <
773
+ int
774
+ , short
775
+ >
776
+ {
777
+ typedef def_overflow_handler overflow_policy;
778
+ typedef UseInternalRangeChecker range_checking_policy;
779
+ typedef Trunc<short> rounding_policy;
780
+ };
781
+
782
+ template <>
783
+ struct numeric_cast_traits
784
+ <
785
+ int
786
+ , unsigned short
787
+ >
788
+ {
789
+ typedef def_overflow_handler overflow_policy;
790
+ typedef UseInternalRangeChecker range_checking_policy;
791
+ typedef Trunc<unsigned short> rounding_policy;
792
+ };
793
+
794
+ template <>
795
+ struct numeric_cast_traits
796
+ <
797
+ int
798
+ , int
799
+ >
800
+ {
801
+ typedef def_overflow_handler overflow_policy;
802
+ typedef UseInternalRangeChecker range_checking_policy;
803
+ typedef Trunc<int> rounding_policy;
804
+ };
805
+
806
+ template <>
807
+ struct numeric_cast_traits
808
+ <
809
+ int
810
+ , unsigned int
811
+ >
812
+ {
813
+ typedef def_overflow_handler overflow_policy;
814
+ typedef UseInternalRangeChecker range_checking_policy;
815
+ typedef Trunc<unsigned int> rounding_policy;
816
+ };
817
+
818
+ template <>
819
+ struct numeric_cast_traits
820
+ <
821
+ int
822
+ , long
823
+ >
824
+ {
825
+ typedef def_overflow_handler overflow_policy;
826
+ typedef UseInternalRangeChecker range_checking_policy;
827
+ typedef Trunc<long> rounding_policy;
828
+ };
829
+
830
+ template <>
831
+ struct numeric_cast_traits
832
+ <
833
+ int
834
+ , unsigned long
835
+ >
836
+ {
837
+ typedef def_overflow_handler overflow_policy;
838
+ typedef UseInternalRangeChecker range_checking_policy;
839
+ typedef Trunc<unsigned long> rounding_policy;
840
+ };
841
+
842
+ template <>
843
+ struct numeric_cast_traits
844
+ <
845
+ int
846
+ , float
847
+ >
848
+ {
849
+ typedef def_overflow_handler overflow_policy;
850
+ typedef UseInternalRangeChecker range_checking_policy;
851
+ typedef Trunc<float> rounding_policy;
852
+ };
853
+
854
+ template <>
855
+ struct numeric_cast_traits
856
+ <
857
+ int
858
+ , double
859
+ >
860
+ {
861
+ typedef def_overflow_handler overflow_policy;
862
+ typedef UseInternalRangeChecker range_checking_policy;
863
+ typedef Trunc<double> rounding_policy;
864
+ };
865
+
866
+ template <>
867
+ struct numeric_cast_traits
868
+ <
869
+ int
870
+ , long double
871
+ >
872
+ {
873
+ typedef def_overflow_handler overflow_policy;
874
+ typedef UseInternalRangeChecker range_checking_policy;
875
+ typedef Trunc<long double> rounding_policy;
876
+ };
877
+
878
+ template <>
879
+ struct numeric_cast_traits
880
+ <
881
+ unsigned int
882
+ , char
883
+ >
884
+ {
885
+ typedef def_overflow_handler overflow_policy;
886
+ typedef UseInternalRangeChecker range_checking_policy;
887
+ typedef Trunc<char> rounding_policy;
888
+ };
889
+
890
+ template <>
891
+ struct numeric_cast_traits
892
+ <
893
+ unsigned int
894
+ , signed char
895
+ >
896
+ {
897
+ typedef def_overflow_handler overflow_policy;
898
+ typedef UseInternalRangeChecker range_checking_policy;
899
+ typedef Trunc<signed char> rounding_policy;
900
+ };
901
+
902
+ template <>
903
+ struct numeric_cast_traits
904
+ <
905
+ unsigned int
906
+ , unsigned char
907
+ >
908
+ {
909
+ typedef def_overflow_handler overflow_policy;
910
+ typedef UseInternalRangeChecker range_checking_policy;
911
+ typedef Trunc<unsigned char> rounding_policy;
912
+ };
913
+
914
+ template <>
915
+ struct numeric_cast_traits
916
+ <
917
+ unsigned int
918
+ , short
919
+ >
920
+ {
921
+ typedef def_overflow_handler overflow_policy;
922
+ typedef UseInternalRangeChecker range_checking_policy;
923
+ typedef Trunc<short> rounding_policy;
924
+ };
925
+
926
+ template <>
927
+ struct numeric_cast_traits
928
+ <
929
+ unsigned int
930
+ , unsigned short
931
+ >
932
+ {
933
+ typedef def_overflow_handler overflow_policy;
934
+ typedef UseInternalRangeChecker range_checking_policy;
935
+ typedef Trunc<unsigned short> rounding_policy;
936
+ };
937
+
938
+ template <>
939
+ struct numeric_cast_traits
940
+ <
941
+ unsigned int
942
+ , int
943
+ >
944
+ {
945
+ typedef def_overflow_handler overflow_policy;
946
+ typedef UseInternalRangeChecker range_checking_policy;
947
+ typedef Trunc<int> rounding_policy;
948
+ };
949
+
950
+ template <>
951
+ struct numeric_cast_traits
952
+ <
953
+ unsigned int
954
+ , unsigned int
955
+ >
956
+ {
957
+ typedef def_overflow_handler overflow_policy;
958
+ typedef UseInternalRangeChecker range_checking_policy;
959
+ typedef Trunc<unsigned int> rounding_policy;
960
+ };
961
+
962
+ template <>
963
+ struct numeric_cast_traits
964
+ <
965
+ unsigned int
966
+ , long
967
+ >
968
+ {
969
+ typedef def_overflow_handler overflow_policy;
970
+ typedef UseInternalRangeChecker range_checking_policy;
971
+ typedef Trunc<long> rounding_policy;
972
+ };
973
+
974
+ template <>
975
+ struct numeric_cast_traits
976
+ <
977
+ unsigned int
978
+ , unsigned long
979
+ >
980
+ {
981
+ typedef def_overflow_handler overflow_policy;
982
+ typedef UseInternalRangeChecker range_checking_policy;
983
+ typedef Trunc<unsigned long> rounding_policy;
984
+ };
985
+
986
+ template <>
987
+ struct numeric_cast_traits
988
+ <
989
+ unsigned int
990
+ , float
991
+ >
992
+ {
993
+ typedef def_overflow_handler overflow_policy;
994
+ typedef UseInternalRangeChecker range_checking_policy;
995
+ typedef Trunc<float> rounding_policy;
996
+ };
997
+
998
+ template <>
999
+ struct numeric_cast_traits
1000
+ <
1001
+ unsigned int
1002
+ , double
1003
+ >
1004
+ {
1005
+ typedef def_overflow_handler overflow_policy;
1006
+ typedef UseInternalRangeChecker range_checking_policy;
1007
+ typedef Trunc<double> rounding_policy;
1008
+ };
1009
+
1010
+ template <>
1011
+ struct numeric_cast_traits
1012
+ <
1013
+ unsigned int
1014
+ , long double
1015
+ >
1016
+ {
1017
+ typedef def_overflow_handler overflow_policy;
1018
+ typedef UseInternalRangeChecker range_checking_policy;
1019
+ typedef Trunc<long double> rounding_policy;
1020
+ };
1021
+
1022
+ template <>
1023
+ struct numeric_cast_traits
1024
+ <
1025
+ long
1026
+ , char
1027
+ >
1028
+ {
1029
+ typedef def_overflow_handler overflow_policy;
1030
+ typedef UseInternalRangeChecker range_checking_policy;
1031
+ typedef Trunc<char> rounding_policy;
1032
+ };
1033
+
1034
+ template <>
1035
+ struct numeric_cast_traits
1036
+ <
1037
+ long
1038
+ , signed char
1039
+ >
1040
+ {
1041
+ typedef def_overflow_handler overflow_policy;
1042
+ typedef UseInternalRangeChecker range_checking_policy;
1043
+ typedef Trunc<signed char> rounding_policy;
1044
+ };
1045
+
1046
+ template <>
1047
+ struct numeric_cast_traits
1048
+ <
1049
+ long
1050
+ , unsigned char
1051
+ >
1052
+ {
1053
+ typedef def_overflow_handler overflow_policy;
1054
+ typedef UseInternalRangeChecker range_checking_policy;
1055
+ typedef Trunc<unsigned char> rounding_policy;
1056
+ };
1057
+
1058
+ template <>
1059
+ struct numeric_cast_traits
1060
+ <
1061
+ long
1062
+ , short
1063
+ >
1064
+ {
1065
+ typedef def_overflow_handler overflow_policy;
1066
+ typedef UseInternalRangeChecker range_checking_policy;
1067
+ typedef Trunc<short> rounding_policy;
1068
+ };
1069
+
1070
+ template <>
1071
+ struct numeric_cast_traits
1072
+ <
1073
+ long
1074
+ , unsigned short
1075
+ >
1076
+ {
1077
+ typedef def_overflow_handler overflow_policy;
1078
+ typedef UseInternalRangeChecker range_checking_policy;
1079
+ typedef Trunc<unsigned short> rounding_policy;
1080
+ };
1081
+
1082
+ template <>
1083
+ struct numeric_cast_traits
1084
+ <
1085
+ long
1086
+ , int
1087
+ >
1088
+ {
1089
+ typedef def_overflow_handler overflow_policy;
1090
+ typedef UseInternalRangeChecker range_checking_policy;
1091
+ typedef Trunc<int> rounding_policy;
1092
+ };
1093
+
1094
+ template <>
1095
+ struct numeric_cast_traits
1096
+ <
1097
+ long
1098
+ , unsigned int
1099
+ >
1100
+ {
1101
+ typedef def_overflow_handler overflow_policy;
1102
+ typedef UseInternalRangeChecker range_checking_policy;
1103
+ typedef Trunc<unsigned int> rounding_policy;
1104
+ };
1105
+
1106
+ template <>
1107
+ struct numeric_cast_traits
1108
+ <
1109
+ long
1110
+ , long
1111
+ >
1112
+ {
1113
+ typedef def_overflow_handler overflow_policy;
1114
+ typedef UseInternalRangeChecker range_checking_policy;
1115
+ typedef Trunc<long> rounding_policy;
1116
+ };
1117
+
1118
+ template <>
1119
+ struct numeric_cast_traits
1120
+ <
1121
+ long
1122
+ , unsigned long
1123
+ >
1124
+ {
1125
+ typedef def_overflow_handler overflow_policy;
1126
+ typedef UseInternalRangeChecker range_checking_policy;
1127
+ typedef Trunc<unsigned long> rounding_policy;
1128
+ };
1129
+
1130
+ template <>
1131
+ struct numeric_cast_traits
1132
+ <
1133
+ long
1134
+ , float
1135
+ >
1136
+ {
1137
+ typedef def_overflow_handler overflow_policy;
1138
+ typedef UseInternalRangeChecker range_checking_policy;
1139
+ typedef Trunc<float> rounding_policy;
1140
+ };
1141
+
1142
+ template <>
1143
+ struct numeric_cast_traits
1144
+ <
1145
+ long
1146
+ , double
1147
+ >
1148
+ {
1149
+ typedef def_overflow_handler overflow_policy;
1150
+ typedef UseInternalRangeChecker range_checking_policy;
1151
+ typedef Trunc<double> rounding_policy;
1152
+ };
1153
+
1154
+ template <>
1155
+ struct numeric_cast_traits
1156
+ <
1157
+ long
1158
+ , long double
1159
+ >
1160
+ {
1161
+ typedef def_overflow_handler overflow_policy;
1162
+ typedef UseInternalRangeChecker range_checking_policy;
1163
+ typedef Trunc<long double> rounding_policy;
1164
+ };
1165
+
1166
+ template <>
1167
+ struct numeric_cast_traits
1168
+ <
1169
+ unsigned long
1170
+ , char
1171
+ >
1172
+ {
1173
+ typedef def_overflow_handler overflow_policy;
1174
+ typedef UseInternalRangeChecker range_checking_policy;
1175
+ typedef Trunc<char> rounding_policy;
1176
+ };
1177
+
1178
+ template <>
1179
+ struct numeric_cast_traits
1180
+ <
1181
+ unsigned long
1182
+ , signed char
1183
+ >
1184
+ {
1185
+ typedef def_overflow_handler overflow_policy;
1186
+ typedef UseInternalRangeChecker range_checking_policy;
1187
+ typedef Trunc<signed char> rounding_policy;
1188
+ };
1189
+
1190
+ template <>
1191
+ struct numeric_cast_traits
1192
+ <
1193
+ unsigned long
1194
+ , unsigned char
1195
+ >
1196
+ {
1197
+ typedef def_overflow_handler overflow_policy;
1198
+ typedef UseInternalRangeChecker range_checking_policy;
1199
+ typedef Trunc<unsigned char> rounding_policy;
1200
+ };
1201
+
1202
+ template <>
1203
+ struct numeric_cast_traits
1204
+ <
1205
+ unsigned long
1206
+ , short
1207
+ >
1208
+ {
1209
+ typedef def_overflow_handler overflow_policy;
1210
+ typedef UseInternalRangeChecker range_checking_policy;
1211
+ typedef Trunc<short> rounding_policy;
1212
+ };
1213
+
1214
+ template <>
1215
+ struct numeric_cast_traits
1216
+ <
1217
+ unsigned long
1218
+ , unsigned short
1219
+ >
1220
+ {
1221
+ typedef def_overflow_handler overflow_policy;
1222
+ typedef UseInternalRangeChecker range_checking_policy;
1223
+ typedef Trunc<unsigned short> rounding_policy;
1224
+ };
1225
+
1226
+ template <>
1227
+ struct numeric_cast_traits
1228
+ <
1229
+ unsigned long
1230
+ , int
1231
+ >
1232
+ {
1233
+ typedef def_overflow_handler overflow_policy;
1234
+ typedef UseInternalRangeChecker range_checking_policy;
1235
+ typedef Trunc<int> rounding_policy;
1236
+ };
1237
+
1238
+ template <>
1239
+ struct numeric_cast_traits
1240
+ <
1241
+ unsigned long
1242
+ , unsigned int
1243
+ >
1244
+ {
1245
+ typedef def_overflow_handler overflow_policy;
1246
+ typedef UseInternalRangeChecker range_checking_policy;
1247
+ typedef Trunc<unsigned int> rounding_policy;
1248
+ };
1249
+
1250
+ template <>
1251
+ struct numeric_cast_traits
1252
+ <
1253
+ unsigned long
1254
+ , long
1255
+ >
1256
+ {
1257
+ typedef def_overflow_handler overflow_policy;
1258
+ typedef UseInternalRangeChecker range_checking_policy;
1259
+ typedef Trunc<long> rounding_policy;
1260
+ };
1261
+
1262
+ template <>
1263
+ struct numeric_cast_traits
1264
+ <
1265
+ unsigned long
1266
+ , unsigned long
1267
+ >
1268
+ {
1269
+ typedef def_overflow_handler overflow_policy;
1270
+ typedef UseInternalRangeChecker range_checking_policy;
1271
+ typedef Trunc<unsigned long> rounding_policy;
1272
+ };
1273
+
1274
+ template <>
1275
+ struct numeric_cast_traits
1276
+ <
1277
+ unsigned long
1278
+ , float
1279
+ >
1280
+ {
1281
+ typedef def_overflow_handler overflow_policy;
1282
+ typedef UseInternalRangeChecker range_checking_policy;
1283
+ typedef Trunc<float> rounding_policy;
1284
+ };
1285
+
1286
+ template <>
1287
+ struct numeric_cast_traits
1288
+ <
1289
+ unsigned long
1290
+ , double
1291
+ >
1292
+ {
1293
+ typedef def_overflow_handler overflow_policy;
1294
+ typedef UseInternalRangeChecker range_checking_policy;
1295
+ typedef Trunc<double> rounding_policy;
1296
+ };
1297
+
1298
+ template <>
1299
+ struct numeric_cast_traits
1300
+ <
1301
+ unsigned long
1302
+ , long double
1303
+ >
1304
+ {
1305
+ typedef def_overflow_handler overflow_policy;
1306
+ typedef UseInternalRangeChecker range_checking_policy;
1307
+ typedef Trunc<long double> rounding_policy;
1308
+ };
1309
+
1310
+ template <>
1311
+ struct numeric_cast_traits
1312
+ <
1313
+ float
1314
+ , char
1315
+ >
1316
+ {
1317
+ typedef def_overflow_handler overflow_policy;
1318
+ typedef UseInternalRangeChecker range_checking_policy;
1319
+ typedef Trunc<char> rounding_policy;
1320
+ };
1321
+
1322
+ template <>
1323
+ struct numeric_cast_traits
1324
+ <
1325
+ float
1326
+ , signed char
1327
+ >
1328
+ {
1329
+ typedef def_overflow_handler overflow_policy;
1330
+ typedef UseInternalRangeChecker range_checking_policy;
1331
+ typedef Trunc<signed char> rounding_policy;
1332
+ };
1333
+
1334
+ template <>
1335
+ struct numeric_cast_traits
1336
+ <
1337
+ float
1338
+ , unsigned char
1339
+ >
1340
+ {
1341
+ typedef def_overflow_handler overflow_policy;
1342
+ typedef UseInternalRangeChecker range_checking_policy;
1343
+ typedef Trunc<unsigned char> rounding_policy;
1344
+ };
1345
+
1346
+ template <>
1347
+ struct numeric_cast_traits
1348
+ <
1349
+ float
1350
+ , short
1351
+ >
1352
+ {
1353
+ typedef def_overflow_handler overflow_policy;
1354
+ typedef UseInternalRangeChecker range_checking_policy;
1355
+ typedef Trunc<short> rounding_policy;
1356
+ };
1357
+
1358
+ template <>
1359
+ struct numeric_cast_traits
1360
+ <
1361
+ float
1362
+ , unsigned short
1363
+ >
1364
+ {
1365
+ typedef def_overflow_handler overflow_policy;
1366
+ typedef UseInternalRangeChecker range_checking_policy;
1367
+ typedef Trunc<unsigned short> rounding_policy;
1368
+ };
1369
+
1370
+ template <>
1371
+ struct numeric_cast_traits
1372
+ <
1373
+ float
1374
+ , int
1375
+ >
1376
+ {
1377
+ typedef def_overflow_handler overflow_policy;
1378
+ typedef UseInternalRangeChecker range_checking_policy;
1379
+ typedef Trunc<int> rounding_policy;
1380
+ };
1381
+
1382
+ template <>
1383
+ struct numeric_cast_traits
1384
+ <
1385
+ float
1386
+ , unsigned int
1387
+ >
1388
+ {
1389
+ typedef def_overflow_handler overflow_policy;
1390
+ typedef UseInternalRangeChecker range_checking_policy;
1391
+ typedef Trunc<unsigned int> rounding_policy;
1392
+ };
1393
+
1394
+ template <>
1395
+ struct numeric_cast_traits
1396
+ <
1397
+ float
1398
+ , long
1399
+ >
1400
+ {
1401
+ typedef def_overflow_handler overflow_policy;
1402
+ typedef UseInternalRangeChecker range_checking_policy;
1403
+ typedef Trunc<long> rounding_policy;
1404
+ };
1405
+
1406
+ template <>
1407
+ struct numeric_cast_traits
1408
+ <
1409
+ float
1410
+ , unsigned long
1411
+ >
1412
+ {
1413
+ typedef def_overflow_handler overflow_policy;
1414
+ typedef UseInternalRangeChecker range_checking_policy;
1415
+ typedef Trunc<unsigned long> rounding_policy;
1416
+ };
1417
+
1418
+ template <>
1419
+ struct numeric_cast_traits
1420
+ <
1421
+ float
1422
+ , float
1423
+ >
1424
+ {
1425
+ typedef def_overflow_handler overflow_policy;
1426
+ typedef UseInternalRangeChecker range_checking_policy;
1427
+ typedef Trunc<float> rounding_policy;
1428
+ };
1429
+
1430
+ template <>
1431
+ struct numeric_cast_traits
1432
+ <
1433
+ float
1434
+ , double
1435
+ >
1436
+ {
1437
+ typedef def_overflow_handler overflow_policy;
1438
+ typedef UseInternalRangeChecker range_checking_policy;
1439
+ typedef Trunc<double> rounding_policy;
1440
+ };
1441
+
1442
+ template <>
1443
+ struct numeric_cast_traits
1444
+ <
1445
+ float
1446
+ , long double
1447
+ >
1448
+ {
1449
+ typedef def_overflow_handler overflow_policy;
1450
+ typedef UseInternalRangeChecker range_checking_policy;
1451
+ typedef Trunc<long double> rounding_policy;
1452
+ };
1453
+
1454
+ template <>
1455
+ struct numeric_cast_traits
1456
+ <
1457
+ double
1458
+ , char
1459
+ >
1460
+ {
1461
+ typedef def_overflow_handler overflow_policy;
1462
+ typedef UseInternalRangeChecker range_checking_policy;
1463
+ typedef Trunc<char> rounding_policy;
1464
+ };
1465
+
1466
+ template <>
1467
+ struct numeric_cast_traits
1468
+ <
1469
+ double
1470
+ , signed char
1471
+ >
1472
+ {
1473
+ typedef def_overflow_handler overflow_policy;
1474
+ typedef UseInternalRangeChecker range_checking_policy;
1475
+ typedef Trunc<signed char> rounding_policy;
1476
+ };
1477
+
1478
+ template <>
1479
+ struct numeric_cast_traits
1480
+ <
1481
+ double
1482
+ , unsigned char
1483
+ >
1484
+ {
1485
+ typedef def_overflow_handler overflow_policy;
1486
+ typedef UseInternalRangeChecker range_checking_policy;
1487
+ typedef Trunc<unsigned char> rounding_policy;
1488
+ };
1489
+
1490
+ template <>
1491
+ struct numeric_cast_traits
1492
+ <
1493
+ double
1494
+ , short
1495
+ >
1496
+ {
1497
+ typedef def_overflow_handler overflow_policy;
1498
+ typedef UseInternalRangeChecker range_checking_policy;
1499
+ typedef Trunc<short> rounding_policy;
1500
+ };
1501
+
1502
+ template <>
1503
+ struct numeric_cast_traits
1504
+ <
1505
+ double
1506
+ , unsigned short
1507
+ >
1508
+ {
1509
+ typedef def_overflow_handler overflow_policy;
1510
+ typedef UseInternalRangeChecker range_checking_policy;
1511
+ typedef Trunc<unsigned short> rounding_policy;
1512
+ };
1513
+
1514
+ template <>
1515
+ struct numeric_cast_traits
1516
+ <
1517
+ double
1518
+ , int
1519
+ >
1520
+ {
1521
+ typedef def_overflow_handler overflow_policy;
1522
+ typedef UseInternalRangeChecker range_checking_policy;
1523
+ typedef Trunc<int> rounding_policy;
1524
+ };
1525
+
1526
+ template <>
1527
+ struct numeric_cast_traits
1528
+ <
1529
+ double
1530
+ , unsigned int
1531
+ >
1532
+ {
1533
+ typedef def_overflow_handler overflow_policy;
1534
+ typedef UseInternalRangeChecker range_checking_policy;
1535
+ typedef Trunc<unsigned int> rounding_policy;
1536
+ };
1537
+
1538
+ template <>
1539
+ struct numeric_cast_traits
1540
+ <
1541
+ double
1542
+ , long
1543
+ >
1544
+ {
1545
+ typedef def_overflow_handler overflow_policy;
1546
+ typedef UseInternalRangeChecker range_checking_policy;
1547
+ typedef Trunc<long> rounding_policy;
1548
+ };
1549
+
1550
+ template <>
1551
+ struct numeric_cast_traits
1552
+ <
1553
+ double
1554
+ , unsigned long
1555
+ >
1556
+ {
1557
+ typedef def_overflow_handler overflow_policy;
1558
+ typedef UseInternalRangeChecker range_checking_policy;
1559
+ typedef Trunc<unsigned long> rounding_policy;
1560
+ };
1561
+
1562
+ template <>
1563
+ struct numeric_cast_traits
1564
+ <
1565
+ double
1566
+ , float
1567
+ >
1568
+ {
1569
+ typedef def_overflow_handler overflow_policy;
1570
+ typedef UseInternalRangeChecker range_checking_policy;
1571
+ typedef Trunc<float> rounding_policy;
1572
+ };
1573
+
1574
+ template <>
1575
+ struct numeric_cast_traits
1576
+ <
1577
+ double
1578
+ , double
1579
+ >
1580
+ {
1581
+ typedef def_overflow_handler overflow_policy;
1582
+ typedef UseInternalRangeChecker range_checking_policy;
1583
+ typedef Trunc<double> rounding_policy;
1584
+ };
1585
+
1586
+ template <>
1587
+ struct numeric_cast_traits
1588
+ <
1589
+ double
1590
+ , long double
1591
+ >
1592
+ {
1593
+ typedef def_overflow_handler overflow_policy;
1594
+ typedef UseInternalRangeChecker range_checking_policy;
1595
+ typedef Trunc<long double> rounding_policy;
1596
+ };
1597
+
1598
+ template <>
1599
+ struct numeric_cast_traits
1600
+ <
1601
+ long double
1602
+ , char
1603
+ >
1604
+ {
1605
+ typedef def_overflow_handler overflow_policy;
1606
+ typedef UseInternalRangeChecker range_checking_policy;
1607
+ typedef Trunc<char> rounding_policy;
1608
+ };
1609
+
1610
+ template <>
1611
+ struct numeric_cast_traits
1612
+ <
1613
+ long double
1614
+ , signed char
1615
+ >
1616
+ {
1617
+ typedef def_overflow_handler overflow_policy;
1618
+ typedef UseInternalRangeChecker range_checking_policy;
1619
+ typedef Trunc<signed char> rounding_policy;
1620
+ };
1621
+
1622
+ template <>
1623
+ struct numeric_cast_traits
1624
+ <
1625
+ long double
1626
+ , unsigned char
1627
+ >
1628
+ {
1629
+ typedef def_overflow_handler overflow_policy;
1630
+ typedef UseInternalRangeChecker range_checking_policy;
1631
+ typedef Trunc<unsigned char> rounding_policy;
1632
+ };
1633
+
1634
+ template <>
1635
+ struct numeric_cast_traits
1636
+ <
1637
+ long double
1638
+ , short
1639
+ >
1640
+ {
1641
+ typedef def_overflow_handler overflow_policy;
1642
+ typedef UseInternalRangeChecker range_checking_policy;
1643
+ typedef Trunc<short> rounding_policy;
1644
+ };
1645
+
1646
+ template <>
1647
+ struct numeric_cast_traits
1648
+ <
1649
+ long double
1650
+ , unsigned short
1651
+ >
1652
+ {
1653
+ typedef def_overflow_handler overflow_policy;
1654
+ typedef UseInternalRangeChecker range_checking_policy;
1655
+ typedef Trunc<unsigned short> rounding_policy;
1656
+ };
1657
+
1658
+ template <>
1659
+ struct numeric_cast_traits
1660
+ <
1661
+ long double
1662
+ , int
1663
+ >
1664
+ {
1665
+ typedef def_overflow_handler overflow_policy;
1666
+ typedef UseInternalRangeChecker range_checking_policy;
1667
+ typedef Trunc<int> rounding_policy;
1668
+ };
1669
+
1670
+ template <>
1671
+ struct numeric_cast_traits
1672
+ <
1673
+ long double
1674
+ , unsigned int
1675
+ >
1676
+ {
1677
+ typedef def_overflow_handler overflow_policy;
1678
+ typedef UseInternalRangeChecker range_checking_policy;
1679
+ typedef Trunc<unsigned int> rounding_policy;
1680
+ };
1681
+
1682
+ template <>
1683
+ struct numeric_cast_traits
1684
+ <
1685
+ long double
1686
+ , long
1687
+ >
1688
+ {
1689
+ typedef def_overflow_handler overflow_policy;
1690
+ typedef UseInternalRangeChecker range_checking_policy;
1691
+ typedef Trunc<long> rounding_policy;
1692
+ };
1693
+
1694
+ template <>
1695
+ struct numeric_cast_traits
1696
+ <
1697
+ long double
1698
+ , unsigned long
1699
+ >
1700
+ {
1701
+ typedef def_overflow_handler overflow_policy;
1702
+ typedef UseInternalRangeChecker range_checking_policy;
1703
+ typedef Trunc<unsigned long> rounding_policy;
1704
+ };
1705
+
1706
+ template <>
1707
+ struct numeric_cast_traits
1708
+ <
1709
+ long double
1710
+ , float
1711
+ >
1712
+ {
1713
+ typedef def_overflow_handler overflow_policy;
1714
+ typedef UseInternalRangeChecker range_checking_policy;
1715
+ typedef Trunc<float> rounding_policy;
1716
+ };
1717
+
1718
+ template <>
1719
+ struct numeric_cast_traits
1720
+ <
1721
+ long double
1722
+ , double
1723
+ >
1724
+ {
1725
+ typedef def_overflow_handler overflow_policy;
1726
+ typedef UseInternalRangeChecker range_checking_policy;
1727
+ typedef Trunc<double> rounding_policy;
1728
+ };
1729
+
1730
+ template <>
1731
+ struct numeric_cast_traits
1732
+ <
1733
+ long double
1734
+ , long double
1735
+ >
1736
+ {
1737
+ typedef def_overflow_handler overflow_policy;
1738
+ typedef UseInternalRangeChecker range_checking_policy;
1739
+ typedef Trunc<long double> rounding_policy;
1740
+ };
1741
+ }}