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,1144 @@
1
+
2
+ // Copyright Aleksey Gurtovoy 2000-2004
3
+ //
4
+ // Distributed under the Boost Software License, Version 1.0.
5
+ // (See accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+ //
8
+
9
+ // Preprocessed version of "boost/mpl/vector/vector20.hpp" header
10
+ // -- DO NOT modify by hand!
11
+
12
+ namespace boost { namespace mpl {
13
+
14
+ template<
15
+ typename T0, typename T1, typename T2, typename T3, typename T4
16
+ , typename T5, typename T6, typename T7, typename T8, typename T9
17
+ , typename T10
18
+ >
19
+ struct vector11
20
+ {
21
+ typedef aux::vector_tag<11> tag;
22
+ typedef vector11 type;
23
+ typedef T0 item0;
24
+ typedef T1 item1;
25
+ typedef T2 item2;
26
+ typedef T3 item3;
27
+ typedef T4 item4;
28
+ typedef T5 item5;
29
+ typedef T6 item6;
30
+ typedef T7 item7;
31
+ typedef T8 item8;
32
+ typedef T9 item9;
33
+ typedef T10 item10;
34
+
35
+
36
+ typedef void_ item11;
37
+ typedef T10 back;
38
+ typedef v_iter< type,0 > begin;
39
+ typedef v_iter< type,11 > end;
40
+ };
41
+
42
+ template<>
43
+ struct push_front_impl< aux::vector_tag<10> >
44
+ {
45
+ template< typename Vector, typename T > struct apply
46
+ {
47
+ typedef vector11<
48
+ T
49
+ ,
50
+ typename Vector::item0, typename Vector::item1
51
+ , typename Vector::item2, typename Vector::item3
52
+ , typename Vector::item4, typename Vector::item5
53
+ , typename Vector::item6, typename Vector::item7
54
+ , typename Vector::item8, typename Vector::item9
55
+ > type;
56
+ };
57
+ };
58
+
59
+ template<>
60
+ struct pop_front_impl< aux::vector_tag<11> >
61
+ {
62
+ template< typename Vector > struct apply
63
+ {
64
+ typedef vector10<
65
+ typename Vector::item1, typename Vector::item2
66
+ , typename Vector::item3, typename Vector::item4
67
+ , typename Vector::item5, typename Vector::item6
68
+ , typename Vector::item7, typename Vector::item8
69
+ , typename Vector::item9, typename Vector::item10
70
+ > type;
71
+ };
72
+ };
73
+
74
+ template<>
75
+ struct push_back_impl< aux::vector_tag<10> >
76
+ {
77
+ template< typename Vector, typename T > struct apply
78
+ {
79
+ typedef vector11<
80
+ typename Vector::item0, typename Vector::item1
81
+ , typename Vector::item2, typename Vector::item3
82
+ , typename Vector::item4, typename Vector::item5
83
+ , typename Vector::item6, typename Vector::item7
84
+ , typename Vector::item8, typename Vector::item9
85
+ ,
86
+ T
87
+ > type;
88
+ };
89
+ };
90
+
91
+ template<>
92
+ struct pop_back_impl< aux::vector_tag<11> >
93
+ {
94
+ template< typename Vector > struct apply
95
+ {
96
+ typedef vector10<
97
+ typename Vector::item0, typename Vector::item1
98
+ , typename Vector::item2, typename Vector::item3
99
+ , typename Vector::item4, typename Vector::item5
100
+ , typename Vector::item6, typename Vector::item7
101
+ , typename Vector::item8, typename Vector::item9
102
+ > type;
103
+ };
104
+ };
105
+
106
+ template< typename V >
107
+ struct v_at< V,11 >
108
+ {
109
+ typedef typename V::item11 type;
110
+ };
111
+
112
+ template<
113
+ typename T0, typename T1, typename T2, typename T3, typename T4
114
+ , typename T5, typename T6, typename T7, typename T8, typename T9
115
+ , typename T10, typename T11
116
+ >
117
+ struct vector12
118
+ {
119
+ typedef aux::vector_tag<12> tag;
120
+ typedef vector12 type;
121
+ typedef T0 item0;
122
+ typedef T1 item1;
123
+ typedef T2 item2;
124
+ typedef T3 item3;
125
+ typedef T4 item4;
126
+ typedef T5 item5;
127
+ typedef T6 item6;
128
+ typedef T7 item7;
129
+ typedef T8 item8;
130
+ typedef T9 item9;
131
+ typedef T10 item10;
132
+ typedef T11 item11;
133
+
134
+
135
+ typedef void_ item12;
136
+ typedef T11 back;
137
+ typedef v_iter< type,0 > begin;
138
+ typedef v_iter< type,12 > end;
139
+ };
140
+
141
+ template<>
142
+ struct push_front_impl< aux::vector_tag<11> >
143
+ {
144
+ template< typename Vector, typename T > struct apply
145
+ {
146
+ typedef vector12<
147
+ T
148
+ ,
149
+ typename Vector::item0, typename Vector::item1
150
+ , typename Vector::item2, typename Vector::item3
151
+ , typename Vector::item4, typename Vector::item5
152
+ , typename Vector::item6, typename Vector::item7
153
+ , typename Vector::item8, typename Vector::item9
154
+ , typename Vector::item10
155
+ > type;
156
+ };
157
+ };
158
+
159
+ template<>
160
+ struct pop_front_impl< aux::vector_tag<12> >
161
+ {
162
+ template< typename Vector > struct apply
163
+ {
164
+ typedef vector11<
165
+ typename Vector::item1, typename Vector::item2
166
+ , typename Vector::item3, typename Vector::item4
167
+ , typename Vector::item5, typename Vector::item6
168
+ , typename Vector::item7, typename Vector::item8
169
+ , typename Vector::item9, typename Vector::item10
170
+ , typename Vector::item11
171
+ > type;
172
+ };
173
+ };
174
+
175
+ template<>
176
+ struct push_back_impl< aux::vector_tag<11> >
177
+ {
178
+ template< typename Vector, typename T > struct apply
179
+ {
180
+ typedef vector12<
181
+ typename Vector::item0, typename Vector::item1
182
+ , typename Vector::item2, typename Vector::item3
183
+ , typename Vector::item4, typename Vector::item5
184
+ , typename Vector::item6, typename Vector::item7
185
+ , typename Vector::item8, typename Vector::item9
186
+ , typename Vector::item10
187
+ ,
188
+ T
189
+ > type;
190
+ };
191
+ };
192
+
193
+ template<>
194
+ struct pop_back_impl< aux::vector_tag<12> >
195
+ {
196
+ template< typename Vector > struct apply
197
+ {
198
+ typedef vector11<
199
+ typename Vector::item0, typename Vector::item1
200
+ , typename Vector::item2, typename Vector::item3
201
+ , typename Vector::item4, typename Vector::item5
202
+ , typename Vector::item6, typename Vector::item7
203
+ , typename Vector::item8, typename Vector::item9
204
+ , typename Vector::item10
205
+ > type;
206
+ };
207
+ };
208
+
209
+ template< typename V >
210
+ struct v_at< V,12 >
211
+ {
212
+ typedef typename V::item12 type;
213
+ };
214
+
215
+ template<
216
+ typename T0, typename T1, typename T2, typename T3, typename T4
217
+ , typename T5, typename T6, typename T7, typename T8, typename T9
218
+ , typename T10, typename T11, typename T12
219
+ >
220
+ struct vector13
221
+ {
222
+ typedef aux::vector_tag<13> tag;
223
+ typedef vector13 type;
224
+ typedef T0 item0;
225
+ typedef T1 item1;
226
+ typedef T2 item2;
227
+ typedef T3 item3;
228
+ typedef T4 item4;
229
+ typedef T5 item5;
230
+ typedef T6 item6;
231
+ typedef T7 item7;
232
+ typedef T8 item8;
233
+ typedef T9 item9;
234
+ typedef T10 item10;
235
+ typedef T11 item11;
236
+ typedef T12 item12;
237
+
238
+
239
+ typedef void_ item13;
240
+ typedef T12 back;
241
+ typedef v_iter< type,0 > begin;
242
+ typedef v_iter< type,13 > end;
243
+ };
244
+
245
+ template<>
246
+ struct push_front_impl< aux::vector_tag<12> >
247
+ {
248
+ template< typename Vector, typename T > struct apply
249
+ {
250
+ typedef vector13<
251
+ T
252
+ ,
253
+ typename Vector::item0, typename Vector::item1
254
+ , typename Vector::item2, typename Vector::item3
255
+ , typename Vector::item4, typename Vector::item5
256
+ , typename Vector::item6, typename Vector::item7
257
+ , typename Vector::item8, typename Vector::item9
258
+ , typename Vector::item10, typename Vector::item11
259
+ > type;
260
+ };
261
+ };
262
+
263
+ template<>
264
+ struct pop_front_impl< aux::vector_tag<13> >
265
+ {
266
+ template< typename Vector > struct apply
267
+ {
268
+ typedef vector12<
269
+ typename Vector::item1, typename Vector::item2
270
+ , typename Vector::item3, typename Vector::item4
271
+ , typename Vector::item5, typename Vector::item6
272
+ , typename Vector::item7, typename Vector::item8
273
+ , typename Vector::item9, typename Vector::item10
274
+ , typename Vector::item11, typename Vector::item12
275
+ > type;
276
+ };
277
+ };
278
+
279
+ template<>
280
+ struct push_back_impl< aux::vector_tag<12> >
281
+ {
282
+ template< typename Vector, typename T > struct apply
283
+ {
284
+ typedef vector13<
285
+ typename Vector::item0, typename Vector::item1
286
+ , typename Vector::item2, typename Vector::item3
287
+ , typename Vector::item4, typename Vector::item5
288
+ , typename Vector::item6, typename Vector::item7
289
+ , typename Vector::item8, typename Vector::item9
290
+ , typename Vector::item10, typename Vector::item11
291
+ ,
292
+ T
293
+ > type;
294
+ };
295
+ };
296
+
297
+ template<>
298
+ struct pop_back_impl< aux::vector_tag<13> >
299
+ {
300
+ template< typename Vector > struct apply
301
+ {
302
+ typedef vector12<
303
+ typename Vector::item0, typename Vector::item1
304
+ , typename Vector::item2, typename Vector::item3
305
+ , typename Vector::item4, typename Vector::item5
306
+ , typename Vector::item6, typename Vector::item7
307
+ , typename Vector::item8, typename Vector::item9
308
+ , typename Vector::item10, typename Vector::item11
309
+ > type;
310
+ };
311
+ };
312
+
313
+ template< typename V >
314
+ struct v_at< V,13 >
315
+ {
316
+ typedef typename V::item13 type;
317
+ };
318
+
319
+ template<
320
+ typename T0, typename T1, typename T2, typename T3, typename T4
321
+ , typename T5, typename T6, typename T7, typename T8, typename T9
322
+ , typename T10, typename T11, typename T12, typename T13
323
+ >
324
+ struct vector14
325
+ {
326
+ typedef aux::vector_tag<14> tag;
327
+ typedef vector14 type;
328
+ typedef T0 item0;
329
+ typedef T1 item1;
330
+ typedef T2 item2;
331
+ typedef T3 item3;
332
+ typedef T4 item4;
333
+ typedef T5 item5;
334
+ typedef T6 item6;
335
+ typedef T7 item7;
336
+ typedef T8 item8;
337
+ typedef T9 item9;
338
+ typedef T10 item10;
339
+ typedef T11 item11;
340
+ typedef T12 item12;
341
+ typedef T13 item13;
342
+
343
+
344
+ typedef void_ item14;
345
+ typedef T13 back;
346
+ typedef v_iter< type,0 > begin;
347
+ typedef v_iter< type,14 > end;
348
+ };
349
+
350
+ template<>
351
+ struct push_front_impl< aux::vector_tag<13> >
352
+ {
353
+ template< typename Vector, typename T > struct apply
354
+ {
355
+ typedef vector14<
356
+ T
357
+ ,
358
+ typename Vector::item0, typename Vector::item1
359
+ , typename Vector::item2, typename Vector::item3
360
+ , typename Vector::item4, typename Vector::item5
361
+ , typename Vector::item6, typename Vector::item7
362
+ , typename Vector::item8, typename Vector::item9
363
+ , typename Vector::item10, typename Vector::item11
364
+ , typename Vector::item12
365
+ > type;
366
+ };
367
+ };
368
+
369
+ template<>
370
+ struct pop_front_impl< aux::vector_tag<14> >
371
+ {
372
+ template< typename Vector > struct apply
373
+ {
374
+ typedef vector13<
375
+ typename Vector::item1, typename Vector::item2
376
+ , typename Vector::item3, typename Vector::item4
377
+ , typename Vector::item5, typename Vector::item6
378
+ , typename Vector::item7, typename Vector::item8
379
+ , typename Vector::item9, typename Vector::item10
380
+ , typename Vector::item11, typename Vector::item12
381
+ , typename Vector::item13
382
+ > type;
383
+ };
384
+ };
385
+
386
+ template<>
387
+ struct push_back_impl< aux::vector_tag<13> >
388
+ {
389
+ template< typename Vector, typename T > struct apply
390
+ {
391
+ typedef vector14<
392
+ typename Vector::item0, typename Vector::item1
393
+ , typename Vector::item2, typename Vector::item3
394
+ , typename Vector::item4, typename Vector::item5
395
+ , typename Vector::item6, typename Vector::item7
396
+ , typename Vector::item8, typename Vector::item9
397
+ , typename Vector::item10, typename Vector::item11
398
+ , typename Vector::item12
399
+ ,
400
+ T
401
+ > type;
402
+ };
403
+ };
404
+
405
+ template<>
406
+ struct pop_back_impl< aux::vector_tag<14> >
407
+ {
408
+ template< typename Vector > struct apply
409
+ {
410
+ typedef vector13<
411
+ typename Vector::item0, typename Vector::item1
412
+ , typename Vector::item2, typename Vector::item3
413
+ , typename Vector::item4, typename Vector::item5
414
+ , typename Vector::item6, typename Vector::item7
415
+ , typename Vector::item8, typename Vector::item9
416
+ , typename Vector::item10, typename Vector::item11
417
+ , typename Vector::item12
418
+ > type;
419
+ };
420
+ };
421
+
422
+ template< typename V >
423
+ struct v_at< V,14 >
424
+ {
425
+ typedef typename V::item14 type;
426
+ };
427
+
428
+ template<
429
+ typename T0, typename T1, typename T2, typename T3, typename T4
430
+ , typename T5, typename T6, typename T7, typename T8, typename T9
431
+ , typename T10, typename T11, typename T12, typename T13, typename T14
432
+ >
433
+ struct vector15
434
+ {
435
+ typedef aux::vector_tag<15> tag;
436
+ typedef vector15 type;
437
+ typedef T0 item0;
438
+ typedef T1 item1;
439
+ typedef T2 item2;
440
+ typedef T3 item3;
441
+ typedef T4 item4;
442
+ typedef T5 item5;
443
+ typedef T6 item6;
444
+ typedef T7 item7;
445
+ typedef T8 item8;
446
+ typedef T9 item9;
447
+ typedef T10 item10;
448
+ typedef T11 item11;
449
+ typedef T12 item12;
450
+ typedef T13 item13;
451
+ typedef T14 item14;
452
+
453
+
454
+ typedef void_ item15;
455
+ typedef T14 back;
456
+ typedef v_iter< type,0 > begin;
457
+ typedef v_iter< type,15 > end;
458
+ };
459
+
460
+ template<>
461
+ struct push_front_impl< aux::vector_tag<14> >
462
+ {
463
+ template< typename Vector, typename T > struct apply
464
+ {
465
+ typedef vector15<
466
+ T
467
+ ,
468
+ typename Vector::item0, typename Vector::item1
469
+ , typename Vector::item2, typename Vector::item3
470
+ , typename Vector::item4, typename Vector::item5
471
+ , typename Vector::item6, typename Vector::item7
472
+ , typename Vector::item8, typename Vector::item9
473
+ , typename Vector::item10, typename Vector::item11
474
+ , typename Vector::item12, typename Vector::item13
475
+ > type;
476
+ };
477
+ };
478
+
479
+ template<>
480
+ struct pop_front_impl< aux::vector_tag<15> >
481
+ {
482
+ template< typename Vector > struct apply
483
+ {
484
+ typedef vector14<
485
+ typename Vector::item1, typename Vector::item2
486
+ , typename Vector::item3, typename Vector::item4
487
+ , typename Vector::item5, typename Vector::item6
488
+ , typename Vector::item7, typename Vector::item8
489
+ , typename Vector::item9, typename Vector::item10
490
+ , typename Vector::item11, typename Vector::item12
491
+ , typename Vector::item13, typename Vector::item14
492
+ > type;
493
+ };
494
+ };
495
+
496
+ template<>
497
+ struct push_back_impl< aux::vector_tag<14> >
498
+ {
499
+ template< typename Vector, typename T > struct apply
500
+ {
501
+ typedef vector15<
502
+ typename Vector::item0, typename Vector::item1
503
+ , typename Vector::item2, typename Vector::item3
504
+ , typename Vector::item4, typename Vector::item5
505
+ , typename Vector::item6, typename Vector::item7
506
+ , typename Vector::item8, typename Vector::item9
507
+ , typename Vector::item10, typename Vector::item11
508
+ , typename Vector::item12, typename Vector::item13
509
+ ,
510
+ T
511
+ > type;
512
+ };
513
+ };
514
+
515
+ template<>
516
+ struct pop_back_impl< aux::vector_tag<15> >
517
+ {
518
+ template< typename Vector > struct apply
519
+ {
520
+ typedef vector14<
521
+ typename Vector::item0, typename Vector::item1
522
+ , typename Vector::item2, typename Vector::item3
523
+ , typename Vector::item4, typename Vector::item5
524
+ , typename Vector::item6, typename Vector::item7
525
+ , typename Vector::item8, typename Vector::item9
526
+ , typename Vector::item10, typename Vector::item11
527
+ , typename Vector::item12, typename Vector::item13
528
+ > type;
529
+ };
530
+ };
531
+
532
+ template< typename V >
533
+ struct v_at< V,15 >
534
+ {
535
+ typedef typename V::item15 type;
536
+ };
537
+
538
+ template<
539
+ typename T0, typename T1, typename T2, typename T3, typename T4
540
+ , typename T5, typename T6, typename T7, typename T8, typename T9
541
+ , typename T10, typename T11, typename T12, typename T13, typename T14
542
+ , typename T15
543
+ >
544
+ struct vector16
545
+ {
546
+ typedef aux::vector_tag<16> tag;
547
+ typedef vector16 type;
548
+ typedef T0 item0;
549
+ typedef T1 item1;
550
+ typedef T2 item2;
551
+ typedef T3 item3;
552
+ typedef T4 item4;
553
+ typedef T5 item5;
554
+ typedef T6 item6;
555
+ typedef T7 item7;
556
+ typedef T8 item8;
557
+ typedef T9 item9;
558
+ typedef T10 item10;
559
+ typedef T11 item11;
560
+ typedef T12 item12;
561
+ typedef T13 item13;
562
+ typedef T14 item14;
563
+ typedef T15 item15;
564
+
565
+
566
+ typedef void_ item16;
567
+ typedef T15 back;
568
+ typedef v_iter< type,0 > begin;
569
+ typedef v_iter< type,16 > end;
570
+ };
571
+
572
+ template<>
573
+ struct push_front_impl< aux::vector_tag<15> >
574
+ {
575
+ template< typename Vector, typename T > struct apply
576
+ {
577
+ typedef vector16<
578
+ T
579
+ ,
580
+ typename Vector::item0, typename Vector::item1
581
+ , typename Vector::item2, typename Vector::item3
582
+ , typename Vector::item4, typename Vector::item5
583
+ , typename Vector::item6, typename Vector::item7
584
+ , typename Vector::item8, typename Vector::item9
585
+ , typename Vector::item10, typename Vector::item11
586
+ , typename Vector::item12, typename Vector::item13
587
+ , typename Vector::item14
588
+ > type;
589
+ };
590
+ };
591
+
592
+ template<>
593
+ struct pop_front_impl< aux::vector_tag<16> >
594
+ {
595
+ template< typename Vector > struct apply
596
+ {
597
+ typedef vector15<
598
+ typename Vector::item1, typename Vector::item2
599
+ , typename Vector::item3, typename Vector::item4
600
+ , typename Vector::item5, typename Vector::item6
601
+ , typename Vector::item7, typename Vector::item8
602
+ , typename Vector::item9, typename Vector::item10
603
+ , typename Vector::item11, typename Vector::item12
604
+ , typename Vector::item13, typename Vector::item14
605
+ , typename Vector::item15
606
+ > type;
607
+ };
608
+ };
609
+
610
+ template<>
611
+ struct push_back_impl< aux::vector_tag<15> >
612
+ {
613
+ template< typename Vector, typename T > struct apply
614
+ {
615
+ typedef vector16<
616
+ typename Vector::item0, typename Vector::item1
617
+ , typename Vector::item2, typename Vector::item3
618
+ , typename Vector::item4, typename Vector::item5
619
+ , typename Vector::item6, typename Vector::item7
620
+ , typename Vector::item8, typename Vector::item9
621
+ , typename Vector::item10, typename Vector::item11
622
+ , typename Vector::item12, typename Vector::item13
623
+ , typename Vector::item14
624
+ ,
625
+ T
626
+ > type;
627
+ };
628
+ };
629
+
630
+ template<>
631
+ struct pop_back_impl< aux::vector_tag<16> >
632
+ {
633
+ template< typename Vector > struct apply
634
+ {
635
+ typedef vector15<
636
+ typename Vector::item0, typename Vector::item1
637
+ , typename Vector::item2, typename Vector::item3
638
+ , typename Vector::item4, typename Vector::item5
639
+ , typename Vector::item6, typename Vector::item7
640
+ , typename Vector::item8, typename Vector::item9
641
+ , typename Vector::item10, typename Vector::item11
642
+ , typename Vector::item12, typename Vector::item13
643
+ , typename Vector::item14
644
+ > type;
645
+ };
646
+ };
647
+
648
+ template< typename V >
649
+ struct v_at< V,16 >
650
+ {
651
+ typedef typename V::item16 type;
652
+ };
653
+
654
+ template<
655
+ typename T0, typename T1, typename T2, typename T3, typename T4
656
+ , typename T5, typename T6, typename T7, typename T8, typename T9
657
+ , typename T10, typename T11, typename T12, typename T13, typename T14
658
+ , typename T15, typename T16
659
+ >
660
+ struct vector17
661
+ {
662
+ typedef aux::vector_tag<17> tag;
663
+ typedef vector17 type;
664
+ typedef T0 item0;
665
+ typedef T1 item1;
666
+ typedef T2 item2;
667
+ typedef T3 item3;
668
+ typedef T4 item4;
669
+ typedef T5 item5;
670
+ typedef T6 item6;
671
+ typedef T7 item7;
672
+ typedef T8 item8;
673
+ typedef T9 item9;
674
+ typedef T10 item10;
675
+ typedef T11 item11;
676
+ typedef T12 item12;
677
+ typedef T13 item13;
678
+ typedef T14 item14;
679
+ typedef T15 item15;
680
+ typedef T16 item16;
681
+
682
+
683
+ typedef void_ item17;
684
+ typedef T16 back;
685
+ typedef v_iter< type,0 > begin;
686
+ typedef v_iter< type,17 > end;
687
+ };
688
+
689
+ template<>
690
+ struct push_front_impl< aux::vector_tag<16> >
691
+ {
692
+ template< typename Vector, typename T > struct apply
693
+ {
694
+ typedef vector17<
695
+ T
696
+ ,
697
+ typename Vector::item0, typename Vector::item1
698
+ , typename Vector::item2, typename Vector::item3
699
+ , typename Vector::item4, typename Vector::item5
700
+ , typename Vector::item6, typename Vector::item7
701
+ , typename Vector::item8, typename Vector::item9
702
+ , typename Vector::item10, typename Vector::item11
703
+ , typename Vector::item12, typename Vector::item13
704
+ , typename Vector::item14, typename Vector::item15
705
+ > type;
706
+ };
707
+ };
708
+
709
+ template<>
710
+ struct pop_front_impl< aux::vector_tag<17> >
711
+ {
712
+ template< typename Vector > struct apply
713
+ {
714
+ typedef vector16<
715
+ typename Vector::item1, typename Vector::item2
716
+ , typename Vector::item3, typename Vector::item4
717
+ , typename Vector::item5, typename Vector::item6
718
+ , typename Vector::item7, typename Vector::item8
719
+ , typename Vector::item9, typename Vector::item10
720
+ , typename Vector::item11, typename Vector::item12
721
+ , typename Vector::item13, typename Vector::item14
722
+ , typename Vector::item15, typename Vector::item16
723
+ > type;
724
+ };
725
+ };
726
+
727
+ template<>
728
+ struct push_back_impl< aux::vector_tag<16> >
729
+ {
730
+ template< typename Vector, typename T > struct apply
731
+ {
732
+ typedef vector17<
733
+ typename Vector::item0, typename Vector::item1
734
+ , typename Vector::item2, typename Vector::item3
735
+ , typename Vector::item4, typename Vector::item5
736
+ , typename Vector::item6, typename Vector::item7
737
+ , typename Vector::item8, typename Vector::item9
738
+ , typename Vector::item10, typename Vector::item11
739
+ , typename Vector::item12, typename Vector::item13
740
+ , typename Vector::item14, typename Vector::item15
741
+ ,
742
+ T
743
+ > type;
744
+ };
745
+ };
746
+
747
+ template<>
748
+ struct pop_back_impl< aux::vector_tag<17> >
749
+ {
750
+ template< typename Vector > struct apply
751
+ {
752
+ typedef vector16<
753
+ typename Vector::item0, typename Vector::item1
754
+ , typename Vector::item2, typename Vector::item3
755
+ , typename Vector::item4, typename Vector::item5
756
+ , typename Vector::item6, typename Vector::item7
757
+ , typename Vector::item8, typename Vector::item9
758
+ , typename Vector::item10, typename Vector::item11
759
+ , typename Vector::item12, typename Vector::item13
760
+ , typename Vector::item14, typename Vector::item15
761
+ > type;
762
+ };
763
+ };
764
+
765
+ template< typename V >
766
+ struct v_at< V,17 >
767
+ {
768
+ typedef typename V::item17 type;
769
+ };
770
+
771
+ template<
772
+ typename T0, typename T1, typename T2, typename T3, typename T4
773
+ , typename T5, typename T6, typename T7, typename T8, typename T9
774
+ , typename T10, typename T11, typename T12, typename T13, typename T14
775
+ , typename T15, typename T16, typename T17
776
+ >
777
+ struct vector18
778
+ {
779
+ typedef aux::vector_tag<18> tag;
780
+ typedef vector18 type;
781
+ typedef T0 item0;
782
+ typedef T1 item1;
783
+ typedef T2 item2;
784
+ typedef T3 item3;
785
+ typedef T4 item4;
786
+ typedef T5 item5;
787
+ typedef T6 item6;
788
+ typedef T7 item7;
789
+ typedef T8 item8;
790
+ typedef T9 item9;
791
+ typedef T10 item10;
792
+ typedef T11 item11;
793
+ typedef T12 item12;
794
+ typedef T13 item13;
795
+ typedef T14 item14;
796
+ typedef T15 item15;
797
+ typedef T16 item16;
798
+ typedef T17 item17;
799
+
800
+
801
+ typedef void_ item18;
802
+ typedef T17 back;
803
+ typedef v_iter< type,0 > begin;
804
+ typedef v_iter< type,18 > end;
805
+ };
806
+
807
+ template<>
808
+ struct push_front_impl< aux::vector_tag<17> >
809
+ {
810
+ template< typename Vector, typename T > struct apply
811
+ {
812
+ typedef vector18<
813
+ T
814
+ ,
815
+ typename Vector::item0, typename Vector::item1
816
+ , typename Vector::item2, typename Vector::item3
817
+ , typename Vector::item4, typename Vector::item5
818
+ , typename Vector::item6, typename Vector::item7
819
+ , typename Vector::item8, typename Vector::item9
820
+ , typename Vector::item10, typename Vector::item11
821
+ , typename Vector::item12, typename Vector::item13
822
+ , typename Vector::item14, typename Vector::item15
823
+ , typename Vector::item16
824
+ > type;
825
+ };
826
+ };
827
+
828
+ template<>
829
+ struct pop_front_impl< aux::vector_tag<18> >
830
+ {
831
+ template< typename Vector > struct apply
832
+ {
833
+ typedef vector17<
834
+ typename Vector::item1, typename Vector::item2
835
+ , typename Vector::item3, typename Vector::item4
836
+ , typename Vector::item5, typename Vector::item6
837
+ , typename Vector::item7, typename Vector::item8
838
+ , typename Vector::item9, typename Vector::item10
839
+ , typename Vector::item11, typename Vector::item12
840
+ , typename Vector::item13, typename Vector::item14
841
+ , typename Vector::item15, typename Vector::item16
842
+ , typename Vector::item17
843
+ > type;
844
+ };
845
+ };
846
+
847
+ template<>
848
+ struct push_back_impl< aux::vector_tag<17> >
849
+ {
850
+ template< typename Vector, typename T > struct apply
851
+ {
852
+ typedef vector18<
853
+ typename Vector::item0, typename Vector::item1
854
+ , typename Vector::item2, typename Vector::item3
855
+ , typename Vector::item4, typename Vector::item5
856
+ , typename Vector::item6, typename Vector::item7
857
+ , typename Vector::item8, typename Vector::item9
858
+ , typename Vector::item10, typename Vector::item11
859
+ , typename Vector::item12, typename Vector::item13
860
+ , typename Vector::item14, typename Vector::item15
861
+ , typename Vector::item16
862
+ ,
863
+ T
864
+ > type;
865
+ };
866
+ };
867
+
868
+ template<>
869
+ struct pop_back_impl< aux::vector_tag<18> >
870
+ {
871
+ template< typename Vector > struct apply
872
+ {
873
+ typedef vector17<
874
+ typename Vector::item0, typename Vector::item1
875
+ , typename Vector::item2, typename Vector::item3
876
+ , typename Vector::item4, typename Vector::item5
877
+ , typename Vector::item6, typename Vector::item7
878
+ , typename Vector::item8, typename Vector::item9
879
+ , typename Vector::item10, typename Vector::item11
880
+ , typename Vector::item12, typename Vector::item13
881
+ , typename Vector::item14, typename Vector::item15
882
+ , typename Vector::item16
883
+ > type;
884
+ };
885
+ };
886
+
887
+ template< typename V >
888
+ struct v_at< V,18 >
889
+ {
890
+ typedef typename V::item18 type;
891
+ };
892
+
893
+ template<
894
+ typename T0, typename T1, typename T2, typename T3, typename T4
895
+ , typename T5, typename T6, typename T7, typename T8, typename T9
896
+ , typename T10, typename T11, typename T12, typename T13, typename T14
897
+ , typename T15, typename T16, typename T17, typename T18
898
+ >
899
+ struct vector19
900
+ {
901
+ typedef aux::vector_tag<19> tag;
902
+ typedef vector19 type;
903
+ typedef T0 item0;
904
+ typedef T1 item1;
905
+ typedef T2 item2;
906
+ typedef T3 item3;
907
+ typedef T4 item4;
908
+ typedef T5 item5;
909
+ typedef T6 item6;
910
+ typedef T7 item7;
911
+ typedef T8 item8;
912
+ typedef T9 item9;
913
+ typedef T10 item10;
914
+ typedef T11 item11;
915
+ typedef T12 item12;
916
+ typedef T13 item13;
917
+ typedef T14 item14;
918
+ typedef T15 item15;
919
+ typedef T16 item16;
920
+ typedef T17 item17;
921
+ typedef T18 item18;
922
+
923
+
924
+ typedef void_ item19;
925
+ typedef T18 back;
926
+ typedef v_iter< type,0 > begin;
927
+ typedef v_iter< type,19 > end;
928
+ };
929
+
930
+ template<>
931
+ struct push_front_impl< aux::vector_tag<18> >
932
+ {
933
+ template< typename Vector, typename T > struct apply
934
+ {
935
+ typedef vector19<
936
+ T
937
+ ,
938
+ typename Vector::item0, typename Vector::item1
939
+ , typename Vector::item2, typename Vector::item3
940
+ , typename Vector::item4, typename Vector::item5
941
+ , typename Vector::item6, typename Vector::item7
942
+ , typename Vector::item8, typename Vector::item9
943
+ , typename Vector::item10, typename Vector::item11
944
+ , typename Vector::item12, typename Vector::item13
945
+ , typename Vector::item14, typename Vector::item15
946
+ , typename Vector::item16, typename Vector::item17
947
+ > type;
948
+ };
949
+ };
950
+
951
+ template<>
952
+ struct pop_front_impl< aux::vector_tag<19> >
953
+ {
954
+ template< typename Vector > struct apply
955
+ {
956
+ typedef vector18<
957
+ typename Vector::item1, typename Vector::item2
958
+ , typename Vector::item3, typename Vector::item4
959
+ , typename Vector::item5, typename Vector::item6
960
+ , typename Vector::item7, typename Vector::item8
961
+ , typename Vector::item9, typename Vector::item10
962
+ , typename Vector::item11, typename Vector::item12
963
+ , typename Vector::item13, typename Vector::item14
964
+ , typename Vector::item15, typename Vector::item16
965
+ , typename Vector::item17, typename Vector::item18
966
+ > type;
967
+ };
968
+ };
969
+
970
+ template<>
971
+ struct push_back_impl< aux::vector_tag<18> >
972
+ {
973
+ template< typename Vector, typename T > struct apply
974
+ {
975
+ typedef vector19<
976
+ typename Vector::item0, typename Vector::item1
977
+ , typename Vector::item2, typename Vector::item3
978
+ , typename Vector::item4, typename Vector::item5
979
+ , typename Vector::item6, typename Vector::item7
980
+ , typename Vector::item8, typename Vector::item9
981
+ , typename Vector::item10, typename Vector::item11
982
+ , typename Vector::item12, typename Vector::item13
983
+ , typename Vector::item14, typename Vector::item15
984
+ , typename Vector::item16, typename Vector::item17
985
+ ,
986
+ T
987
+ > type;
988
+ };
989
+ };
990
+
991
+ template<>
992
+ struct pop_back_impl< aux::vector_tag<19> >
993
+ {
994
+ template< typename Vector > struct apply
995
+ {
996
+ typedef vector18<
997
+ typename Vector::item0, typename Vector::item1
998
+ , typename Vector::item2, typename Vector::item3
999
+ , typename Vector::item4, typename Vector::item5
1000
+ , typename Vector::item6, typename Vector::item7
1001
+ , typename Vector::item8, typename Vector::item9
1002
+ , typename Vector::item10, typename Vector::item11
1003
+ , typename Vector::item12, typename Vector::item13
1004
+ , typename Vector::item14, typename Vector::item15
1005
+ , typename Vector::item16, typename Vector::item17
1006
+ > type;
1007
+ };
1008
+ };
1009
+
1010
+ template< typename V >
1011
+ struct v_at< V,19 >
1012
+ {
1013
+ typedef typename V::item19 type;
1014
+ };
1015
+
1016
+ template<
1017
+ typename T0, typename T1, typename T2, typename T3, typename T4
1018
+ , typename T5, typename T6, typename T7, typename T8, typename T9
1019
+ , typename T10, typename T11, typename T12, typename T13, typename T14
1020
+ , typename T15, typename T16, typename T17, typename T18, typename T19
1021
+ >
1022
+ struct vector20
1023
+ {
1024
+ typedef aux::vector_tag<20> tag;
1025
+ typedef vector20 type;
1026
+ typedef T0 item0;
1027
+ typedef T1 item1;
1028
+ typedef T2 item2;
1029
+ typedef T3 item3;
1030
+ typedef T4 item4;
1031
+ typedef T5 item5;
1032
+ typedef T6 item6;
1033
+ typedef T7 item7;
1034
+ typedef T8 item8;
1035
+ typedef T9 item9;
1036
+ typedef T10 item10;
1037
+ typedef T11 item11;
1038
+ typedef T12 item12;
1039
+ typedef T13 item13;
1040
+ typedef T14 item14;
1041
+ typedef T15 item15;
1042
+ typedef T16 item16;
1043
+ typedef T17 item17;
1044
+ typedef T18 item18;
1045
+ typedef T19 item19;
1046
+
1047
+
1048
+ typedef void_ item20;
1049
+ typedef T19 back;
1050
+ typedef v_iter< type,0 > begin;
1051
+ typedef v_iter< type,20 > end;
1052
+ };
1053
+
1054
+ template<>
1055
+ struct push_front_impl< aux::vector_tag<19> >
1056
+ {
1057
+ template< typename Vector, typename T > struct apply
1058
+ {
1059
+ typedef vector20<
1060
+ T
1061
+ ,
1062
+ typename Vector::item0, typename Vector::item1
1063
+ , typename Vector::item2, typename Vector::item3
1064
+ , typename Vector::item4, typename Vector::item5
1065
+ , typename Vector::item6, typename Vector::item7
1066
+ , typename Vector::item8, typename Vector::item9
1067
+ , typename Vector::item10, typename Vector::item11
1068
+ , typename Vector::item12, typename Vector::item13
1069
+ , typename Vector::item14, typename Vector::item15
1070
+ , typename Vector::item16, typename Vector::item17
1071
+ , typename Vector::item18
1072
+ > type;
1073
+ };
1074
+ };
1075
+
1076
+ template<>
1077
+ struct pop_front_impl< aux::vector_tag<20> >
1078
+ {
1079
+ template< typename Vector > struct apply
1080
+ {
1081
+ typedef vector19<
1082
+ typename Vector::item1, typename Vector::item2
1083
+ , typename Vector::item3, typename Vector::item4
1084
+ , typename Vector::item5, typename Vector::item6
1085
+ , typename Vector::item7, typename Vector::item8
1086
+ , typename Vector::item9, typename Vector::item10
1087
+ , typename Vector::item11, typename Vector::item12
1088
+ , typename Vector::item13, typename Vector::item14
1089
+ , typename Vector::item15, typename Vector::item16
1090
+ , typename Vector::item17, typename Vector::item18
1091
+ , typename Vector::item19
1092
+ > type;
1093
+ };
1094
+ };
1095
+
1096
+ template<>
1097
+ struct push_back_impl< aux::vector_tag<19> >
1098
+ {
1099
+ template< typename Vector, typename T > struct apply
1100
+ {
1101
+ typedef vector20<
1102
+ typename Vector::item0, typename Vector::item1
1103
+ , typename Vector::item2, typename Vector::item3
1104
+ , typename Vector::item4, typename Vector::item5
1105
+ , typename Vector::item6, typename Vector::item7
1106
+ , typename Vector::item8, typename Vector::item9
1107
+ , typename Vector::item10, typename Vector::item11
1108
+ , typename Vector::item12, typename Vector::item13
1109
+ , typename Vector::item14, typename Vector::item15
1110
+ , typename Vector::item16, typename Vector::item17
1111
+ , typename Vector::item18
1112
+ ,
1113
+ T
1114
+ > type;
1115
+ };
1116
+ };
1117
+
1118
+ template<>
1119
+ struct pop_back_impl< aux::vector_tag<20> >
1120
+ {
1121
+ template< typename Vector > struct apply
1122
+ {
1123
+ typedef vector19<
1124
+ typename Vector::item0, typename Vector::item1
1125
+ , typename Vector::item2, typename Vector::item3
1126
+ , typename Vector::item4, typename Vector::item5
1127
+ , typename Vector::item6, typename Vector::item7
1128
+ , typename Vector::item8, typename Vector::item9
1129
+ , typename Vector::item10, typename Vector::item11
1130
+ , typename Vector::item12, typename Vector::item13
1131
+ , typename Vector::item14, typename Vector::item15
1132
+ , typename Vector::item16, typename Vector::item17
1133
+ , typename Vector::item18
1134
+ > type;
1135
+ };
1136
+ };
1137
+
1138
+ template< typename V >
1139
+ struct v_at< V,20 >
1140
+ {
1141
+ typedef typename V::item20 type;
1142
+ };
1143
+
1144
+ }}