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,1070 @@
1
+ // math_fwd.hpp
2
+
3
+ // TODO revise completely for new distribution classes.
4
+
5
+ // Copyright Paul A. Bristow 2006.
6
+ // Copyright John Maddock 2006.
7
+
8
+ // Use, modification and distribution are subject to the
9
+ // Boost Software License, Version 1.0.
10
+ // (See accompanying file LICENSE_1_0.txt
11
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
12
+
13
+ // Omnibus list of forward declarations of math special functions.
14
+
15
+ // IT = Integer type.
16
+ // RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types
17
+ // AT = Integer or Real type
18
+
19
+ #ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP
20
+ #define BOOST_MATH_SPECIAL_MATH_FWD_HPP
21
+
22
+ #ifdef _MSC_VER
23
+ #pragma once
24
+ #endif
25
+
26
+ #include <boost/math/special_functions/detail/round_fwd.hpp>
27
+ #include <boost/math/tools/promotion.hpp> // for argument promotion.
28
+ #include <boost/math/policies/policy.hpp>
29
+ #include <boost/mpl/comparison.hpp>
30
+ #include <boost/config/no_tr1/complex.hpp>
31
+
32
+ #define BOOST_NO_MACRO_EXPAND /**/
33
+
34
+ namespace boost
35
+ {
36
+ namespace math
37
+ { // Math functions (in roughly alphabetic order).
38
+
39
+ // Beta functions.
40
+ template <class RT1, class RT2>
41
+ typename tools::promote_args<RT1, RT2>::type
42
+ beta(RT1 a, RT2 b); // Beta function (2 arguments).
43
+
44
+ template <class RT1, class RT2, class A>
45
+ typename tools::promote_args<RT1, RT2, A>::type
46
+ beta(RT1 a, RT2 b, A x); // Beta function (3 arguments).
47
+
48
+ template <class RT1, class RT2, class RT3, class Policy>
49
+ typename tools::promote_args<RT1, RT2, RT3>::type
50
+ beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments).
51
+
52
+ template <class RT1, class RT2, class RT3>
53
+ typename tools::promote_args<RT1, RT2, RT3>::type
54
+ betac(RT1 a, RT2 b, RT3 x);
55
+
56
+ template <class RT1, class RT2, class RT3, class Policy>
57
+ typename tools::promote_args<RT1, RT2, RT3>::type
58
+ betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
59
+
60
+ template <class RT1, class RT2, class RT3>
61
+ typename tools::promote_args<RT1, RT2, RT3>::type
62
+ ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function.
63
+
64
+ template <class RT1, class RT2, class RT3, class Policy>
65
+ typename tools::promote_args<RT1, RT2, RT3>::type
66
+ ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function.
67
+
68
+ template <class RT1, class RT2, class RT3>
69
+ typename tools::promote_args<RT1, RT2, RT3>::type
70
+ ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function.
71
+
72
+ template <class RT1, class RT2, class RT3, class Policy>
73
+ typename tools::promote_args<RT1, RT2, RT3>::type
74
+ ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function.
75
+
76
+ template <class T1, class T2, class T3, class T4>
77
+ typename tools::promote_args<T1, T2, T3, T4>::type
78
+ ibeta_inv(T1 a, T2 b, T3 p, T4* py);
79
+
80
+ template <class T1, class T2, class T3, class T4, class Policy>
81
+ typename tools::promote_args<T1, T2, T3, T4>::type
82
+ ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
83
+
84
+ template <class RT1, class RT2, class RT3>
85
+ typename tools::promote_args<RT1, RT2, RT3>::type
86
+ ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
87
+
88
+ template <class RT1, class RT2, class RT3, class Policy>
89
+ typename tools::promote_args<RT1, RT2, RT3>::type
90
+ ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
91
+
92
+ template <class RT1, class RT2, class RT3>
93
+ typename tools::promote_args<RT1, RT2, RT3>::type
94
+ ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
95
+
96
+ template <class RT1, class RT2, class RT3, class Policy>
97
+ typename tools::promote_args<RT1, RT2, RT3>::type
98
+ ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
99
+
100
+ template <class RT1, class RT2, class RT3>
101
+ typename tools::promote_args<RT1, RT2, RT3>::type
102
+ ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
103
+
104
+ template <class RT1, class RT2, class RT3, class Policy>
105
+ typename tools::promote_args<RT1, RT2, RT3>::type
106
+ ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
107
+
108
+ template <class T1, class T2, class T3, class T4>
109
+ typename tools::promote_args<T1, T2, T3, T4>::type
110
+ ibetac_inv(T1 a, T2 b, T3 q, T4* py);
111
+
112
+ template <class T1, class T2, class T3, class T4, class Policy>
113
+ typename tools::promote_args<T1, T2, T3, T4>::type
114
+ ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
115
+
116
+ template <class RT1, class RT2, class RT3>
117
+ typename tools::promote_args<RT1, RT2, RT3>::type
118
+ ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
119
+
120
+ template <class RT1, class RT2, class RT3, class Policy>
121
+ typename tools::promote_args<RT1, RT2, RT3>::type
122
+ ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
123
+
124
+ template <class RT1, class RT2, class RT3>
125
+ typename tools::promote_args<RT1, RT2, RT3>::type
126
+ ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
127
+
128
+ template <class RT1, class RT2, class RT3, class Policy>
129
+ typename tools::promote_args<RT1, RT2, RT3>::type
130
+ ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
131
+
132
+ template <class RT1, class RT2, class RT3>
133
+ typename tools::promote_args<RT1, RT2, RT3>::type
134
+ ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
135
+
136
+ template <class RT1, class RT2, class RT3, class Policy>
137
+ typename tools::promote_args<RT1, RT2, RT3>::type
138
+ ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
139
+
140
+ template <class RT1, class RT2, class RT3>
141
+ typename tools::promote_args<RT1, RT2, RT3>::type
142
+ ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta
143
+
144
+ template <class RT1, class RT2, class RT3, class Policy>
145
+ typename tools::promote_args<RT1, RT2, RT3>::type
146
+ ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta
147
+
148
+ // erf & erfc error functions.
149
+ template <class RT> // Error function.
150
+ typename tools::promote_args<RT>::type erf(RT z);
151
+ template <class RT, class Policy> // Error function.
152
+ typename tools::promote_args<RT>::type erf(RT z, const Policy&);
153
+
154
+ template <class RT>// Error function complement.
155
+ typename tools::promote_args<RT>::type erfc(RT z);
156
+ template <class RT, class Policy>// Error function complement.
157
+ typename tools::promote_args<RT>::type erfc(RT z, const Policy&);
158
+
159
+ template <class RT>// Error function inverse.
160
+ typename tools::promote_args<RT>::type erf_inv(RT z);
161
+ template <class RT, class Policy>// Error function inverse.
162
+ typename tools::promote_args<RT>::type erf_inv(RT z, const Policy& pol);
163
+
164
+ template <class RT>// Error function complement inverse.
165
+ typename tools::promote_args<RT>::type erfc_inv(RT z);
166
+ template <class RT, class Policy>// Error function complement inverse.
167
+ typename tools::promote_args<RT>::type erfc_inv(RT z, const Policy& pol);
168
+
169
+ // Polynomials:
170
+ template <class T1, class T2, class T3>
171
+ typename tools::promote_args<T1, T2, T3>::type
172
+ legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
173
+
174
+ template <class T>
175
+ typename tools::promote_args<T>::type
176
+ legendre_p(int l, T x);
177
+
178
+ template <class T, class Policy>
179
+ typename tools::promote_args<T>::type
180
+ legendre_p(int l, T x, const Policy& pol);
181
+
182
+ template <class T>
183
+ typename tools::promote_args<T>::type
184
+ legendre_q(unsigned l, T x);
185
+
186
+ template <class T, class Policy>
187
+ typename tools::promote_args<T>::type
188
+ legendre_q(unsigned l, T x, const Policy& pol);
189
+
190
+ template <class T1, class T2, class T3>
191
+ typename tools::promote_args<T1, T2, T3>::type
192
+ legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
193
+
194
+ template <class T>
195
+ typename tools::promote_args<T>::type
196
+ legendre_p(int l, int m, T x);
197
+
198
+ template <class T, class Policy>
199
+ typename tools::promote_args<T>::type
200
+ legendre_p(int l, int m, T x, const Policy& pol);
201
+
202
+ template <class T1, class T2, class T3>
203
+ typename tools::promote_args<T1, T2, T3>::type
204
+ laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
205
+
206
+ template <class T1, class T2, class T3>
207
+ typename tools::promote_args<T1, T2, T3>::type
208
+ laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
209
+
210
+ template <class T>
211
+ typename tools::promote_args<T>::type
212
+ laguerre(unsigned n, T x);
213
+
214
+ template <class T, class Policy>
215
+ typename tools::promote_args<T>::type
216
+ laguerre(unsigned n, unsigned m, T x, const Policy& pol);
217
+
218
+ template <class T1, class T2>
219
+ struct laguerre_result
220
+ {
221
+ typedef typename mpl::if_<
222
+ policies::is_policy<T2>,
223
+ typename tools::promote_args<T1>::type,
224
+ typename tools::promote_args<T2>::type
225
+ >::type type;
226
+ };
227
+
228
+ template <class T1, class T2>
229
+ typename laguerre_result<T1, T2>::type
230
+ laguerre(unsigned n, T1 m, T2 x);
231
+
232
+ template <class T>
233
+ typename tools::promote_args<T>::type
234
+ hermite(unsigned n, T x);
235
+
236
+ template <class T, class Policy>
237
+ typename tools::promote_args<T>::type
238
+ hermite(unsigned n, T x, const Policy& pol);
239
+
240
+ template <class T1, class T2, class T3>
241
+ typename tools::promote_args<T1, T2, T3>::type
242
+ hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
243
+
244
+ template <class T1, class T2>
245
+ std::complex<typename tools::promote_args<T1, T2>::type>
246
+ spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
247
+
248
+ template <class T1, class T2, class Policy>
249
+ std::complex<typename tools::promote_args<T1, T2>::type>
250
+ spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
251
+
252
+ template <class T1, class T2>
253
+ typename tools::promote_args<T1, T2>::type
254
+ spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
255
+
256
+ template <class T1, class T2, class Policy>
257
+ typename tools::promote_args<T1, T2>::type
258
+ spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
259
+
260
+ template <class T1, class T2>
261
+ typename tools::promote_args<T1, T2>::type
262
+ spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
263
+
264
+ template <class T1, class T2, class Policy>
265
+ typename tools::promote_args<T1, T2>::type
266
+ spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
267
+
268
+ // Elliptic integrals:
269
+ template <class T1, class T2, class T3>
270
+ typename tools::promote_args<T1, T2, T3>::type
271
+ ellint_rf(T1 x, T2 y, T3 z);
272
+
273
+ template <class T1, class T2, class T3, class Policy>
274
+ typename tools::promote_args<T1, T2, T3>::type
275
+ ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
276
+
277
+ template <class T1, class T2, class T3>
278
+ typename tools::promote_args<T1, T2, T3>::type
279
+ ellint_rd(T1 x, T2 y, T3 z);
280
+
281
+ template <class T1, class T2, class T3, class Policy>
282
+ typename tools::promote_args<T1, T2, T3>::type
283
+ ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
284
+
285
+ template <class T1, class T2>
286
+ typename tools::promote_args<T1, T2>::type
287
+ ellint_rc(T1 x, T2 y);
288
+
289
+ template <class T1, class T2, class Policy>
290
+ typename tools::promote_args<T1, T2>::type
291
+ ellint_rc(T1 x, T2 y, const Policy& pol);
292
+
293
+ template <class T1, class T2, class T3, class T4>
294
+ typename tools::promote_args<T1, T2, T3, T4>::type
295
+ ellint_rj(T1 x, T2 y, T3 z, T4 p);
296
+
297
+ template <class T1, class T2, class T3, class T4, class Policy>
298
+ typename tools::promote_args<T1, T2, T3, T4>::type
299
+ ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
300
+
301
+ template <typename T>
302
+ typename tools::promote_args<T>::type ellint_2(T k);
303
+
304
+ template <class T1, class T2>
305
+ typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi);
306
+
307
+ template <class T1, class T2, class Policy>
308
+ typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol);
309
+
310
+ template <typename T>
311
+ typename tools::promote_args<T>::type ellint_1(T k);
312
+
313
+ template <class T1, class T2>
314
+ typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi);
315
+
316
+ template <class T1, class T2, class Policy>
317
+ typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol);
318
+
319
+ namespace detail{
320
+
321
+ template <class T, class U, class V>
322
+ struct ellint_3_result
323
+ {
324
+ typedef typename mpl::if_<
325
+ policies::is_policy<V>,
326
+ typename tools::promote_args<T, U>::type,
327
+ typename tools::promote_args<T, U, V>::type
328
+ >::type type;
329
+ };
330
+
331
+ } // namespace detail
332
+
333
+
334
+ template <class T1, class T2, class T3>
335
+ typename detail::ellint_3_result<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi);
336
+
337
+ template <class T1, class T2, class T3, class Policy>
338
+ typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol);
339
+
340
+ template <class T1, class T2>
341
+ typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v);
342
+
343
+ // Factorial functions.
344
+ // Note: not for integral types, at present.
345
+ template <class RT>
346
+ struct max_factorial;
347
+ template <class RT>
348
+ RT factorial(unsigned int);
349
+ template <class RT, class Policy>
350
+ RT factorial(unsigned int, const Policy& pol);
351
+ template <class RT>
352
+ RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
353
+ template <class RT>
354
+ RT double_factorial(unsigned i);
355
+ template <class RT, class Policy>
356
+ RT double_factorial(unsigned i, const Policy& pol);
357
+
358
+ template <class RT>
359
+ typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n);
360
+
361
+ template <class RT, class Policy>
362
+ typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n, const Policy& pol);
363
+
364
+ template <class RT>
365
+ typename tools::promote_args<RT>::type rising_factorial(RT x, int n);
366
+
367
+ template <class RT, class Policy>
368
+ typename tools::promote_args<RT>::type rising_factorial(RT x, int n, const Policy& pol);
369
+
370
+ // Gamma functions.
371
+ template <class RT>
372
+ typename tools::promote_args<RT>::type tgamma(RT z);
373
+
374
+ template <class RT>
375
+ typename tools::promote_args<RT>::type tgamma1pm1(RT z);
376
+
377
+ template <class RT, class Policy>
378
+ typename tools::promote_args<RT>::type tgamma1pm1(RT z, const Policy& pol);
379
+
380
+ template <class RT1, class RT2>
381
+ typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z);
382
+
383
+ template <class RT1, class RT2, class Policy>
384
+ typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z, const Policy& pol);
385
+
386
+ template <class RT>
387
+ typename tools::promote_args<RT>::type lgamma(RT z, int* sign);
388
+
389
+ template <class RT, class Policy>
390
+ typename tools::promote_args<RT>::type lgamma(RT z, int* sign, const Policy& pol);
391
+
392
+ template <class RT>
393
+ typename tools::promote_args<RT>::type lgamma(RT x);
394
+
395
+ template <class RT, class Policy>
396
+ typename tools::promote_args<RT>::type lgamma(RT x, const Policy& pol);
397
+
398
+ template <class RT1, class RT2>
399
+ typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z);
400
+
401
+ template <class RT1, class RT2, class Policy>
402
+ typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z, const Policy&);
403
+
404
+ template <class RT1, class RT2>
405
+ typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z);
406
+
407
+ template <class RT1, class RT2, class Policy>
408
+ typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z, const Policy&);
409
+
410
+ template <class RT1, class RT2>
411
+ typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z);
412
+
413
+ template <class RT1, class RT2, class Policy>
414
+ typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z, const Policy&);
415
+
416
+ template <class T1, class T2>
417
+ typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta);
418
+
419
+ template <class T1, class T2, class Policy>
420
+ typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta, const Policy&);
421
+
422
+ template <class T1, class T2>
423
+ typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b);
424
+
425
+ template <class T1, class T2, class Policy>
426
+ typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b, const Policy&);
427
+
428
+ template <class T1, class T2>
429
+ typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x);
430
+
431
+ template <class T1, class T2, class Policy>
432
+ typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x, const Policy&);
433
+
434
+ // gamma inverse.
435
+ template <class T1, class T2>
436
+ typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p);
437
+
438
+ template <class T1, class T2, class Policy>
439
+ typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p, const Policy&);
440
+
441
+ template <class T1, class T2>
442
+ typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p);
443
+
444
+ template <class T1, class T2, class Policy>
445
+ typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p, const Policy&);
446
+
447
+ template <class T1, class T2>
448
+ typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q);
449
+
450
+ template <class T1, class T2, class Policy>
451
+ typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q, const Policy&);
452
+
453
+ template <class T1, class T2>
454
+ typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q);
455
+
456
+ template <class T1, class T2, class Policy>
457
+ typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q, const Policy&);
458
+
459
+ // digamma:
460
+ template <class T>
461
+ typename tools::promote_args<T>::type digamma(T x);
462
+
463
+ template <class T, class Policy>
464
+ typename tools::promote_args<T>::type digamma(T x, const Policy&);
465
+
466
+ // Hypotenuse function sqrt(x ^ 2 + y ^ 2).
467
+ template <class T1, class T2>
468
+ typename tools::promote_args<T1, T2>::type
469
+ hypot(T1 x, T2 y);
470
+
471
+ template <class T1, class T2, class Policy>
472
+ typename tools::promote_args<T1, T2>::type
473
+ hypot(T1 x, T2 y, const Policy&);
474
+
475
+ // cbrt - cube root.
476
+ template <class RT>
477
+ typename tools::promote_args<RT>::type cbrt(RT z);
478
+
479
+ template <class RT, class Policy>
480
+ typename tools::promote_args<RT>::type cbrt(RT z, const Policy&);
481
+
482
+ // log1p is log(x + 1)
483
+ template <class T>
484
+ typename tools::promote_args<T>::type log1p(T);
485
+
486
+ template <class T, class Policy>
487
+ typename tools::promote_args<T>::type log1p(T, const Policy&);
488
+
489
+ // log1pmx is log(x + 1) - x
490
+ template <class T>
491
+ typename tools::promote_args<T>::type log1pmx(T);
492
+
493
+ template <class T, class Policy>
494
+ typename tools::promote_args<T>::type log1pmx(T, const Policy&);
495
+
496
+ // Exp (x) minus 1 functions.
497
+ template <class T>
498
+ typename tools::promote_args<T>::type expm1(T);
499
+
500
+ template <class T, class Policy>
501
+ typename tools::promote_args<T>::type expm1(T, const Policy&);
502
+
503
+ // Power - 1
504
+ template <class T1, class T2>
505
+ typename tools::promote_args<T1, T2>::type
506
+ powm1(const T1 a, const T2 z);
507
+
508
+ template <class T1, class T2, class Policy>
509
+ typename tools::promote_args<T1, T2>::type
510
+ powm1(const T1 a, const T2 z, const Policy&);
511
+
512
+ // sqrt(1+x) - 1
513
+ template <class T>
514
+ typename tools::promote_args<T>::type sqrt1pm1(const T& val);
515
+
516
+ template <class T, class Policy>
517
+ typename tools::promote_args<T>::type sqrt1pm1(const T& val, const Policy&);
518
+
519
+ // sinus cardinals:
520
+ template <class T>
521
+ typename tools::promote_args<T>::type sinc_pi(T x);
522
+
523
+ template <class T, class Policy>
524
+ typename tools::promote_args<T>::type sinc_pi(T x, const Policy&);
525
+
526
+ template <class T>
527
+ typename tools::promote_args<T>::type sinhc_pi(T x);
528
+
529
+ template <class T, class Policy>
530
+ typename tools::promote_args<T>::type sinhc_pi(T x, const Policy&);
531
+
532
+ // inverse hyperbolics:
533
+ template<typename T>
534
+ typename tools::promote_args<T>::type asinh(T x);
535
+
536
+ template<typename T, class Policy>
537
+ typename tools::promote_args<T>::type asinh(T x, const Policy&);
538
+
539
+ template<typename T>
540
+ typename tools::promote_args<T>::type acosh(T x);
541
+
542
+ template<typename T, class Policy>
543
+ typename tools::promote_args<T>::type acosh(T x, const Policy&);
544
+
545
+ template<typename T>
546
+ typename tools::promote_args<T>::type atanh(T x);
547
+
548
+ template<typename T, class Policy>
549
+ typename tools::promote_args<T>::type atanh(T x, const Policy&);
550
+
551
+ namespace detail{
552
+
553
+ typedef mpl::int_<0> bessel_no_int_tag; // No integer optimisation possible.
554
+ typedef mpl::int_<1> bessel_maybe_int_tag; // Maybe integer optimisation.
555
+ typedef mpl::int_<2> bessel_int_tag; // Definite integer optimistaion.
556
+
557
+ template <class T1, class T2, class Policy>
558
+ struct bessel_traits
559
+ {
560
+ typedef typename tools::promote_args<
561
+ T1, T2
562
+ >::type result_type;
563
+
564
+ typedef typename policies::precision<result_type, Policy>::type precision_type;
565
+
566
+ typedef typename mpl::if_<
567
+ mpl::or_<
568
+ mpl::less_equal<precision_type, mpl::int_<0> >,
569
+ mpl::greater<precision_type, mpl::int_<64> > >,
570
+ bessel_no_int_tag,
571
+ typename mpl::if_<
572
+ is_integral<T1>,
573
+ bessel_int_tag,
574
+ bessel_maybe_int_tag
575
+ >::type
576
+ >::type optimisation_tag;
577
+ };
578
+ } // detail
579
+
580
+ // Bessel functions:
581
+ template <class T1, class T2, class Policy>
582
+ typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j(T1 v, T2 x, const Policy& pol);
583
+
584
+ template <class T1, class T2>
585
+ typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j(T1 v, T2 x);
586
+
587
+ template <class T, class Policy>
588
+ typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel(unsigned v, T x, const Policy& pol);
589
+
590
+ template <class T>
591
+ typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x);
592
+
593
+ template <class T1, class T2, class Policy>
594
+ typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i(T1 v, T2 x, const Policy& pol);
595
+
596
+ template <class T1, class T2>
597
+ typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i(T1 v, T2 x);
598
+
599
+ template <class T1, class T2, class Policy>
600
+ typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k(T1 v, T2 x, const Policy& pol);
601
+
602
+ template <class T1, class T2>
603
+ typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k(T1 v, T2 x);
604
+
605
+ template <class T1, class T2, class Policy>
606
+ typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann(T1 v, T2 x, const Policy& pol);
607
+
608
+ template <class T1, class T2>
609
+ typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann(T1 v, T2 x);
610
+
611
+ template <class T, class Policy>
612
+ typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann(unsigned v, T x, const Policy& pol);
613
+
614
+ template <class T>
615
+ typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
616
+
617
+ template <class T, class Policy>
618
+ typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
619
+
620
+ template <class T>
621
+ typename tools::promote_args<T>::type sin_pi(T x);
622
+
623
+ template <class T, class Policy>
624
+ typename tools::promote_args<T>::type cos_pi(T x, const Policy&);
625
+
626
+ template <class T>
627
+ typename tools::promote_args<T>::type cos_pi(T x);
628
+
629
+ template <class T>
630
+ int fpclassify BOOST_NO_MACRO_EXPAND(T t);
631
+
632
+ template <class T>
633
+ bool isfinite BOOST_NO_MACRO_EXPAND(T z);
634
+
635
+ template <class T>
636
+ bool isinf BOOST_NO_MACRO_EXPAND(T t);
637
+
638
+ template <class T>
639
+ bool isnan BOOST_NO_MACRO_EXPAND(T t);
640
+
641
+ template <class T>
642
+ bool isnormal BOOST_NO_MACRO_EXPAND(T t);
643
+
644
+ template<class T>
645
+ int signbit BOOST_NO_MACRO_EXPAND(T x);
646
+
647
+ template <class T>
648
+ int sign BOOST_NO_MACRO_EXPAND(const T& z);
649
+
650
+ template <class T>
651
+ T copysign BOOST_NO_MACRO_EXPAND(const T& x, const T& y);
652
+
653
+ template <class T>
654
+ T changesign BOOST_NO_MACRO_EXPAND(const T& z);
655
+
656
+ // Exponential integrals:
657
+ namespace detail{
658
+
659
+ template <class T, class U>
660
+ struct expint_result
661
+ {
662
+ typedef typename mpl::if_<
663
+ policies::is_policy<U>,
664
+ typename tools::promote_args<T>::type,
665
+ typename tools::promote_args<U>::type
666
+ >::type type;
667
+ };
668
+
669
+ } // namespace detail
670
+
671
+ template <class T, class Policy>
672
+ typename tools::promote_args<T>::type expint(unsigned n, T z, const Policy&);
673
+
674
+ template <class T, class U>
675
+ typename detail::expint_result<T, U>::type expint(T const z, U const u);
676
+
677
+ template <class T>
678
+ typename tools::promote_args<T>::type expint(T z);
679
+
680
+ // Zeta:
681
+ template <class T, class Policy>
682
+ typename tools::promote_args<T>::type zeta(T s, const Policy&);
683
+
684
+ template <class T>
685
+ typename tools::promote_args<T>::type zeta(T s);
686
+
687
+ // pow:
688
+ template <int N, typename T, class Policy>
689
+ typename tools::promote_args<T>::type pow(T base, const Policy& policy);
690
+
691
+ template <int N, typename T>
692
+ typename tools::promote_args<T>::type pow(T base);
693
+
694
+ // next:
695
+ template <class T, class Policy>
696
+ T nextafter(const T&, const T&, const Policy&);
697
+ template <class T>
698
+ T nextafter(const T&, const T&);
699
+ template <class T, class Policy>
700
+ T float_next(const T&, const Policy&);
701
+ template <class T>
702
+ T float_next(const T&);
703
+ template <class T, class Policy>
704
+ T float_prior(const T&, const Policy&);
705
+ template <class T>
706
+ T float_prior(const T&);
707
+ template <class T, class Policy>
708
+ T float_distance(const T&, const T&, const Policy&);
709
+ template <class T>
710
+ T float_distance(const T&, const T&);
711
+
712
+ } // namespace math
713
+ } // namespace boost
714
+
715
+ #ifdef BOOST_HAS_LONG_LONG
716
+ #define BOOST_MATH_DETAIL_LL_FUNC(Policy)\
717
+ \
718
+ template <class T>\
719
+ inline T modf(const T& v, boost::long_long_type* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
720
+ \
721
+ template <class T>\
722
+ inline boost::long_long_type lltrunc(const T& v){ using boost::math::lltrunc; return lltrunc(v, Policy()); }\
723
+ \
724
+ template <class T>\
725
+ inline boost::long_long_type llround(const T& v){ using boost::math::llround; return llround(v, Policy()); }\
726
+
727
+ #else
728
+ #define BOOST_MATH_DETAIL_LL_FUNC(Policy)
729
+ #endif
730
+
731
+ #define BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy)\
732
+ \
733
+ BOOST_MATH_DETAIL_LL_FUNC(Policy)\
734
+ \
735
+ template <class RT1, class RT2>\
736
+ inline typename boost::math::tools::promote_args<RT1, RT2>::type \
737
+ beta(RT1 a, RT2 b) { return ::boost::math::beta(a, b, Policy()); }\
738
+ \
739
+ template <class RT1, class RT2, class A>\
740
+ inline typename boost::math::tools::promote_args<RT1, RT2, A>::type \
741
+ beta(RT1 a, RT2 b, A x){ return ::boost::math::beta(a, b, x, Policy()); }\
742
+ \
743
+ template <class RT1, class RT2, class RT3>\
744
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
745
+ betac(RT1 a, RT2 b, RT3 x) { return ::boost::math::betac(a, b, x, Policy()); }\
746
+ \
747
+ template <class RT1, class RT2, class RT3>\
748
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
749
+ ibeta(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta(a, b, x, Policy()); }\
750
+ \
751
+ template <class RT1, class RT2, class RT3>\
752
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
753
+ ibetac(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibetac(a, b, x, Policy()); }\
754
+ \
755
+ template <class T1, class T2, class T3, class T4>\
756
+ inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
757
+ ibeta_inv(T1 a, T2 b, T3 p, T4* py){ return ::boost::math::ibeta_inv(a, b, p, py, Policy()); }\
758
+ \
759
+ template <class RT1, class RT2, class RT3>\
760
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
761
+ ibeta_inv(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inv(a, b, p, Policy()); }\
762
+ \
763
+ template <class T1, class T2, class T3, class T4>\
764
+ inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
765
+ ibetac_inv(T1 a, T2 b, T3 q, T4* py){ return ::boost::math::ibetac_inv(a, b, q, py, Policy()); }\
766
+ \
767
+ template <class RT1, class RT2, class RT3>\
768
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
769
+ ibeta_inva(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inva(a, b, p, Policy()); }\
770
+ \
771
+ template <class T1, class T2, class T3>\
772
+ inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
773
+ ibetac_inva(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_inva(a, b, q, Policy()); }\
774
+ \
775
+ template <class RT1, class RT2, class RT3>\
776
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
777
+ ibeta_invb(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_invb(a, b, p, Policy()); }\
778
+ \
779
+ template <class T1, class T2, class T3>\
780
+ inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
781
+ ibetac_invb(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_invb(a, b, q, Policy()); }\
782
+ \
783
+ template <class RT1, class RT2, class RT3>\
784
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
785
+ ibetac_inv(RT1 a, RT2 b, RT3 q){ return ::boost::math::ibetac_inv(a, b, q, Policy()); }\
786
+ \
787
+ template <class RT1, class RT2, class RT3>\
788
+ inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
789
+ ibeta_derivative(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta_derivative(a, b, x, Policy()); }\
790
+ \
791
+ template <class RT>\
792
+ inline typename boost::math::tools::promote_args<RT>::type erf(RT z) { return ::boost::math::erf(z, Policy()); }\
793
+ \
794
+ template <class RT>\
795
+ inline typename boost::math::tools::promote_args<RT>::type erfc(RT z){ return ::boost::math::erfc(z, Policy()); }\
796
+ \
797
+ template <class RT>\
798
+ inline typename boost::math::tools::promote_args<RT>::type erf_inv(RT z) { return ::boost::math::erf_inv(z, Policy()); }\
799
+ \
800
+ template <class RT>\
801
+ inline typename boost::math::tools::promote_args<RT>::type erfc_inv(RT z){ return ::boost::math::erfc_inv(z, Policy()); }\
802
+ \
803
+ using boost::math::legendre_next;\
804
+ \
805
+ template <class T>\
806
+ inline typename boost::math::tools::promote_args<T>::type \
807
+ legendre_p(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\
808
+ \
809
+ template <class T>\
810
+ inline typename boost::math::tools::promote_args<T>::type \
811
+ legendre_q(unsigned l, T x){ return ::boost::math::legendre_q(l, x, Policy()); }\
812
+ \
813
+ using ::boost::math::legendre_next;\
814
+ \
815
+ template <class T>\
816
+ inline typename boost::math::tools::promote_args<T>::type \
817
+ legendre_p(int l, int m, T x){ return ::boost::math::legendre_p(l, m, x, Policy()); }\
818
+ \
819
+ using ::boost::math::laguerre_next;\
820
+ \
821
+ template <class T>\
822
+ inline typename boost::math::tools::promote_args<T>::type \
823
+ laguerre(unsigned n, T x){ return ::boost::math::laguerre(n, x, Policy()); }\
824
+ \
825
+ template <class T1, class T2>\
826
+ inline typename boost::math::laguerre_result<T1, T2>::type \
827
+ laguerre(unsigned n, T1 m, T2 x) { return ::boost::math::laguerre(n, m, x, Policy()); }\
828
+ \
829
+ template <class T>\
830
+ inline typename boost::math::tools::promote_args<T>::type \
831
+ hermite(unsigned n, T x){ return ::boost::math::hermite(n, x, Policy()); }\
832
+ \
833
+ using boost::math::hermite_next;\
834
+ \
835
+ template <class T1, class T2>\
836
+ inline std::complex<typename boost::math::tools::promote_args<T1, T2>::type> \
837
+ spherical_harmonic(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic(n, m, theta, phi, Policy()); }\
838
+ \
839
+ template <class T1, class T2>\
840
+ inline typename boost::math::tools::promote_args<T1, T2>::type \
841
+ spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi){ return ::boost::math::spherical_harmonic_r(n, m, theta, phi, Policy()); }\
842
+ \
843
+ template <class T1, class T2>\
844
+ inline typename boost::math::tools::promote_args<T1, T2>::type \
845
+ spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic_i(n, m, theta, phi, Policy()); }\
846
+ \
847
+ template <class T1, class T2, class Policy>\
848
+ inline typename boost::math::tools::promote_args<T1, T2>::type \
849
+ spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);\
850
+ \
851
+ template <class T1, class T2, class T3>\
852
+ inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
853
+ ellint_rf(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rf(x, y, z, Policy()); }\
854
+ \
855
+ template <class T1, class T2, class T3>\
856
+ inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
857
+ ellint_rd(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rd(x, y, z, Policy()); }\
858
+ \
859
+ template <class T1, class T2>\
860
+ inline typename boost::math::tools::promote_args<T1, T2>::type \
861
+ ellint_rc(T1 x, T2 y){ return ::boost::math::ellint_rc(x, y, Policy()); }\
862
+ \
863
+ template <class T1, class T2, class T3, class T4>\
864
+ inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
865
+ ellint_rj(T1 x, T2 y, T3 z, T4 p){ return boost::math::ellint_rj(x, y, z, p, Policy()); }\
866
+ \
867
+ template <typename T>\
868
+ inline typename boost::math::tools::promote_args<T>::type ellint_2(T k){ return boost::math::ellint_2(k, Policy()); }\
869
+ \
870
+ template <class T1, class T2>\
871
+ inline typename boost::math::tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi){ return boost::math::ellint_2(k, phi, Policy()); }\
872
+ \
873
+ template <typename T>\
874
+ inline typename boost::math::tools::promote_args<T>::type ellint_1(T k){ return boost::math::ellint_1(k, Policy()); }\
875
+ \
876
+ template <class T1, class T2>\
877
+ inline typename boost::math::tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi){ return boost::math::ellint_1(k, phi, Policy()); }\
878
+ \
879
+ template <class T1, class T2, class T3>\
880
+ inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi){ return boost::math::ellint_3(k, v, phi, Policy()); }\
881
+ \
882
+ template <class T1, class T2>\
883
+ inline typename boost::math::tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v){ return boost::math::ellint_3(k, v, Policy()); }\
884
+ \
885
+ using boost::math::max_factorial;\
886
+ template <class RT>\
887
+ inline RT factorial(unsigned int i) { return boost::math::factorial<RT>(i, Policy()); }\
888
+ using boost::math::unchecked_factorial;\
889
+ template <class RT>\
890
+ inline RT double_factorial(unsigned i){ return boost::math::double_factorial<RT>(i, Policy()); }\
891
+ template <class RT>\
892
+ inline typename boost::math::tools::promote_args<RT>::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); }\
893
+ template <class RT>\
894
+ inline typename boost::math::tools::promote_args<RT>::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); }\
895
+ \
896
+ template <class RT>\
897
+ inline typename boost::math::tools::promote_args<RT>::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); }\
898
+ \
899
+ template <class RT>\
900
+ inline typename boost::math::tools::promote_args<RT>::type tgamma1pm1(RT z){ return boost::math::tgamma1pm1(z, Policy()); }\
901
+ \
902
+ template <class RT1, class RT2>\
903
+ inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z){ return boost::math::tgamma(a, z, Policy()); }\
904
+ \
905
+ template <class RT>\
906
+ inline typename boost::math::tools::promote_args<RT>::type lgamma(RT z, int* sign){ return boost::math::lgamma(z, sign, Policy()); }\
907
+ \
908
+ template <class RT>\
909
+ inline typename boost::math::tools::promote_args<RT>::type lgamma(RT x){ return boost::math::lgamma(x, Policy()); }\
910
+ \
911
+ template <class RT1, class RT2>\
912
+ inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z){ return boost::math::tgamma_lower(a, z, Policy()); }\
913
+ \
914
+ template <class RT1, class RT2>\
915
+ inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z){ return boost::math::gamma_q(a, z, Policy()); }\
916
+ \
917
+ template <class RT1, class RT2>\
918
+ inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z){ return boost::math::gamma_p(a, z, Policy()); }\
919
+ \
920
+ template <class T1, class T2>\
921
+ inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta){ return boost::math::tgamma_delta_ratio(z, delta, Policy()); }\
922
+ \
923
+ template <class T1, class T2>\
924
+ inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b) { return boost::math::tgamma_ratio(a, b, Policy()); }\
925
+ \
926
+ template <class T1, class T2>\
927
+ inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x){ return boost::math::gamma_p_derivative(a, x, Policy()); }\
928
+ \
929
+ template <class T1, class T2>\
930
+ inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p){ return boost::math::gamma_p_inv(a, p, Policy()); }\
931
+ \
932
+ template <class T1, class T2>\
933
+ inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p){ return boost::math::gamma_p_inva(a, p, Policy()); }\
934
+ \
935
+ template <class T1, class T2>\
936
+ inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q){ return boost::math::gamma_q_inv(a, q, Policy()); }\
937
+ \
938
+ template <class T1, class T2>\
939
+ inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q){ return boost::math::gamma_q_inva(a, q, Policy()); }\
940
+ \
941
+ template <class T>\
942
+ inline typename boost::math::tools::promote_args<T>::type digamma(T x){ return boost::math::digamma(x, Policy()); }\
943
+ \
944
+ template <class T1, class T2>\
945
+ inline typename boost::math::tools::promote_args<T1, T2>::type \
946
+ hypot(T1 x, T2 y){ return boost::math::hypot(x, y, Policy()); }\
947
+ \
948
+ template <class RT>\
949
+ inline typename boost::math::tools::promote_args<RT>::type cbrt(RT z){ return boost::math::cbrt(z, Policy()); }\
950
+ \
951
+ template <class T>\
952
+ inline typename boost::math::tools::promote_args<T>::type log1p(T x){ return boost::math::log1p(x, Policy()); }\
953
+ \
954
+ template <class T>\
955
+ inline typename boost::math::tools::promote_args<T>::type log1pmx(T x){ return boost::math::log1pmx(x, Policy()); }\
956
+ \
957
+ template <class T>\
958
+ inline typename boost::math::tools::promote_args<T>::type expm1(T x){ return boost::math::expm1(x, Policy()); }\
959
+ \
960
+ template <class T1, class T2>\
961
+ inline typename boost::math::tools::promote_args<T1, T2>::type \
962
+ powm1(const T1 a, const T2 z){ return boost::math::powm1(a, z, Policy()); }\
963
+ \
964
+ template <class T>\
965
+ inline typename boost::math::tools::promote_args<T>::type sqrt1pm1(const T& val){ return boost::math::sqrt1pm1(val, Policy()); }\
966
+ \
967
+ template <class T>\
968
+ inline typename boost::math::tools::promote_args<T>::type sinc_pi(T x){ return boost::math::sinc_pi(x, Policy()); }\
969
+ \
970
+ template <class T>\
971
+ inline typename boost::math::tools::promote_args<T>::type sinhc_pi(T x){ return boost::math::sinhc_pi(x, Policy()); }\
972
+ \
973
+ template<typename T>\
974
+ inline typename boost::math::tools::promote_args<T>::type asinh(const T x){ return boost::math::asinh(x, Policy()); }\
975
+ \
976
+ template<typename T>\
977
+ inline typename boost::math::tools::promote_args<T>::type acosh(const T x){ return boost::math::acosh(x, Policy()); }\
978
+ \
979
+ template<typename T>\
980
+ inline typename boost::math::tools::promote_args<T>::type atanh(const T x){ return boost::math::atanh(x, Policy()); }\
981
+ \
982
+ template <class T1, class T2>\
983
+ inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_j(T1 v, T2 x)\
984
+ { return boost::math::cyl_bessel_j(v, x, Policy()); }\
985
+ \
986
+ template <class T>\
987
+ inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_bessel(unsigned v, T x)\
988
+ { return boost::math::sph_bessel(v, x, Policy()); }\
989
+ \
990
+ template <class T1, class T2>\
991
+ inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
992
+ cyl_bessel_i(T1 v, T2 x) { return boost::math::cyl_bessel_i(v, x, Policy()); }\
993
+ \
994
+ template <class T1, class T2>\
995
+ inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
996
+ cyl_bessel_k(T1 v, T2 x) { return boost::math::cyl_bessel_k(v, x, Policy()); }\
997
+ \
998
+ template <class T1, class T2>\
999
+ inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
1000
+ cyl_neumann(T1 v, T2 x){ return boost::math::cyl_neumann(v, x, Policy()); }\
1001
+ \
1002
+ template <class T>\
1003
+ inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type \
1004
+ sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\
1005
+ \
1006
+ template <class T>\
1007
+ inline typename boost::math::tools::promote_args<T>::type sin_pi(T x){ return boost::math::sin_pi(x); }\
1008
+ \
1009
+ template <class T>\
1010
+ inline typename boost::math::tools::promote_args<T>::type cos_pi(T x){ return boost::math::cos_pi(x); }\
1011
+ \
1012
+ using boost::math::fpclassify;\
1013
+ using boost::math::isfinite;\
1014
+ using boost::math::isinf;\
1015
+ using boost::math::isnan;\
1016
+ using boost::math::isnormal;\
1017
+ using boost::math::signbit;\
1018
+ using boost::math::sign;\
1019
+ using boost::math::copysign;\
1020
+ using boost::math::changesign;\
1021
+ \
1022
+ template <class T, class U>\
1023
+ inline typename boost::math::tools::promote_args<T,U>::type expint(T const& z, U const& u)\
1024
+ { return boost::math::expint(z, u, Policy()); }\
1025
+ \
1026
+ template <class T>\
1027
+ inline typename boost::math::tools::promote_args<T>::type expint(T z){ return boost::math::expint(z, Policy()); }\
1028
+ \
1029
+ template <class T>\
1030
+ inline typename boost::math::tools::promote_args<T>::type zeta(T s){ return boost::math::zeta(s, Policy()); }\
1031
+ \
1032
+ template <class T>\
1033
+ inline T round(const T& v){ using boost::math::round; return round(v, Policy()); }\
1034
+ \
1035
+ template <class T>\
1036
+ inline int iround(const T& v){ using boost::math::iround; return iround(v, Policy()); }\
1037
+ \
1038
+ template <class T>\
1039
+ inline long lround(const T& v){ using boost::math::lround; return lround(v, Policy()); }\
1040
+ \
1041
+ template <class T>\
1042
+ inline T trunc(const T& v){ using boost::math::trunc; return trunc(v, Policy()); }\
1043
+ \
1044
+ template <class T>\
1045
+ inline int itrunc(const T& v){ using boost::math::itrunc; return itrunc(v, Policy()); }\
1046
+ \
1047
+ template <class T>\
1048
+ inline long ltrunc(const T& v){ using boost::math::ltrunc; return ltrunc(v, Policy()); }\
1049
+ \
1050
+ template <class T>\
1051
+ inline T modf(const T& v, T* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
1052
+ \
1053
+ template <class T>\
1054
+ inline T modf(const T& v, int* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
1055
+ \
1056
+ template <class T>\
1057
+ inline T modf(const T& v, long* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
1058
+ \
1059
+ template <int N, class T>\
1060
+ inline typename boost::math::tools::promote_args<T>::type pow(T v){ return boost::math::pow<N>(v, Policy()); }\
1061
+ \
1062
+ template <class T> T nextafter(const T& a, const T& b){ return boost::math::nextafter(a, b, Policy()); }\
1063
+ template <class T> T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\
1064
+ template <class T> T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\
1065
+ template <class T> T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\
1066
+
1067
+
1068
+ #endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP
1069
+
1070
+