passenger 2.2.15 → 3.0.0.pre1

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 (1338) hide show
  1. data/DEVELOPERS.TXT +21 -12
  2. data/LICENSE +1 -1
  3. data/NEWS +8 -1
  4. data/PACKAGING.TXT +25 -0
  5. data/Rakefile +28 -891
  6. data/bin/passenger +32 -0
  7. data/bin/passenger-config +5 -5
  8. data/bin/passenger-install-apache2-module +37 -24
  9. data/bin/passenger-install-nginx-module +48 -46
  10. data/bin/passenger-make-enterprisey +8 -9
  11. data/bin/passenger-memory-stats +20 -150
  12. data/bin/passenger-status +130 -44
  13. data/bin/passenger-stress-test +5 -4
  14. data/build/agents.rb +73 -0
  15. data/build/apache2.rb +165 -0
  16. data/build/basics.rb +81 -0
  17. data/build/common_library.rb +198 -0
  18. data/build/config.rb +35 -0
  19. data/{misc/rake/cplusplus.rb → build/cplusplus_support.rb} +1 -1
  20. data/build/cxx_tests.rb +205 -0
  21. data/build/documentation.rb +77 -0
  22. data/{misc/rake → build}/gempackagetask.rb +1 -1
  23. data/build/integration_tests.rb +57 -0
  24. data/build/misc.rb +146 -0
  25. data/build/nginx.rb +64 -0
  26. data/build/oxt_tests.rb +52 -0
  27. data/{misc/rake → build}/packagetask.rb +0 -0
  28. data/build/packaging.rb +189 -0
  29. data/{misc/rake/extensions.rb → build/rake_extensions.rb} +1 -1
  30. data/{misc/rake → build}/rdoctask.rb +0 -0
  31. data/build/ruby_extension.rb +46 -0
  32. data/build/ruby_tests.rb +42 -0
  33. data/build/test_basics.rb +31 -0
  34. data/doc/ApplicationPool algorithm.txt +447 -234
  35. data/doc/Architectural overview.html +47 -56
  36. data/doc/Doxyfile +1 -1
  37. data/doc/Security of user switching support.html +46 -57
  38. data/doc/Users guide Apache.html +1033 -306
  39. data/doc/Users guide Apache.txt +419 -99
  40. data/doc/Users guide Nginx.html +1252 -253
  41. data/doc/Users guide Nginx.txt +711 -87
  42. data/doc/Users guide Standalone.html +603 -0
  43. data/doc/Users guide Standalone.txt +40 -0
  44. data/doc/cxxapi/AbstractSpawnManager_8h_source.html +141 -0
  45. data/doc/cxxapi/Account_8h_source.html +206 -0
  46. data/doc/cxxapi/AccountsDatabase_8h_source.html +161 -0
  47. data/doc/cxxapi/AgentBase_8h_source.html +70 -0
  48. data/doc/cxxapi/AgentsStarter_8h_source.html +112 -0
  49. data/doc/cxxapi/BCrypt_8h_source.html +104 -0
  50. data/doc/cxxapi/Blowfish_8h_source.html +134 -0
  51. data/doc/cxxapi/Bucket_8h_source.html +4 -3
  52. data/doc/cxxapi/Constants_8h_source.html +79 -0
  53. data/doc/cxxapi/ContentHandler_8h_source.html +95 -0
  54. data/doc/cxxapi/DirectoryMapper_8h_source.html +9 -8
  55. data/doc/cxxapi/EventedClient_8h_source.html +629 -0
  56. data/doc/cxxapi/EventedMessageServer_8h_source.html +358 -0
  57. data/doc/cxxapi/EventedServer_8h_source.html +326 -0
  58. data/doc/cxxapi/Exceptions_8h_source.html +366 -0
  59. data/doc/cxxapi/FileDescriptor_8h_source.html +260 -0
  60. data/doc/cxxapi/Hooks_8h_source.html +2 -1
  61. data/doc/cxxapi/HttpStatusExtractor_8h_source.html +382 -0
  62. data/doc/cxxapi/Logging_8h_source.html +726 -0
  63. data/doc/cxxapi/MessageChannel_8h_source.html +852 -0
  64. data/doc/cxxapi/MessageClient_8h_source.html +328 -0
  65. data/doc/cxxapi/MessageReadersWriters_8h_source.html +539 -0
  66. data/doc/cxxapi/MessageServer_8h_source.html +606 -0
  67. data/doc/cxxapi/PoolOptions_8h_source.html +548 -0
  68. data/doc/cxxapi/Process_8h_source.html +286 -0
  69. data/doc/cxxapi/RandomGenerator_8h_source.html +191 -0
  70. data/doc/cxxapi/ResourceLocator_8h_source.html +115 -0
  71. data/doc/cxxapi/ScgiRequestParser_8h_source.html +406 -0
  72. data/doc/cxxapi/ServerInstanceDir_8h_source.html +374 -0
  73. data/doc/cxxapi/Session_8h_source.html +501 -0
  74. data/doc/cxxapi/SpawnManager_8h_source.html +647 -0
  75. data/doc/cxxapi/StaticContentHandler_8h_source.html +68 -0
  76. data/doc/cxxapi/StaticString_8h_source.html +254 -0
  77. data/doc/cxxapi/StringListCreator_8h_source.html +114 -0
  78. data/doc/cxxapi/Utils_8h_source.html +442 -0
  79. data/doc/cxxapi/annotated.html +46 -0
  80. data/doc/cxxapi/apache2_2Configuration_8h_source.html +82 -0
  81. data/doc/cxxapi/classAgentWatcher-members.html +30 -26
  82. data/doc/cxxapi/classAgentWatcher.html +168 -194
  83. data/doc/cxxapi/classClient-members.html +14 -11
  84. data/doc/cxxapi/classClient.html +35 -35
  85. data/doc/cxxapi/classHooks-members.html +2 -0
  86. data/doc/cxxapi/classHooks.html +2 -0
  87. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +16 -13
  88. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +78 -82
  89. data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +12 -9
  90. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +26 -22
  91. data/doc/cxxapi/classPassenger_1_1ArrayMessage-members.html +37 -0
  92. data/doc/cxxapi/classPassenger_1_1ArrayMessage.html +113 -0
  93. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +14 -11
  94. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +41 -42
  95. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +12 -9
  96. data/doc/cxxapi/classPassenger_1_1BusyException.html +24 -20
  97. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +12 -9
  98. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +23 -19
  99. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +2 -0
  100. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +8 -6
  101. data/doc/cxxapi/classPassenger_1_1EOFException-members.html +12 -9
  102. data/doc/cxxapi/classPassenger_1_1EOFException.html +27 -23
  103. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +12 -9
  104. data/doc/cxxapi/classPassenger_1_1EventFd.html +24 -21
  105. data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +54 -0
  106. data/doc/cxxapi/classPassenger_1_1EventedClient.html +436 -0
  107. data/doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html +37 -0
  108. data/doc/cxxapi/classPassenger_1_1EventedMessageServer.html +59 -0
  109. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map +3 -0
  110. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5 +1 -0
  111. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png +0 -0
  112. data/doc/cxxapi/classPassenger_1_1EventedServer-members.html +37 -0
  113. data/doc/cxxapi/classPassenger_1_1EventedServer.html +93 -0
  114. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map +3 -0
  115. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5 +1 -0
  116. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png +0 -0
  117. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +16 -13
  118. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +63 -70
  119. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +12 -9
  120. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +26 -22
  121. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +17 -14
  122. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +32 -30
  123. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +15 -12
  124. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +59 -59
  125. data/doc/cxxapi/classPassenger_1_1IOException-members.html +12 -9
  126. data/doc/cxxapi/classPassenger_1_1IOException.html +27 -23
  127. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +36 -33
  128. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +326 -344
  129. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +25 -22
  130. data/doc/cxxapi/classPassenger_1_1MessageServer.html +160 -191
  131. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +12 -9
  132. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +29 -27
  133. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +3 -1
  134. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +1 -1
  135. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  136. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +17 -14
  137. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +69 -79
  138. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +3 -1
  139. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +1 -1
  140. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  141. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +15 -12
  142. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +60 -63
  143. data/doc/cxxapi/classPassenger_1_1Process-members.html +20 -17
  144. data/doc/cxxapi/classPassenger_1_1Process.html +88 -95
  145. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +13 -10
  146. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +36 -35
  147. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +12 -9
  148. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +24 -20
  149. data/doc/cxxapi/classPassenger_1_1ScalarMessage-members.html +37 -0
  150. data/doc/cxxapi/classPassenger_1_1ScalarMessage.html +76 -0
  151. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +26 -23
  152. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +121 -138
  153. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +12 -9
  154. data/doc/cxxapi/classPassenger_1_1SecurityException.html +26 -22
  155. data/doc/cxxapi/classPassenger_1_1Session-members.html +29 -26
  156. data/doc/cxxapi/classPassenger_1_1Session.html +219 -240
  157. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +14 -11
  158. data/doc/cxxapi/classPassenger_1_1SpawnException.html +36 -37
  159. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +18 -15
  160. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +115 -110
  161. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +30 -27
  162. data/doc/cxxapi/classPassenger_1_1StandardSession.html +163 -184
  163. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +12 -9
  164. data/doc/cxxapi/classPassenger_1_1StaticString.html +27 -25
  165. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +16 -13
  166. data/doc/cxxapi/classPassenger_1_1SystemException.html +65 -67
  167. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +16 -13
  168. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +27 -23
  169. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +12 -9
  170. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +24 -20
  171. data/doc/cxxapi/classPassenger_1_1Uint16Message-members.html +36 -0
  172. data/doc/cxxapi/classPassenger_1_1Uint16Message.html +51 -0
  173. data/doc/cxxapi/classPassenger_1_1Uint32Message-members.html +36 -0
  174. data/doc/cxxapi/classPassenger_1_1Uint32Message.html +51 -0
  175. data/doc/cxxapi/classServer-members.html +12 -9
  176. data/doc/cxxapi/classServer.html +23 -20
  177. data/doc/cxxapi/classServerInstanceDirToucher-members.html +12 -9
  178. data/doc/cxxapi/classServerInstanceDirToucher.html +21 -17
  179. data/doc/cxxapi/classes.html +18 -4
  180. data/doc/cxxapi/definitions_8h_source.html +1 -0
  181. data/doc/cxxapi/files.html +36 -1
  182. data/doc/cxxapi/functions.html +53 -21
  183. data/doc/cxxapi/functions_0x62.html +82 -0
  184. data/doc/cxxapi/functions_0x63.html +99 -0
  185. data/doc/cxxapi/functions_0x64.html +95 -0
  186. data/doc/cxxapi/functions_0x65.html +88 -0
  187. data/doc/cxxapi/functions_0x66.html +100 -0
  188. data/doc/cxxapi/functions_0x67.html +170 -0
  189. data/doc/cxxapi/functions_0x68.html +88 -0
  190. data/doc/cxxapi/functions_0x69.html +93 -0
  191. data/doc/cxxapi/functions_0x6b.html +80 -0
  192. data/doc/cxxapi/functions_0x6c.html +88 -0
  193. data/doc/cxxapi/functions_0x6d.html +88 -0
  194. data/doc/cxxapi/functions_0x6e.html +86 -0
  195. data/doc/cxxapi/functions_0x6f.html +94 -0
  196. data/doc/cxxapi/functions_0x70.html +94 -0
  197. data/doc/cxxapi/functions_0x72.html +110 -0
  198. data/doc/cxxapi/functions_0x73.html +171 -0
  199. data/doc/cxxapi/functions_0x74.html +85 -0
  200. data/doc/cxxapi/functions_0x75.html +85 -0
  201. data/doc/cxxapi/functions_0x77.html +92 -0
  202. data/doc/cxxapi/functions_0x7e.html +79 -0
  203. data/doc/cxxapi/functions_enum.html +14 -12
  204. data/doc/cxxapi/functions_eval.html +22 -16
  205. data/doc/cxxapi/functions_func.html +460 -1
  206. data/doc/cxxapi/functions_vars.html +163 -63
  207. data/doc/cxxapi/graph_legend.html +1 -0
  208. data/doc/cxxapi/graph_legend.png +0 -0
  209. data/doc/cxxapi/group__Core.html +2 -2
  210. data/doc/cxxapi/group__Core.map +1 -2
  211. data/doc/cxxapi/group__Core.png +0 -0
  212. data/doc/cxxapi/group__Exceptions.html +32 -40
  213. data/doc/cxxapi/group__Hooks.html +2 -1
  214. data/doc/cxxapi/group__Hooks.map +1 -1
  215. data/doc/cxxapi/group__Hooks.png +0 -0
  216. data/doc/cxxapi/group__Support.html +509 -0
  217. data/doc/cxxapi/hierarchy.html +66 -62
  218. data/doc/cxxapi/inherit__graph__10.map +3 -1
  219. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  220. data/doc/cxxapi/inherit__graph__10.png +0 -0
  221. data/doc/cxxapi/inherit__graph__11.map +4 -1
  222. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  223. data/doc/cxxapi/inherit__graph__11.png +0 -0
  224. data/doc/cxxapi/inherit__graph__12.map +3 -1
  225. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  226. data/doc/cxxapi/inherit__graph__12.png +0 -0
  227. data/doc/cxxapi/inherit__graph__13.map +3 -1
  228. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  229. data/doc/cxxapi/inherit__graph__13.png +0 -0
  230. data/doc/cxxapi/inherit__graph__14.map +3 -1
  231. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  232. data/doc/cxxapi/inherit__graph__14.png +0 -0
  233. data/doc/cxxapi/inherit__graph__15.map +5 -1
  234. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  235. data/doc/cxxapi/inherit__graph__15.png +0 -0
  236. data/doc/cxxapi/inherit__graph__16.map +3 -3
  237. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  238. data/doc/cxxapi/inherit__graph__16.png +0 -0
  239. data/doc/cxxapi/inherit__graph__17.map +3 -1
  240. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  241. data/doc/cxxapi/inherit__graph__17.png +0 -0
  242. data/doc/cxxapi/inherit__graph__18.map +4 -1
  243. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  244. data/doc/cxxapi/inherit__graph__18.png +0 -0
  245. data/doc/cxxapi/inherit__graph__19.map +3 -1
  246. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  247. data/doc/cxxapi/inherit__graph__19.png +0 -0
  248. data/doc/cxxapi/inherit__graph__20.map +3 -2
  249. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  250. data/doc/cxxapi/inherit__graph__20.png +0 -0
  251. data/doc/cxxapi/inherit__graph__21.map +3 -1
  252. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  253. data/doc/cxxapi/inherit__graph__21.png +0 -0
  254. data/doc/cxxapi/inherit__graph__22.map +3 -1
  255. data/doc/cxxapi/inherit__graph__22.md5 +1 -1
  256. data/doc/cxxapi/inherit__graph__22.png +0 -0
  257. data/doc/cxxapi/inherit__graph__23.map +3 -1
  258. data/doc/cxxapi/inherit__graph__23.md5 +1 -1
  259. data/doc/cxxapi/inherit__graph__23.png +0 -0
  260. data/doc/cxxapi/inherit__graph__24.map +3 -1
  261. data/doc/cxxapi/inherit__graph__24.md5 +1 -1
  262. data/doc/cxxapi/inherit__graph__24.png +0 -0
  263. data/doc/cxxapi/inherit__graph__25.map +3 -1
  264. data/doc/cxxapi/inherit__graph__25.md5 +1 -1
  265. data/doc/cxxapi/inherit__graph__25.png +0 -0
  266. data/doc/cxxapi/inherit__graph__26.map +3 -1
  267. data/doc/cxxapi/inherit__graph__26.md5 +1 -1
  268. data/doc/cxxapi/inherit__graph__26.png +0 -0
  269. data/doc/cxxapi/inherit__graph__27.map +3 -1
  270. data/doc/cxxapi/inherit__graph__27.md5 +1 -1
  271. data/doc/cxxapi/inherit__graph__27.png +0 -0
  272. data/doc/cxxapi/inherit__graph__28.map +4 -1
  273. data/doc/cxxapi/inherit__graph__28.md5 +1 -1
  274. data/doc/cxxapi/inherit__graph__28.png +0 -0
  275. data/doc/cxxapi/inherit__graph__29.map +3 -1
  276. data/doc/cxxapi/inherit__graph__29.md5 +1 -1
  277. data/doc/cxxapi/inherit__graph__29.png +0 -0
  278. data/doc/cxxapi/inherit__graph__30.map +3 -2
  279. data/doc/cxxapi/inherit__graph__30.md5 +1 -1
  280. data/doc/cxxapi/inherit__graph__30.png +0 -0
  281. data/doc/cxxapi/inherit__graph__31.map +3 -1
  282. data/doc/cxxapi/inherit__graph__31.md5 +1 -1
  283. data/doc/cxxapi/inherit__graph__31.png +0 -0
  284. data/doc/cxxapi/inherit__graph__32.map +5 -1
  285. data/doc/cxxapi/inherit__graph__32.md5 +1 -1
  286. data/doc/cxxapi/inherit__graph__32.png +0 -0
  287. data/doc/cxxapi/inherit__graph__33.map +3 -1
  288. data/doc/cxxapi/inherit__graph__33.md5 +1 -1
  289. data/doc/cxxapi/inherit__graph__33.png +0 -0
  290. data/doc/cxxapi/inherit__graph__34.map +3 -3
  291. data/doc/cxxapi/inherit__graph__34.md5 +1 -1
  292. data/doc/cxxapi/inherit__graph__34.png +0 -0
  293. data/doc/cxxapi/inherit__graph__35.map +3 -1
  294. data/doc/cxxapi/inherit__graph__35.md5 +1 -1
  295. data/doc/cxxapi/inherit__graph__35.png +0 -0
  296. data/doc/cxxapi/inherit__graph__36.map +3 -1
  297. data/doc/cxxapi/inherit__graph__36.md5 +1 -1
  298. data/doc/cxxapi/inherit__graph__36.png +0 -0
  299. data/doc/cxxapi/inherit__graph__37.map +3 -1
  300. data/doc/cxxapi/inherit__graph__37.md5 +1 -1
  301. data/doc/cxxapi/inherit__graph__37.png +0 -0
  302. data/doc/cxxapi/inherit__graph__4.map +3 -1
  303. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  304. data/doc/cxxapi/inherit__graph__4.png +0 -0
  305. data/doc/cxxapi/inherit__graph__5.map +3 -1
  306. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  307. data/doc/cxxapi/inherit__graph__5.png +0 -0
  308. data/doc/cxxapi/inherit__graph__6.map +3 -1
  309. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  310. data/doc/cxxapi/inherit__graph__6.png +0 -0
  311. data/doc/cxxapi/inherit__graph__7.map +3 -1
  312. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  313. data/doc/cxxapi/inherit__graph__7.png +0 -0
  314. data/doc/cxxapi/inherit__graph__8.map +3 -1
  315. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  316. data/doc/cxxapi/inherit__graph__8.png +0 -0
  317. data/doc/cxxapi/inherit__graph__9.map +3 -1
  318. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  319. data/doc/cxxapi/inherit__graph__9.png +0 -0
  320. data/doc/cxxapi/inherits.html +123 -126
  321. data/doc/cxxapi/main.html +1 -0
  322. data/doc/cxxapi/modules.html +2 -1
  323. data/doc/cxxapi/namespacePassenger.html +263 -492
  324. data/doc/cxxapi/namespacemembers.html +68 -96
  325. data/doc/cxxapi/namespacemembers_enum.html +14 -12
  326. data/doc/cxxapi/namespacemembers_eval.html +20 -15
  327. data/doc/cxxapi/namespacemembers_func.html +52 -88
  328. data/doc/cxxapi/namespacemembers_type.html +18 -14
  329. data/doc/cxxapi/namespaces.html +12 -9
  330. data/doc/cxxapi/nginx_2Configuration_8h_source.html +125 -0
  331. data/doc/cxxapi/ngx__http__passenger__module_8h_source.html +94 -0
  332. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +12 -9
  333. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +24 -22
  334. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +43 -38
  335. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +275 -325
  336. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +12 -9
  337. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +24 -22
  338. data/doc/cxxapi/tree.html +152 -7
  339. data/doc/users_guide_snippets/{analysis_and_system_maintenance_tools.txt → analysis_and_system_maintenance.txt} +58 -1
  340. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +1 -2
  341. data/doc/users_guide_snippets/global_queueing_explained.txt +1 -5
  342. data/doc/users_guide_snippets/{rails_spawn_method.txt → passenger_spawn_method.txt} +9 -8
  343. data/doc/users_guide_snippets/tips.txt +12 -6
  344. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +22 -0
  345. data/ext/apache2/Bucket.cpp +4 -4
  346. data/ext/apache2/Bucket.h +3 -3
  347. data/ext/apache2/Configuration.cpp +278 -381
  348. data/ext/apache2/Configuration.h +3 -357
  349. data/ext/apache2/Configuration.hpp +461 -0
  350. data/ext/apache2/DirectoryMapper.h +3 -3
  351. data/ext/apache2/HelperAgent.cpp +359 -0
  352. data/ext/apache2/Hooks.cpp +339 -226
  353. data/ext/apache2/Hooks.h +1 -1
  354. data/ext/apache2/mod_passenger.c +10 -4
  355. data/ext/boost/algorithm/string/case_conv.hpp +4 -4
  356. data/ext/boost/algorithm/string/concept.hpp +2 -2
  357. data/ext/boost/algorithm/string/detail/case_conv.hpp +18 -9
  358. data/ext/boost/algorithm/string/detail/find_format.hpp +44 -43
  359. data/ext/boost/algorithm/string/detail/find_format_all.hpp +56 -56
  360. data/ext/boost/algorithm/string/detail/find_format_store.hpp +7 -0
  361. data/ext/boost/algorithm/string/detail/finder.hpp +14 -14
  362. data/ext/boost/algorithm/string/detail/formatter.hpp +2 -2
  363. data/ext/boost/algorithm/string/detail/replace_storage.hpp +3 -3
  364. data/ext/boost/algorithm/string/detail/sequence.hpp +3 -3
  365. data/ext/boost/algorithm/string/erase.hpp +98 -98
  366. data/ext/boost/algorithm/string/find_format.hpp +56 -38
  367. data/ext/boost/algorithm/string/finder.hpp +6 -6
  368. data/ext/boost/algorithm/string/formatter.hpp +1 -1
  369. data/ext/boost/algorithm/string/replace.hpp +99 -99
  370. data/ext/boost/bind.hpp +5 -1670
  371. data/ext/boost/bind/bind.hpp +1751 -0
  372. data/ext/boost/bind/bind_mf2_cc.hpp +228 -0
  373. data/ext/boost/bind/mem_fn.hpp +389 -0
  374. data/ext/boost/bind/mem_fn_template.hpp +54 -27
  375. data/ext/boost/bind/placeholders.hpp +3 -2
  376. data/ext/boost/concept_check.hpp +10 -0
  377. data/ext/boost/config/abi/msvc_prefix.hpp +15 -1
  378. data/ext/boost/config/abi_prefix.hpp +1 -1
  379. data/ext/boost/config/abi_suffix.hpp +3 -2
  380. data/ext/boost/config/auto_link.hpp +6 -1
  381. data/ext/boost/config/compiler/borland.hpp +75 -17
  382. data/ext/boost/config/compiler/codegear.hpp +163 -0
  383. data/ext/boost/config/compiler/common_edg.hpp +35 -0
  384. data/ext/boost/config/compiler/digitalmars.hpp +26 -0
  385. data/ext/boost/config/compiler/gcc.hpp +69 -14
  386. data/ext/boost/config/compiler/hp_acc.hpp +32 -0
  387. data/ext/boost/config/compiler/intel.hpp +13 -2
  388. data/ext/boost/config/compiler/kai.hpp +0 -2
  389. data/ext/boost/config/compiler/metrowerks.hpp +29 -1
  390. data/ext/boost/config/compiler/mpw.hpp +30 -0
  391. data/ext/boost/config/compiler/pgi.hpp +37 -0
  392. data/ext/boost/config/compiler/sgi_mipspro.hpp +1 -0
  393. data/ext/boost/config/compiler/sunpro_cc.hpp +39 -7
  394. data/ext/boost/config/compiler/vacpp.hpp +31 -3
  395. data/ext/boost/config/compiler/visualc.hpp +72 -5
  396. data/ext/boost/config/no_tr1/cmath.hpp +28 -0
  397. data/ext/boost/config/platform/bsd.hpp +16 -3
  398. data/ext/boost/config/platform/hpux.hpp +3 -0
  399. data/ext/boost/config/platform/macos.hpp +8 -0
  400. data/ext/boost/config/platform/solaris.hpp +7 -0
  401. data/ext/boost/config/platform/vxworks.hpp +31 -0
  402. data/ext/boost/config/select_compiler_config.hpp +4 -0
  403. data/ext/boost/config/select_platform_config.hpp +6 -2
  404. data/ext/boost/config/select_stdlib_config.hpp +17 -8
  405. data/ext/boost/config/stdlib/dinkumware.hpp +34 -2
  406. data/ext/boost/config/stdlib/libcomo.hpp +25 -0
  407. data/ext/boost/config/stdlib/libstdcpp3.hpp +56 -2
  408. data/ext/boost/config/stdlib/modena.hpp +25 -0
  409. data/ext/boost/config/stdlib/msl.hpp +24 -0
  410. data/ext/boost/config/stdlib/roguewave.hpp +26 -0
  411. data/ext/boost/config/stdlib/sgi.hpp +25 -0
  412. data/ext/boost/config/stdlib/stlport.hpp +36 -1
  413. data/ext/boost/config/stdlib/vacpp.hpp +25 -0
  414. data/ext/boost/config/suffix.hpp +67 -32
  415. data/ext/boost/config/warning_disable.hpp +47 -0
  416. data/ext/boost/cstdint.hpp +62 -36
  417. data/ext/boost/date_time/c_time.hpp +28 -12
  418. data/ext/boost/date_time/compiler_config.hpp +27 -5
  419. data/ext/boost/date_time/constrained_value.hpp +36 -13
  420. data/ext/boost/date_time/date.hpp +44 -33
  421. data/ext/boost/date_time/date_duration.hpp +13 -14
  422. data/ext/boost/date_time/date_facet.hpp +215 -226
  423. data/ext/boost/date_time/date_generator_formatter.hpp +22 -20
  424. data/ext/boost/date_time/date_generator_parser.hpp +52 -51
  425. data/ext/boost/date_time/date_generators.hpp +16 -16
  426. data/ext/boost/date_time/date_parsing.hpp +115 -98
  427. data/ext/boost/date_time/filetime_functions.hpp +133 -41
  428. data/ext/boost/date_time/format_date_parser.hpp +22 -10
  429. data/ext/boost/date_time/gregorian/conversion.hpp +32 -39
  430. data/ext/boost/date_time/gregorian/greg_calendar.hpp +15 -14
  431. data/ext/boost/date_time/gregorian/greg_date.hpp +19 -18
  432. data/ext/boost/date_time/gregorian/greg_duration.hpp +106 -10
  433. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +16 -7
  434. data/ext/boost/date_time/gregorian/greg_weekday.hpp +2 -2
  435. data/ext/boost/date_time/gregorian/gregorian_io.hpp +11 -4
  436. data/ext/boost/date_time/gregorian_calendar.hpp +8 -8
  437. data/ext/boost/date_time/gregorian_calendar.ipp +30 -30
  438. data/ext/boost/date_time/int_adapter.hpp +4 -2
  439. data/ext/boost/date_time/microsec_time_clock.hpp +39 -117
  440. data/ext/boost/date_time/period_parser.hpp +17 -15
  441. data/ext/boost/date_time/posix_time/conversion.hpp +28 -29
  442. data/ext/boost/date_time/posix_time/posix_time_config.hpp +19 -19
  443. data/ext/boost/date_time/posix_time/posix_time_io.hpp +31 -38
  444. data/ext/boost/date_time/posix_time/time_formatters.hpp +32 -32
  445. data/ext/boost/date_time/string_parse_tree.hpp +46 -46
  446. data/ext/boost/date_time/strings_from_facet.hpp +7 -5
  447. data/ext/boost/date_time/time.hpp +7 -6
  448. data/ext/boost/date_time/time_defs.hpp +12 -2
  449. data/ext/boost/date_time/time_duration.hpp +27 -26
  450. data/ext/boost/date_time/time_facet.hpp +386 -321
  451. data/ext/boost/date_time/time_formatting_streams.hpp +8 -5
  452. data/ext/boost/date_time/time_resolution_traits.hpp +29 -25
  453. data/ext/boost/date_time/time_system_split.hpp +7 -13
  454. data/ext/boost/date_time/wrapping_int.hpp +21 -15
  455. data/ext/boost/detail/call_traits.hpp +1 -1
  456. data/ext/boost/detail/endian.hpp +4 -4
  457. data/ext/boost/detail/no_exceptions_support.hpp +87 -0
  458. data/ext/boost/detail/sp_typeinfo.hpp +50 -4
  459. data/ext/boost/detail/workaround.hpp +63 -3
  460. data/ext/boost/enable_shared_from_this.hpp +4 -59
  461. data/ext/boost/exception/current_exception_cast.hpp +43 -0
  462. data/ext/boost/exception/detail/attribute_noreturn.hpp +17 -0
  463. data/ext/boost/exception/detail/error_info_impl.hpp +75 -0
  464. data/ext/boost/exception/detail/exception_ptr.hpp +490 -0
  465. data/ext/boost/exception/detail/is_output_streamable.hpp +47 -0
  466. data/ext/boost/exception/detail/object_hex_dump.hpp +50 -0
  467. data/ext/boost/exception/detail/type_info.hpp +79 -0
  468. data/ext/boost/exception/diagnostic_information.hpp +182 -0
  469. data/ext/boost/exception/exception.hpp +422 -0
  470. data/ext/boost/exception/get_error_info.hpp +130 -0
  471. data/ext/boost/exception/info.hpp +167 -0
  472. data/ext/boost/exception/to_string.hpp +83 -0
  473. data/ext/boost/exception/to_string_stub.hpp +109 -0
  474. data/ext/boost/exception_ptr.hpp +11 -0
  475. data/ext/boost/function/detail/prologue.hpp +2 -1
  476. data/ext/boost/function/function_base.hpp +270 -128
  477. data/ext/boost/function/function_fwd.hpp +70 -0
  478. data/ext/boost/function/function_template.hpp +319 -130
  479. data/ext/boost/get_pointer.hpp +5 -1
  480. data/ext/boost/integer.hpp +253 -0
  481. data/ext/boost/integer_fwd.hpp +174 -0
  482. data/ext/boost/integer_traits.hpp +26 -1
  483. data/ext/boost/io/ios_state.hpp +8 -0
  484. data/ext/boost/iterator/detail/config_def.hpp +4 -2
  485. data/ext/boost/iterator/iterator_adaptor.hpp +7 -2
  486. data/ext/boost/iterator/iterator_facade.hpp +1 -2
  487. data/ext/boost/lexical_cast.hpp +113 -105
  488. data/ext/boost/limits.hpp +1 -1
  489. data/ext/boost/mem_fn.hpp +5 -370
  490. data/ext/boost/memory_order.hpp +53 -0
  491. data/ext/boost/mpl/always.hpp +3 -3
  492. data/ext/boost/mpl/and.hpp +3 -3
  493. data/ext/boost/mpl/apply.hpp +3 -3
  494. data/ext/boost/mpl/apply_fwd.hpp +3 -3
  495. data/ext/boost/mpl/apply_wrap.hpp +37 -6
  496. data/ext/boost/mpl/arg.hpp +3 -3
  497. data/ext/boost/mpl/arg_fwd.hpp +3 -3
  498. data/ext/boost/mpl/assert.hpp +6 -6
  499. data/ext/boost/mpl/aux_/adl_barrier.hpp +3 -3
  500. data/ext/boost/mpl/aux_/arg_typedef.hpp +3 -3
  501. data/ext/boost/mpl/aux_/arity.hpp +3 -3
  502. data/ext/boost/mpl/aux_/arity_spec.hpp +3 -3
  503. data/ext/boost/mpl/aux_/common_name_wknd.hpp +3 -3
  504. data/ext/boost/mpl/aux_/config/adl.hpp +4 -4
  505. data/ext/boost/mpl/aux_/config/arrays.hpp +4 -4
  506. data/ext/boost/mpl/aux_/config/bcc.hpp +28 -0
  507. data/ext/boost/mpl/aux_/config/bind.hpp +4 -4
  508. data/ext/boost/mpl/aux_/config/compiler.hpp +8 -6
  509. data/ext/boost/mpl/aux_/config/ctps.hpp +3 -3
  510. data/ext/boost/mpl/aux_/config/dtp.hpp +5 -5
  511. data/ext/boost/mpl/aux_/config/eti.hpp +3 -3
  512. data/ext/boost/mpl/aux_/config/gcc.hpp +3 -3
  513. data/ext/boost/mpl/aux_/config/has_apply.hpp +3 -3
  514. data/ext/boost/mpl/aux_/config/has_xxx.hpp +3 -3
  515. data/ext/boost/mpl/aux_/config/integral.hpp +4 -4
  516. data/ext/boost/mpl/aux_/config/intel.hpp +3 -3
  517. data/ext/boost/mpl/aux_/config/lambda.hpp +3 -3
  518. data/ext/boost/mpl/aux_/config/msvc.hpp +3 -3
  519. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +3 -3
  520. data/ext/boost/mpl/aux_/config/nttp.hpp +3 -3
  521. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +3 -3
  522. data/ext/boost/mpl/aux_/config/pp_counter.hpp +3 -3
  523. data/ext/boost/mpl/aux_/config/preprocessor.hpp +4 -4
  524. data/ext/boost/mpl/aux_/config/static_constant.hpp +3 -3
  525. data/ext/boost/mpl/aux_/config/ttp.hpp +4 -4
  526. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +3 -3
  527. data/ext/boost/mpl/aux_/config/workaround.hpp +3 -3
  528. data/ext/boost/mpl/aux_/full_lambda.hpp +3 -3
  529. data/ext/boost/mpl/aux_/has_apply.hpp +3 -3
  530. data/ext/boost/mpl/aux_/has_type.hpp +3 -3
  531. data/ext/boost/mpl/aux_/include_preprocessed.hpp +3 -3
  532. data/ext/boost/mpl/aux_/integral_wrapper.hpp +3 -3
  533. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +3 -3
  534. data/ext/boost/mpl/aux_/lambda_support.hpp +4 -4
  535. data/ext/boost/mpl/aux_/msvc_never_true.hpp +3 -3
  536. data/ext/boost/mpl/aux_/na.hpp +3 -3
  537. data/ext/boost/mpl/aux_/na_assert.hpp +3 -3
  538. data/ext/boost/mpl/aux_/na_fwd.hpp +3 -3
  539. data/ext/boost/mpl/aux_/na_spec.hpp +3 -3
  540. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +3 -3
  541. data/ext/boost/mpl/aux_/nttp_decl.hpp +3 -3
  542. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +3 -3
  543. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +3 -3
  544. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +3 -3
  545. data/ext/boost/mpl/aux_/preprocessor/params.hpp +3 -3
  546. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +3 -3
  547. data/ext/boost/mpl/aux_/static_cast.hpp +3 -3
  548. data/ext/boost/mpl/aux_/template_arity.hpp +3 -3
  549. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +3 -3
  550. data/ext/boost/mpl/aux_/type_wrapper.hpp +3 -3
  551. data/ext/boost/mpl/aux_/value_wknd.hpp +3 -3
  552. data/ext/boost/mpl/aux_/yes_no.hpp +3 -3
  553. data/ext/boost/mpl/bind.hpp +3 -3
  554. data/ext/boost/mpl/bind_fwd.hpp +3 -3
  555. data/ext/boost/mpl/bool.hpp +3 -3
  556. data/ext/boost/mpl/bool_fwd.hpp +3 -3
  557. data/ext/boost/mpl/eval_if.hpp +3 -3
  558. data/ext/boost/mpl/has_xxx.hpp +10 -8
  559. data/ext/boost/mpl/identity.hpp +3 -3
  560. data/ext/boost/mpl/if.hpp +3 -3
  561. data/ext/boost/mpl/int.hpp +3 -3
  562. data/ext/boost/mpl/int_fwd.hpp +3 -3
  563. data/ext/boost/mpl/integral_c.hpp +3 -3
  564. data/ext/boost/mpl/integral_c_fwd.hpp +3 -3
  565. data/ext/boost/mpl/integral_c_tag.hpp +3 -3
  566. data/ext/boost/mpl/lambda.hpp +3 -3
  567. data/ext/boost/mpl/lambda_fwd.hpp +3 -3
  568. data/ext/boost/mpl/limits/arity.hpp +3 -3
  569. data/ext/boost/mpl/logical.hpp +3 -3
  570. data/ext/boost/mpl/next.hpp +3 -3
  571. data/ext/boost/mpl/next_prior.hpp +3 -3
  572. data/ext/boost/mpl/not.hpp +3 -3
  573. data/ext/boost/mpl/or.hpp +3 -3
  574. data/ext/boost/mpl/placeholders.hpp +3 -3
  575. data/ext/boost/mpl/protect.hpp +3 -3
  576. data/ext/boost/mpl/quote.hpp +18 -7
  577. data/ext/boost/mpl/size_t.hpp +3 -3
  578. data/ext/boost/mpl/size_t_fwd.hpp +3 -3
  579. data/ext/boost/mpl/void.hpp +3 -3
  580. data/ext/boost/mpl/void_fwd.hpp +3 -3
  581. data/ext/boost/non_type.hpp +27 -27
  582. data/ext/boost/operators.hpp +51 -18
  583. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  584. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  585. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  586. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  587. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  588. data/ext/boost/preprocessor/seq/cat.hpp +48 -0
  589. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  590. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  591. data/ext/boost/range/as_literal.hpp +10 -14
  592. data/ext/boost/range/begin.hpp +4 -4
  593. data/ext/boost/range/detail/implementation_help.hpp +4 -0
  594. data/ext/boost/range/end.hpp +4 -4
  595. data/ext/boost/range/iterator_range.hpp +31 -15
  596. data/ext/boost/ref.hpp +12 -1
  597. data/ext/boost/scoped_array.hpp +16 -0
  598. data/ext/boost/scoped_ptr.hpp +16 -0
  599. data/ext/boost/shared_ptr.hpp +2 -602
  600. data/ext/boost/{detail → smart_ptr}/bad_weak_ptr.hpp +4 -4
  601. data/ext/boost/{detail → smart_ptr/detail}/atomic_count.hpp +14 -19
  602. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_gcc.hpp +13 -9
  603. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_gcc_x86.hpp +5 -12
  604. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_pthreads.hpp +5 -5
  605. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_solaris.hpp +3 -3
  606. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_sync.hpp +9 -5
  607. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_win32.hpp +3 -3
  608. data/ext/boost/smart_ptr/detail/operator_bool.hpp +56 -0
  609. data/ext/boost/{detail → smart_ptr/detail}/shared_count.hpp +86 -17
  610. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +76 -0
  611. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +70 -0
  612. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_acc_ia64.hpp +4 -4
  613. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_cw_ppc.hpp +4 -4
  614. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_cw_x86.hpp +4 -4
  615. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_ia64.hpp +4 -4
  616. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +172 -0
  617. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_ppc.hpp +4 -4
  618. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_sparc.hpp +7 -7
  619. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_x86.hpp +4 -4
  620. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_nt.hpp +4 -4
  621. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_pt.hpp +4 -4
  622. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_solaris.hpp +4 -4
  623. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +131 -0
  624. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_sync.hpp +8 -4
  625. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_w32.hpp +4 -4
  626. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_impl.hpp +5 -5
  627. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +49 -0
  628. data/ext/boost/smart_ptr/detail/spinlock.hpp +53 -0
  629. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +85 -0
  630. data/ext/boost/smart_ptr/detail/spinlock_nt.hpp +89 -0
  631. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +87 -0
  632. data/ext/boost/smart_ptr/detail/spinlock_pt.hpp +79 -0
  633. data/ext/boost/smart_ptr/detail/spinlock_sync.hpp +87 -0
  634. data/ext/boost/smart_ptr/detail/yield_k.hpp +149 -0
  635. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +79 -0
  636. data/ext/boost/smart_ptr/scoped_array.hpp +107 -0
  637. data/ext/boost/smart_ptr/scoped_ptr.hpp +131 -0
  638. data/ext/boost/smart_ptr/shared_ptr.hpp +701 -0
  639. data/ext/boost/smart_ptr/weak_ptr.hpp +230 -0
  640. data/ext/boost/src/pthread/thread.cpp +115 -203
  641. data/ext/boost/src/tss_null.cpp +1 -1
  642. data/ext/boost/static_assert.hpp +14 -4
  643. data/ext/boost/thread.hpp +7 -2
  644. data/ext/boost/thread/barrier.hpp +63 -0
  645. data/ext/boost/thread/detail/force_cast.hpp +39 -0
  646. data/ext/boost/thread/detail/move.hpp +29 -2
  647. data/ext/boost/thread/detail/platform.hpp +3 -3
  648. data/ext/boost/thread/detail/singleton.hpp +59 -0
  649. data/ext/boost/thread/detail/thread.hpp +496 -0
  650. data/ext/boost/thread/detail/thread_group.hpp +105 -0
  651. data/ext/boost/thread/detail/thread_heap_alloc.hpp +23 -0
  652. data/ext/boost/thread/detail/thread_interruption.hpp +35 -0
  653. data/ext/boost/thread/detail/tss_hooks.hpp +82 -0
  654. data/ext/boost/thread/exceptions.hpp +174 -60
  655. data/ext/boost/thread/future.hpp +1364 -0
  656. data/ext/boost/thread/locks.hpp +899 -32
  657. data/ext/boost/thread/once.hpp +4 -0
  658. data/ext/boost/thread/pthread/condition_variable.hpp +16 -21
  659. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +37 -3
  660. data/ext/boost/thread/pthread/mutex.hpp +20 -7
  661. data/ext/boost/thread/pthread/once.hpp +7 -2
  662. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +5 -1
  663. data/ext/boost/thread/pthread/recursive_mutex.hpp +22 -5
  664. data/ext/boost/thread/pthread/shared_mutex.hpp +303 -0
  665. data/ext/boost/thread/pthread/thread_data.hpp +37 -10
  666. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +242 -0
  667. data/ext/boost/thread/pthread/timespec.hpp +11 -3
  668. data/ext/boost/thread/shared_mutex.hpp +21 -0
  669. data/ext/boost/thread/thread.hpp +8 -3
  670. data/ext/boost/thread/thread_time.hpp +4 -0
  671. data/ext/boost/thread/tss.hpp +106 -13
  672. data/ext/boost/thread/xtime.hpp +6 -2
  673. data/ext/boost/throw_exception.hpp +36 -7
  674. data/ext/boost/token_functions.hpp +1 -1
  675. data/ext/boost/tokenizer.hpp +1 -1
  676. data/ext/boost/type_traits/add_pointer.hpp +1 -1
  677. data/ext/boost/type_traits/add_volatile.hpp +47 -0
  678. data/ext/boost/type_traits/alignment_of.hpp +29 -1
  679. data/ext/boost/type_traits/config.hpp +1 -1
  680. data/ext/boost/type_traits/conversion_traits.hpp +1 -1
  681. data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
  682. data/ext/boost/type_traits/intrinsics.hpp +88 -1
  683. data/ext/boost/type_traits/is_abstract.hpp +14 -5
  684. data/ext/boost/type_traits/is_arithmetic.hpp +8 -0
  685. data/ext/boost/type_traits/is_array.hpp +3 -2
  686. data/ext/boost/type_traits/is_base_and_derived.hpp +254 -0
  687. data/ext/boost/type_traits/is_base_of.hpp +51 -0
  688. data/ext/boost/type_traits/is_class.hpp +12 -0
  689. data/ext/boost/type_traits/is_const.hpp +6 -2
  690. data/ext/boost/type_traits/is_convertible.hpp +14 -2
  691. data/ext/boost/type_traits/is_enum.hpp +10 -1
  692. data/ext/boost/type_traits/is_function.hpp +11 -3
  693. data/ext/boost/type_traits/is_fundamental.hpp +45 -0
  694. data/ext/boost/type_traits/is_integral.hpp +5 -0
  695. data/ext/boost/type_traits/is_member_function_pointer.hpp +5 -3
  696. data/ext/boost/type_traits/is_member_pointer.hpp +4 -2
  697. data/ext/boost/type_traits/is_pointer.hpp +3 -1
  698. data/ext/boost/type_traits/is_reference.hpp +4 -2
  699. data/ext/boost/type_traits/is_signed.hpp +135 -0
  700. data/ext/boost/type_traits/is_unsigned.hpp +130 -0
  701. data/ext/boost/type_traits/is_void.hpp +5 -0
  702. data/ext/boost/type_traits/is_volatile.hpp +4 -2
  703. data/ext/boost/type_traits/make_unsigned.hpp +137 -0
  704. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  705. data/ext/boost/type_traits/type_with_alignment.hpp +106 -1
  706. data/ext/boost/utility.hpp +2 -1
  707. data/ext/boost/utility/addressof.hpp +61 -17
  708. data/ext/boost/utility/binary.hpp +708 -0
  709. data/ext/boost/utility/enable_if.hpp +2 -2
  710. data/ext/boost/weak_ptr.hpp +4 -174
  711. data/ext/common/AbstractSpawnManager.h +110 -0
  712. data/ext/common/Account.h +175 -0
  713. data/ext/common/AccountsDatabase.cpp +81 -0
  714. data/ext/common/AccountsDatabase.h +130 -0
  715. data/ext/common/AgentBase.cpp +323 -0
  716. data/ext/common/{Version.h → AgentBase.h} +14 -6
  717. data/ext/common/AgentsStarter.cpp +154 -0
  718. data/ext/common/AgentsStarter.h +81 -0
  719. data/ext/common/AgentsStarter.hpp +619 -0
  720. data/ext/common/ApplicationPool/Client.h +796 -0
  721. data/ext/common/{ApplicationPool.h → ApplicationPool/Interface.h} +108 -18
  722. data/ext/common/ApplicationPool/Pool.h +1315 -0
  723. data/ext/common/ApplicationPool/Server.h +475 -0
  724. data/ext/common/BCrypt.cpp +343 -0
  725. data/ext/common/BCrypt.h +73 -0
  726. data/ext/common/Blowfish.c +685 -0
  727. data/ext/common/Blowfish.h +103 -0
  728. data/ext/common/Constants.h +48 -0
  729. data/ext/common/EventedClient.h +598 -0
  730. data/ext/common/EventedMessageServer.h +327 -0
  731. data/ext/common/EventedServer.h +295 -0
  732. data/ext/common/Exceptions.h +78 -1
  733. data/ext/common/FileDescriptor.h +229 -0
  734. data/ext/common/HelperAgent/BacktracesServer.h +59 -0
  735. data/ext/common/Logging.cpp +8 -9
  736. data/ext/common/Logging.h +593 -21
  737. data/ext/common/LoggingAgent/ChangeNotifier.h +63 -0
  738. data/ext/common/LoggingAgent/DataStoreId.h +177 -0
  739. data/ext/common/LoggingAgent/LoggingServer.h +1343 -0
  740. data/ext/common/LoggingAgent/Main.cpp +278 -0
  741. data/ext/common/LoggingAgent/RemoteSender.h +457 -0
  742. data/ext/common/MessageChannel.h +196 -34
  743. data/ext/common/MessageClient.h +297 -0
  744. data/ext/common/MessageReadersWriters.h +508 -0
  745. data/ext/common/MessageServer.h +575 -0
  746. data/ext/common/PoolOptions.h +279 -117
  747. data/ext/common/Process.h +255 -0
  748. data/ext/common/RandomGenerator.h +160 -0
  749. data/ext/common/ResourceLocator.h +84 -0
  750. data/ext/common/ServerInstanceDir.h +343 -0
  751. data/ext/common/Session.h +470 -0
  752. data/ext/common/SpawnManager.h +256 -201
  753. data/ext/common/StaticString.h +79 -4
  754. data/ext/common/StringListCreator.h +2 -2
  755. data/ext/common/Utils.cpp +385 -397
  756. data/ext/common/Utils.h +79 -165
  757. data/ext/common/{Base64.cpp → Utils/Base64.cpp} +0 -0
  758. data/ext/common/{Base64.h → Utils/Base64.h} +27 -1
  759. data/ext/common/Utils/BlockingQueue.h +136 -0
  760. data/ext/common/Utils/BlockingScalar.h +50 -0
  761. data/ext/common/{CachedFileStat.cpp → Utils/CachedFileStat.cpp} +1 -1
  762. data/ext/common/{CachedFileStat.h → Utils/CachedFileStat.h} +1 -1
  763. data/ext/common/{CachedFileStat.hpp → Utils/CachedFileStat.hpp} +1 -1
  764. data/ext/common/{FileChangeChecker.h → Utils/FileChangeChecker.h} +1 -1
  765. data/ext/common/Utils/FileHandleGuard.h +81 -0
  766. data/ext/common/Utils/IOUtils.cpp +754 -0
  767. data/ext/common/Utils/IOUtils.h +253 -0
  768. data/ext/common/Utils/MD5.cpp +406 -0
  769. data/ext/common/Utils/MD5.h +98 -0
  770. data/ext/common/Utils/MemZeroGuard.h +103 -0
  771. data/ext/common/Utils/ProcessMetricsCollector.h +462 -0
  772. data/ext/common/Utils/ScopeGuard.h +72 -0
  773. data/ext/common/Utils/StrIntUtils.cpp +329 -0
  774. data/ext/common/Utils/StrIntUtils.h +228 -0
  775. data/ext/common/{SystemTime.cpp → Utils/SystemTime.cpp} +5 -1
  776. data/ext/common/Utils/SystemTime.h +201 -0
  777. data/ext/common/{Timer.h → Utils/Timer.h} +58 -18
  778. data/ext/common/Utils/VariantMap.h +363 -0
  779. data/ext/common/Utils/foo.cpp +10 -0
  780. data/ext/common/Watchdog.cpp +1034 -0
  781. data/ext/google/COPYING +28 -0
  782. data/ext/google/ChangeLog +167 -0
  783. data/ext/google/dense_hash_map +310 -0
  784. data/ext/google/dense_hash_set +287 -0
  785. data/ext/google/sparse_hash_map +294 -0
  786. data/ext/google/sparse_hash_set +275 -0
  787. data/ext/google/sparsehash/densehashtable.h +1062 -0
  788. data/ext/google/sparsehash/sparseconfig.h +55 -0
  789. data/ext/google/sparsehash/sparsehashtable.h +1015 -0
  790. data/ext/google/sparsetable +1468 -0
  791. data/ext/google/type_traits.h +250 -0
  792. data/ext/libev/Changes +302 -0
  793. data/ext/libev/LICENSE +36 -0
  794. data/ext/libev/Makefile.am +18 -0
  795. data/ext/libev/Makefile.in +685 -0
  796. data/ext/libev/README +58 -0
  797. data/ext/libev/aclocal.m4 +7549 -0
  798. data/ext/libev/autogen.sh +6 -0
  799. data/ext/libev/config.guess +1526 -0
  800. data/ext/libev/config.h +122 -0
  801. data/ext/libev/config.h.in +121 -0
  802. data/ext/libev/config.sub +1658 -0
  803. data/ext/libev/configure +22156 -0
  804. data/ext/libev/configure.ac +18 -0
  805. data/ext/libev/ev++.h +800 -0
  806. data/ext/libev/ev.c +3694 -0
  807. data/ext/libev/ev.h +705 -0
  808. data/ext/libev/ev_epoll.c +228 -0
  809. data/ext/libev/ev_kqueue.c +196 -0
  810. data/ext/libev/ev_poll.c +144 -0
  811. data/ext/libev/ev_port.c +165 -0
  812. data/ext/libev/ev_select.c +308 -0
  813. data/ext/libev/ev_vars.h +187 -0
  814. data/ext/libev/ev_win32.c +153 -0
  815. data/ext/libev/ev_wrap.h +178 -0
  816. data/ext/libev/event.c +401 -0
  817. data/ext/libev/event.h +158 -0
  818. data/ext/libev/install-sh +294 -0
  819. data/ext/libev/libev.m4 +38 -0
  820. data/ext/libev/ltmain.sh +6871 -0
  821. data/ext/libev/missing +336 -0
  822. data/ext/libev/mkinstalldirs +111 -0
  823. data/ext/nginx/Configuration.c +532 -182
  824. data/ext/nginx/Configuration.h +33 -10
  825. data/ext/nginx/ContentHandler.c +188 -53
  826. data/ext/nginx/ContentHandler.h +1 -1
  827. data/ext/nginx/{HelperServer.cpp → HelperAgent.cpp} +433 -299
  828. data/ext/nginx/HttpStatusExtractor.h +1 -1
  829. data/ext/nginx/ScgiRequestParser.h +68 -11
  830. data/ext/nginx/StaticContentHandler.c +4 -1
  831. data/ext/nginx/StaticContentHandler.h +1 -1
  832. data/ext/nginx/config +5 -5
  833. data/ext/nginx/ngx_http_passenger_module.c +315 -469
  834. data/ext/nginx/ngx_http_passenger_module.h +8 -17
  835. data/ext/oxt/backtrace.cpp +49 -41
  836. data/ext/oxt/backtrace.hpp +1 -1
  837. data/ext/oxt/detail/backtrace_disabled.hpp +1 -1
  838. data/ext/oxt/detail/backtrace_enabled.hpp +16 -15
  839. data/ext/oxt/detail/spin_lock_darwin.hpp +69 -0
  840. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +3 -4
  841. data/ext/oxt/detail/spin_lock_portable.hpp +1 -1
  842. data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
  843. data/ext/oxt/detail/tracable_exception_disabled.hpp +1 -1
  844. data/ext/oxt/detail/tracable_exception_enabled.hpp +1 -1
  845. data/ext/oxt/dynamic_thread_group.hpp +195 -0
  846. data/ext/oxt/macros.hpp +1 -1
  847. data/ext/oxt/spin_lock.hpp +4 -2
  848. data/ext/oxt/system_calls.cpp +129 -13
  849. data/ext/oxt/system_calls.hpp +16 -2
  850. data/ext/oxt/thread.cpp +1 -1
  851. data/ext/oxt/thread.hpp +49 -14
  852. data/ext/oxt/tracable_exception.cpp +5 -5
  853. data/ext/oxt/tracable_exception.hpp +1 -1
  854. data/ext/phusion_passenger/extconf.rb +7 -2
  855. data/ext/phusion_passenger/native_support.c +733 -33
  856. data/{bin → helper-scripts}/passenger-spawn-server +50 -12
  857. data/helper-scripts/prespawn +63 -0
  858. data/lib/phusion_passenger.rb +113 -0
  859. data/lib/phusion_passenger/abstract_installer.rb +50 -12
  860. data/lib/phusion_passenger/abstract_request_handler.rb +432 -171
  861. data/lib/phusion_passenger/abstract_server.rb +125 -122
  862. data/lib/phusion_passenger/abstract_server_collection.rb +51 -22
  863. data/lib/phusion_passenger/admin_tools.rb +1 -1
  864. data/lib/phusion_passenger/admin_tools/memory_stats.rb +299 -0
  865. data/lib/phusion_passenger/admin_tools/server_instance.rb +334 -0
  866. data/lib/phusion_passenger/analytics_logger.rb +342 -0
  867. data/lib/phusion_passenger/{application.rb → app_process.rb} +73 -24
  868. data/lib/phusion_passenger/classic_rails/application_spawner.rb +344 -0
  869. data/lib/phusion_passenger/{railz → classic_rails}/cgi_fixed.rb +2 -2
  870. data/lib/phusion_passenger/{railz → classic_rails}/framework_spawner.rb +75 -98
  871. data/lib/phusion_passenger/{railz → classic_rails}/request_handler.rb +8 -6
  872. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +65 -0
  873. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +48 -0
  874. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +59 -0
  875. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb +54 -0
  876. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +130 -0
  877. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +47 -0
  878. data/lib/phusion_passenger/classic_rails_extensions/init.rb +123 -0
  879. data/lib/phusion_passenger/console_text_template.rb +1 -1
  880. data/lib/phusion_passenger/constants.rb +9 -5
  881. data/lib/phusion_passenger/debug_logging.rb +104 -0
  882. data/lib/phusion_passenger/dependencies.rb +187 -4
  883. data/lib/phusion_passenger/exceptions.rb +4 -4
  884. data/lib/phusion_passenger/html_template.rb +6 -8
  885. data/lib/phusion_passenger/message_channel.rb +137 -21
  886. data/lib/phusion_passenger/message_client.rb +173 -0
  887. data/lib/phusion_passenger/native_support.rb +108 -0
  888. data/lib/phusion_passenger/packaging.rb +82 -13
  889. data/lib/phusion_passenger/platform_info.rb +84 -475
  890. data/lib/phusion_passenger/platform_info/apache.rb +329 -0
  891. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +187 -0
  892. data/lib/phusion_passenger/platform_info/compiler.rb +154 -0
  893. data/lib/phusion_passenger/{events.rb → platform_info/curl.rb} +26 -23
  894. data/lib/phusion_passenger/platform_info/documentation_tools.rb +35 -0
  895. data/lib/phusion_passenger/platform_info/linux.rb +77 -0
  896. data/lib/phusion_passenger/platform_info/operating_system.rb +51 -0
  897. data/lib/phusion_passenger/platform_info/ruby.rb +198 -0
  898. data/lib/phusion_passenger/platform_info/zlib.rb +38 -0
  899. data/lib/phusion_passenger/plugin.rb +96 -0
  900. data/lib/phusion_passenger/public_api.rb +112 -0
  901. data/lib/phusion_passenger/rack/application_spawner.rb +146 -71
  902. data/lib/phusion_passenger/rack/request_handler.rb +36 -13
  903. data/lib/phusion_passenger/rails3_extensions/init.rb +204 -0
  904. data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
  905. data/lib/phusion_passenger/spawn_manager.rb +137 -141
  906. data/lib/phusion_passenger/standalone/app_finder.rb +153 -0
  907. data/lib/phusion_passenger/standalone/command.rb +237 -0
  908. data/lib/phusion_passenger/standalone/config_file.rb +119 -0
  909. data/lib/phusion_passenger/standalone/help_command.rb +57 -0
  910. data/lib/phusion_passenger/standalone/main.rb +101 -0
  911. data/lib/phusion_passenger/standalone/package_runtime_command.rb +92 -0
  912. data/lib/phusion_passenger/standalone/runtime_installer.rb +466 -0
  913. data/lib/phusion_passenger/standalone/start_command.rb +510 -0
  914. data/lib/phusion_passenger/standalone/status_command.rb +62 -0
  915. data/lib/phusion_passenger/standalone/stop_command.rb +74 -0
  916. data/lib/phusion_passenger/standalone/utils.rb +42 -0
  917. data/lib/phusion_passenger/standalone/version_command.rb +42 -0
  918. data/lib/phusion_passenger/templates/framework_init_error.html.erb +1 -1
  919. data/lib/phusion_passenger/templates/standalone/cannot_write_to_dir.txt.erb +11 -0
  920. data/lib/phusion_passenger/templates/standalone/config.erb +69 -0
  921. data/lib/phusion_passenger/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +17 -0
  922. data/lib/phusion_passenger/templates/standalone/run_installer_as_root.txt.erb +8 -0
  923. data/lib/phusion_passenger/templates/standalone/welcome.txt.erb +8 -0
  924. data/lib/phusion_passenger/templates/standalone_default_root/index.html +1 -0
  925. data/lib/phusion_passenger/templates/version_not_found.html.erb +2 -2
  926. data/lib/phusion_passenger/utils.rb +476 -125
  927. data/lib/phusion_passenger/utils/file_system_watcher.rb +186 -0
  928. data/lib/phusion_passenger/utils/hosts_file_parser.rb +130 -0
  929. data/lib/phusion_passenger/utils/tmpdir.rb +70 -0
  930. data/lib/phusion_passenger/utils/unseekable_socket.rb +196 -0
  931. data/lib/phusion_passenger/wsgi/application_spawner.rb +24 -20
  932. data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
  933. data/misc/copy_boost_headers.rb +36 -9
  934. data/misc/find_owner_pipe_leaks.rb +1 -1
  935. data/misc/render_error_pages.rb +1 -1
  936. data/misc/union_station_gateway.crt +32 -0
  937. data/test/config.yml.example +24 -13
  938. data/test/cxx/ApplicationPool_PoolTest.cpp +33 -0
  939. data/test/cxx/ApplicationPool_PoolTestCases.cpp +1029 -0
  940. data/test/cxx/ApplicationPool_ServerTest.cpp +308 -0
  941. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +80 -0
  942. data/test/{Base64Test.cpp → cxx/Base64Test.cpp} +4 -2
  943. data/test/{CachedFileStatTest.cpp → cxx/CachedFileStatTest.cpp} +3 -3
  944. data/test/{CxxTestMain.cpp → cxx/CxxTestMain.cpp} +6 -27
  945. data/test/cxx/EventedClientTest.cpp +386 -0
  946. data/test/{FileChangeCheckerTest.cpp → cxx/FileChangeCheckerTest.cpp} +3 -5
  947. data/test/cxx/FileDescriptorTest.cpp +69 -0
  948. data/test/{HttpStatusExtractorTest.cpp → cxx/HttpStatusExtractorTest.cpp} +1 -1
  949. data/test/cxx/IOUtilsTest.cpp +398 -0
  950. data/test/cxx/LoggingTest.cpp +914 -0
  951. data/test/cxx/MessageChannelTest.cpp +672 -0
  952. data/test/cxx/MessageReadersWritersTest.cpp +574 -0
  953. data/test/cxx/MessageServerTest.cpp +383 -0
  954. data/test/{PoolOptionsTest.cpp → cxx/PoolOptionsTest.cpp} +2 -3
  955. data/test/{ScgiRequestParserTest.cpp → cxx/ScgiRequestParserTest.cpp} +53 -1
  956. data/test/cxx/ServerInstanceDirTest.cpp +186 -0
  957. data/test/cxx/SpawnManagerTest.cpp +161 -0
  958. data/test/cxx/StaticStringTest.cpp +86 -0
  959. data/test/{SystemTimeTest.cpp → cxx/SystemTimeTest.cpp} +2 -2
  960. data/test/cxx/TestSupport.cpp +166 -0
  961. data/test/cxx/TestSupport.h +254 -0
  962. data/test/cxx/UtilsTest.cpp +521 -0
  963. data/test/cxx/VariantMapTest.cpp +179 -0
  964. data/test/integration_tests/apache2_tests.rb +198 -127
  965. data/test/integration_tests/cgi_environment_spec.rb +26 -0
  966. data/test/integration_tests/mycook_spec.rb +2 -28
  967. data/test/integration_tests/nginx_tests.rb +125 -16
  968. data/test/integration_tests/spec_helper.rb +19 -0
  969. data/test/oxt/backtrace_test.cpp +19 -59
  970. data/test/oxt/counter.hpp +55 -0
  971. data/test/oxt/dynamic_thread_group_test.cpp +131 -0
  972. data/test/oxt/oxt_test_main.cpp +2 -2
  973. data/test/oxt/spin_lock_test.cpp +59 -0
  974. data/test/oxt/syscall_interruption_test.cpp +1 -1
  975. data/test/ruby/abstract_request_handler_spec.rb +346 -25
  976. data/test/ruby/abstract_server_collection_spec.rb +4 -3
  977. data/test/ruby/abstract_server_spec.rb +37 -27
  978. data/test/ruby/admin_tools_spec.rb +362 -0
  979. data/test/ruby/analytics_logger_spec.rb +253 -0
  980. data/test/ruby/{application_spec.rb → app_process_spec.rb} +14 -14
  981. data/test/ruby/classic_rails/application_spawner_spec.rb +89 -0
  982. data/test/ruby/classic_rails/framework_spawner_spec.rb +92 -0
  983. data/test/ruby/debug_logging_spec.rb +141 -0
  984. data/test/ruby/message_channel_spec.rb +51 -25
  985. data/test/ruby/rack/application_spawner_spec.rb +99 -82
  986. data/test/ruby/shared/abstract_server_spec.rb +23 -0
  987. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +375 -0
  988. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +38 -0
  989. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +19 -0
  990. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +15 -0
  991. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +27 -0
  992. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +29 -0
  993. data/test/ruby/shared/spawners/reload_all_spec.rb +36 -0
  994. data/test/ruby/shared/spawners/reload_single_spec.rb +52 -0
  995. data/test/ruby/shared/spawners/spawn_server_spec.rb +28 -0
  996. data/test/ruby/shared/spawners/spawner_spec.rb +273 -0
  997. data/test/ruby/shared/utils/pseudo_io_spec.rb +60 -0
  998. data/test/ruby/spawn_manager_spec.rb +104 -175
  999. data/test/ruby/spec_helper.rb +104 -0
  1000. data/test/ruby/utils/file_system_watcher_spec.rb +221 -0
  1001. data/test/ruby/utils/hosts_file_parser.rb +258 -0
  1002. data/test/ruby/utils/unseekable_socket_spec.rb +66 -0
  1003. data/test/ruby/utils_spec.rb +410 -59
  1004. data/test/ruby/wsgi/application_spawner_spec.rb +16 -20
  1005. data/test/stub/apache2/httpd.conf.erb +11 -6
  1006. data/test/stub/message_channel.rb +3 -1
  1007. data/test/stub/message_channel_2.rb +3 -1
  1008. data/test/stub/message_channel_3.rb +5 -3
  1009. data/test/stub/nginx/nginx.conf.erb +3 -2
  1010. data/test/stub/rails_apps/1.2/empty/Rakefile +10 -0
  1011. data/test/stub/rails_apps/1.2/empty/app/controllers/application.rb +7 -0
  1012. data/test/stub/rails_apps/{foobar → 1.2/empty}/app/helpers/application_helper.rb +0 -0
  1013. data/test/stub/rails_apps/{mycook → 1.2/empty}/config/boot.rb +3 -3
  1014. data/test/stub/rails_apps/1.2/empty/config/database.yml +31 -0
  1015. data/test/stub/rails_apps/1.2/empty/config/environment.rb +66 -0
  1016. data/test/stub/rails_apps/1.2/empty/config/environments/development.rb +21 -0
  1017. data/test/stub/rails_apps/{foobar → 1.2/empty}/config/environments/production.rb +0 -0
  1018. data/test/stub/rails_apps/1.2/empty/config/environments/staging.rb +18 -0
  1019. data/test/stub/rails_apps/1.2/empty/config/environments/test.rb +19 -0
  1020. data/test/stub/rails_apps/1.2/empty/config/routes.rb +23 -0
  1021. data/test/stub/rails_apps/1.2/empty/doc/README_FOR_APP +2 -0
  1022. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/404.html +0 -0
  1023. data/test/stub/rails_apps/1.2/empty/public/500.html +30 -0
  1024. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +10 -0
  1025. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +24 -0
  1026. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +10 -0
  1027. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/favicon.ico +0 -0
  1028. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/images/rails.png +0 -0
  1029. data/test/stub/rails_apps/1.2/empty/public/robots.txt +1 -0
  1030. data/test/stub/rails_apps/1.2/empty/script/about +3 -0
  1031. data/test/stub/rails_apps/1.2/empty/script/breakpointer +3 -0
  1032. data/test/stub/rails_apps/1.2/empty/script/console +3 -0
  1033. data/test/stub/rails_apps/1.2/empty/script/destroy +3 -0
  1034. data/test/stub/rails_apps/1.2/empty/script/generate +3 -0
  1035. data/test/stub/rails_apps/1.2/empty/script/performance/benchmarker +3 -0
  1036. data/test/stub/rails_apps/1.2/empty/script/performance/profiler +3 -0
  1037. data/test/stub/rails_apps/1.2/empty/script/plugin +3 -0
  1038. data/test/stub/rails_apps/1.2/empty/script/process/inspector +3 -0
  1039. data/test/stub/rails_apps/1.2/empty/script/process/reaper +3 -0
  1040. data/test/stub/rails_apps/1.2/empty/script/process/spawner +3 -0
  1041. data/test/stub/rails_apps/1.2/empty/script/runner +3 -0
  1042. data/test/stub/rails_apps/1.2/empty/script/server +3 -0
  1043. data/test/stub/rails_apps/1.2/empty/test/test_helper.rb +28 -0
  1044. data/test/stub/rails_apps/2.0/empty/Rakefile +10 -0
  1045. data/test/stub/rails_apps/2.0/empty/app/controllers/application.rb +10 -0
  1046. data/test/stub/rails_apps/{mycook → 2.0/empty}/app/helpers/application_helper.rb +0 -0
  1047. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/boot.rb +3 -3
  1048. data/test/stub/rails_apps/2.0/empty/config/database.yml +31 -0
  1049. data/test/stub/rails_apps/2.0/empty/config/environment.rb +59 -0
  1050. data/test/stub/rails_apps/{mycook → 2.0/empty}/config/environments/development.rb +1 -1
  1051. data/test/stub/rails_apps/2.0/empty/config/environments/production.rb +18 -0
  1052. data/test/stub/rails_apps/2.0/empty/config/environments/staging.rb +18 -0
  1053. data/test/stub/rails_apps/2.0/empty/config/environments/test.rb +22 -0
  1054. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/initializers/inflections.rb +0 -0
  1055. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/initializers/mime_types.rb +0 -0
  1056. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/routes.rb +0 -0
  1057. data/test/stub/rails_apps/2.0/empty/doc/README_FOR_APP +2 -0
  1058. data/test/stub/rails_apps/2.0/empty/public/404.html +30 -0
  1059. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/422.html +0 -0
  1060. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/500.html +0 -0
  1061. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +10 -0
  1062. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +24 -0
  1063. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +10 -0
  1064. data/test/stub/rails_apps/2.0/empty/public/favicon.ico +0 -0
  1065. data/test/stub/rails_apps/2.0/empty/public/images/rails.png +0 -0
  1066. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/robots.txt +0 -0
  1067. data/test/stub/rails_apps/2.0/empty/script/about +3 -0
  1068. data/test/stub/rails_apps/2.0/empty/script/console +3 -0
  1069. data/test/stub/rails_apps/2.0/empty/script/destroy +3 -0
  1070. data/test/stub/rails_apps/2.0/empty/script/generate +3 -0
  1071. data/test/stub/rails_apps/2.0/empty/script/performance/benchmarker +3 -0
  1072. data/test/stub/rails_apps/2.0/empty/script/performance/profiler +3 -0
  1073. data/test/stub/rails_apps/2.0/empty/script/performance/request +3 -0
  1074. data/test/stub/rails_apps/2.0/empty/script/plugin +3 -0
  1075. data/test/stub/rails_apps/2.0/empty/script/process/inspector +3 -0
  1076. data/test/stub/rails_apps/2.0/empty/script/process/reaper +3 -0
  1077. data/test/stub/rails_apps/2.0/empty/script/process/spawner +3 -0
  1078. data/test/stub/rails_apps/2.0/empty/script/runner +3 -0
  1079. data/test/stub/rails_apps/2.0/empty/script/server +3 -0
  1080. data/test/stub/rails_apps/2.0/empty/test/test_helper.rb +38 -0
  1081. data/test/stub/rails_apps/2.2/empty/Rakefile +10 -0
  1082. data/test/stub/rails_apps/2.2/empty/app/controllers/application.rb +15 -0
  1083. data/test/stub/rails_apps/2.2/empty/app/helpers/application_helper.rb +3 -0
  1084. data/test/stub/rails_apps/2.2/empty/config/boot.rb +109 -0
  1085. data/test/stub/rails_apps/2.2/empty/config/database.yml +31 -0
  1086. data/test/stub/rails_apps/2.2/empty/config/environment.rb +75 -0
  1087. data/test/stub/rails_apps/{foobar → 2.2/empty}/config/environments/development.rb +0 -0
  1088. data/test/stub/rails_apps/2.2/empty/config/environments/production.rb +24 -0
  1089. data/test/stub/rails_apps/2.2/empty/config/environments/staging.rb +24 -0
  1090. data/test/stub/rails_apps/2.2/empty/config/environments/test.rb +22 -0
  1091. data/test/stub/rails_apps/2.2/empty/config/initializers/inflections.rb +10 -0
  1092. data/test/stub/rails_apps/{mycook → 2.2/empty}/config/initializers/mime_types.rb +0 -0
  1093. data/test/stub/rails_apps/2.2/empty/config/initializers/new_rails_defaults.rb +17 -0
  1094. data/test/stub/rails_apps/2.2/empty/config/locales/en.yml +5 -0
  1095. data/test/stub/rails_apps/2.2/empty/config/routes.rb +43 -0
  1096. data/test/stub/rails_apps/2.2/empty/doc/README_FOR_APP +5 -0
  1097. data/test/stub/rails_apps/2.2/empty/public/404.html +30 -0
  1098. data/test/stub/rails_apps/2.2/empty/public/422.html +30 -0
  1099. data/test/stub/rails_apps/2.2/empty/public/500.html +33 -0
  1100. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +10 -0
  1101. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +24 -0
  1102. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +10 -0
  1103. data/test/stub/rails_apps/2.2/empty/public/favicon.ico +0 -0
  1104. data/test/stub/rails_apps/2.2/empty/public/images/rails.png +0 -0
  1105. data/test/stub/rails_apps/2.2/empty/public/robots.txt +5 -0
  1106. data/test/stub/rails_apps/2.2/empty/script/about +4 -0
  1107. data/test/stub/rails_apps/2.2/empty/script/console +3 -0
  1108. data/test/stub/rails_apps/2.2/empty/script/dbconsole +3 -0
  1109. data/test/stub/rails_apps/2.2/empty/script/destroy +3 -0
  1110. data/test/stub/rails_apps/2.2/empty/script/generate +3 -0
  1111. data/test/stub/rails_apps/2.2/empty/script/performance/benchmarker +3 -0
  1112. data/test/stub/rails_apps/2.2/empty/script/performance/profiler +3 -0
  1113. data/test/stub/rails_apps/2.2/empty/script/performance/request +3 -0
  1114. data/test/stub/rails_apps/2.2/empty/script/plugin +3 -0
  1115. data/test/stub/rails_apps/2.2/empty/script/process/inspector +3 -0
  1116. data/test/stub/rails_apps/2.2/empty/script/process/reaper +3 -0
  1117. data/test/stub/rails_apps/2.2/empty/script/process/spawner +3 -0
  1118. data/test/stub/rails_apps/2.2/empty/script/runner +3 -0
  1119. data/test/stub/rails_apps/2.2/empty/script/server +3 -0
  1120. data/test/stub/rails_apps/2.2/empty/test/performance/browsing_test.rb +9 -0
  1121. data/test/stub/rails_apps/2.2/empty/test/test_helper.rb +38 -0
  1122. data/test/stub/rails_apps/2.3/empty/Rakefile +10 -0
  1123. data/test/stub/rails_apps/2.3/empty/app/controllers/application_controller.rb +10 -0
  1124. data/test/stub/rails_apps/2.3/empty/app/helpers/application_helper.rb +3 -0
  1125. data/test/stub/rails_apps/2.3/empty/config/boot.rb +110 -0
  1126. data/test/stub/rails_apps/2.3/empty/config/database.yml +31 -0
  1127. data/test/stub/rails_apps/2.3/empty/config/environment.rb +41 -0
  1128. data/test/stub/rails_apps/2.3/empty/config/environments/development.rb +17 -0
  1129. data/test/stub/rails_apps/2.3/empty/config/environments/production.rb +28 -0
  1130. data/test/stub/rails_apps/2.3/empty/config/environments/staging.rb +28 -0
  1131. data/test/stub/rails_apps/2.3/empty/config/environments/test.rb +28 -0
  1132. data/test/stub/rails_apps/2.3/empty/config/initializers/backtrace_silencers.rb +7 -0
  1133. data/test/stub/rails_apps/2.3/empty/config/initializers/inflections.rb +10 -0
  1134. data/test/stub/rails_apps/2.3/empty/config/initializers/mime_types.rb +5 -0
  1135. data/test/stub/rails_apps/2.3/empty/config/initializers/new_rails_defaults.rb +21 -0
  1136. data/test/stub/rails_apps/2.3/empty/config/initializers/session_store.rb +15 -0
  1137. data/test/stub/rails_apps/2.3/empty/config/locales/en.yml +5 -0
  1138. data/test/stub/rails_apps/2.3/empty/config/routes.rb +43 -0
  1139. data/test/stub/rails_apps/2.3/empty/db/seeds.rb +7 -0
  1140. data/test/stub/rails_apps/2.3/empty/doc/README_FOR_APP +2 -0
  1141. data/test/stub/rails_apps/2.3/empty/public/404.html +30 -0
  1142. data/test/stub/rails_apps/2.3/empty/public/422.html +30 -0
  1143. data/test/stub/rails_apps/2.3/empty/public/500.html +30 -0
  1144. data/test/stub/rails_apps/2.3/empty/public/favicon.ico +0 -0
  1145. data/test/stub/rails_apps/2.3/empty/public/images/rails.png +0 -0
  1146. data/test/stub/rails_apps/2.3/empty/public/robots.txt +5 -0
  1147. data/test/stub/rails_apps/2.3/empty/script/about +4 -0
  1148. data/test/stub/rails_apps/2.3/empty/script/console +3 -0
  1149. data/test/stub/rails_apps/2.3/empty/script/dbconsole +3 -0
  1150. data/test/stub/rails_apps/2.3/empty/script/destroy +3 -0
  1151. data/test/stub/rails_apps/2.3/empty/script/generate +3 -0
  1152. data/test/stub/rails_apps/2.3/empty/script/performance/benchmarker +3 -0
  1153. data/test/stub/rails_apps/2.3/empty/script/performance/profiler +3 -0
  1154. data/test/stub/rails_apps/2.3/empty/script/plugin +3 -0
  1155. data/test/stub/rails_apps/2.3/empty/script/runner +3 -0
  1156. data/test/stub/rails_apps/2.3/empty/script/server +3 -0
  1157. data/test/stub/rails_apps/2.3/empty/test/performance/browsing_test.rb +9 -0
  1158. data/test/stub/rails_apps/2.3/empty/test/test_helper.rb +38 -0
  1159. data/test/stub/rails_apps/2.3/foobar/Rakefile +10 -0
  1160. data/test/stub/rails_apps/{foobar/app/controllers/application.rb → 2.3/foobar/app/controllers/application_controller.rb} +0 -0
  1161. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/bar_controller_1.rb +0 -0
  1162. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/bar_controller_2.rb +0 -0
  1163. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/foo_controller.rb +0 -0
  1164. data/test/stub/rails_apps/2.3/foobar/app/helpers/application_helper.rb +3 -0
  1165. data/test/stub/rails_apps/2.3/foobar/config/boot.rb +110 -0
  1166. data/test/stub/rails_apps/{foobar → 2.3/foobar}/config/database.yml +0 -0
  1167. data/test/stub/rails_apps/{foobar → 2.3/foobar}/config/environment.rb +1 -1
  1168. data/test/stub/rails_apps/2.3/foobar/config/environments/development.rb +17 -0
  1169. data/test/stub/rails_apps/2.3/foobar/config/environments/production.rb +18 -0
  1170. data/test/stub/rails_apps/2.3/foobar/config/environments/staging.rb +18 -0
  1171. data/test/stub/rails_apps/{mycook → 2.3/foobar}/config/initializers/inflections.rb +0 -0
  1172. data/test/stub/rails_apps/2.3/foobar/config/initializers/mime_types.rb +5 -0
  1173. data/test/stub/rails_apps/2.3/foobar/config/routes.rb +35 -0
  1174. data/test/stub/rails_apps/2.3/foobar/script/about +3 -0
  1175. data/test/stub/rails_apps/2.3/foobar/script/console +3 -0
  1176. data/test/stub/rails_apps/2.3/foobar/script/dbconsole +3 -0
  1177. data/test/stub/rails_apps/2.3/foobar/script/destroy +3 -0
  1178. data/test/stub/rails_apps/2.3/foobar/script/generate +3 -0
  1179. data/test/stub/rails_apps/2.3/foobar/script/performance/benchmarker +3 -0
  1180. data/test/stub/rails_apps/2.3/foobar/script/performance/profiler +3 -0
  1181. data/test/stub/rails_apps/2.3/foobar/script/performance/request +3 -0
  1182. data/test/stub/rails_apps/2.3/foobar/script/plugin +3 -0
  1183. data/test/stub/rails_apps/2.3/foobar/script/process/inspector +3 -0
  1184. data/test/stub/rails_apps/2.3/foobar/script/process/reaper +3 -0
  1185. data/test/stub/rails_apps/2.3/foobar/script/process/spawner +3 -0
  1186. data/test/stub/rails_apps/2.3/foobar/script/runner +3 -0
  1187. data/test/stub/rails_apps/2.3/foobar/script/server +3 -0
  1188. data/test/stub/rails_apps/2.3/mycook/Rakefile +10 -0
  1189. data/test/stub/rails_apps/{mycook/app/controllers/application.rb → 2.3/mycook/app/controllers/application_controller.rb} +0 -0
  1190. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/recipes_controller.rb +0 -0
  1191. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/uploads_controller.rb +0 -0
  1192. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/welcome_controller.rb +0 -0
  1193. data/test/stub/rails_apps/2.3/mycook/app/helpers/application_helper.rb +3 -0
  1194. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/layouts/default.rhtml +0 -0
  1195. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/create.rhtml +0 -0
  1196. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/index.rhtml +0 -0
  1197. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/new.rhtml +0 -0
  1198. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/uploads/index.rhtml +0 -0
  1199. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/uploads/new.html.erb +0 -0
  1200. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/welcome/cached.rhtml +0 -0
  1201. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/welcome/index.rhtml +0 -0
  1202. data/test/stub/rails_apps/2.3/mycook/config/boot.rb +110 -0
  1203. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/database.yml +0 -0
  1204. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/environment.rb +1 -1
  1205. data/test/stub/rails_apps/2.3/mycook/config/environments/development.rb +18 -0
  1206. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/environments/production.rb +0 -0
  1207. data/test/stub/rails_apps/2.3/mycook/config/initializers/inflections.rb +10 -0
  1208. data/test/stub/rails_apps/2.3/mycook/config/initializers/mime_types.rb +5 -0
  1209. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/routes.rb +0 -0
  1210. data/test/stub/rails_apps/{mycook → 2.3/mycook}/log/useless.txt +0 -0
  1211. data/test/stub/rails_apps/2.3/mycook/public/404.html +30 -0
  1212. data/test/stub/rails_apps/2.3/mycook/public/422.html +30 -0
  1213. data/test/stub/rails_apps/2.3/mycook/public/500.html +30 -0
  1214. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.cgi +0 -0
  1215. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.fcgi +0 -0
  1216. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.rb +1 -1
  1217. data/test/stub/rails_apps/2.3/mycook/public/favicon.ico +0 -0
  1218. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/angrywizard.gif +0 -0
  1219. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/cookbook.gif +0 -0
  1220. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/header.png +0 -0
  1221. data/test/stub/rails_apps/2.3/mycook/public/images/rails.png +0 -0
  1222. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/application.js +0 -0
  1223. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/controls.js +73 -73
  1224. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/dragdrop.js +166 -165
  1225. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/effects.js +174 -166
  1226. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/prototype.js +362 -267
  1227. data/test/stub/rails_apps/2.3/mycook/public/robots.txt +5 -0
  1228. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/uploads.html +0 -0
  1229. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/welcome/cached.html +0 -0
  1230. data/test/stub/rails_apps/2.3/mycook/script/about +3 -0
  1231. data/test/stub/rails_apps/2.3/mycook/script/console +3 -0
  1232. data/test/stub/rails_apps/2.3/mycook/script/dbconsole +3 -0
  1233. data/test/stub/rails_apps/2.3/mycook/script/destroy +3 -0
  1234. data/test/stub/rails_apps/2.3/mycook/script/generate +3 -0
  1235. data/test/stub/rails_apps/2.3/mycook/script/performance/benchmarker +3 -0
  1236. data/test/stub/rails_apps/2.3/mycook/script/performance/profiler +3 -0
  1237. data/test/stub/rails_apps/2.3/mycook/script/performance/request +3 -0
  1238. data/test/stub/rails_apps/2.3/mycook/script/plugin +3 -0
  1239. data/test/stub/rails_apps/2.3/mycook/script/process/inspector +3 -0
  1240. data/test/stub/rails_apps/2.3/mycook/script/process/reaper +3 -0
  1241. data/test/stub/rails_apps/2.3/mycook/script/process/spawner +3 -0
  1242. data/test/stub/rails_apps/2.3/mycook/script/runner +3 -0
  1243. data/test/stub/rails_apps/2.3/mycook/script/server +3 -0
  1244. data/test/stub/rails_apps/{mycook → 2.3/mycook}/sites/some.site/public/uploads.html +0 -0
  1245. data/test/stub/rails_apps/{mycook → 2.3/mycook}/sites/some.site/public/welcome/cached.html +0 -0
  1246. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/cache/useless.txt +0 -0
  1247. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/pids/useless.txt +0 -0
  1248. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/sessions/useless.txt +0 -0
  1249. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/sockets/useless.txt +0 -0
  1250. data/test/stub/rails_apps/3.0/empty/Gemfile +22 -0
  1251. data/test/stub/rails_apps/3.0/empty/Rakefile +10 -0
  1252. data/test/stub/rails_apps/3.0/empty/app/controllers/application_controller.rb +4 -0
  1253. data/test/stub/rails_apps/3.0/empty/app/helpers/application_helper.rb +2 -0
  1254. data/test/stub/rails_apps/3.0/empty/app/views/layouts/application.html.erb +14 -0
  1255. data/test/stub/rails_apps/3.0/empty/config.ru +4 -0
  1256. data/test/stub/rails_apps/3.0/empty/config/application.rb +48 -0
  1257. data/test/stub/rails_apps/3.0/empty/config/boot.rb +13 -0
  1258. data/test/stub/rails_apps/3.0/empty/config/database.yml +22 -0
  1259. data/test/stub/rails_apps/3.0/empty/config/environment.rb +5 -0
  1260. data/test/stub/rails_apps/3.0/empty/config/environments/development.rb +19 -0
  1261. data/test/stub/rails_apps/3.0/empty/config/environments/production.rb +48 -0
  1262. data/test/stub/rails_apps/3.0/empty/config/environments/test.rb +32 -0
  1263. data/test/stub/rails_apps/3.0/empty/config/initializers/backtrace_silencers.rb +7 -0
  1264. data/test/stub/rails_apps/3.0/empty/config/initializers/inflections.rb +10 -0
  1265. data/test/stub/rails_apps/3.0/empty/config/initializers/mime_types.rb +5 -0
  1266. data/test/stub/rails_apps/3.0/empty/config/initializers/passenger.rb +1 -0
  1267. data/test/stub/rails_apps/3.0/empty/config/initializers/secret_token.rb +7 -0
  1268. data/test/stub/rails_apps/3.0/empty/config/initializers/session_store.rb +8 -0
  1269. data/test/stub/rails_apps/3.0/empty/config/locales/en.yml +5 -0
  1270. data/test/stub/rails_apps/3.0/empty/config/routes.rb +58 -0
  1271. data/test/stub/rails_apps/3.0/empty/db/seeds.rb +7 -0
  1272. data/test/stub/rails_apps/3.0/empty/doc/README_FOR_APP +2 -0
  1273. data/test/stub/rails_apps/3.0/empty/log/development.log +3 -0
  1274. data/test/stub/rails_apps/3.0/empty/public/404.html +26 -0
  1275. data/test/stub/rails_apps/3.0/empty/public/422.html +26 -0
  1276. data/test/stub/rails_apps/3.0/empty/public/500.html +26 -0
  1277. data/test/stub/rails_apps/3.0/empty/public/favicon.ico +0 -0
  1278. data/test/stub/rails_apps/3.0/empty/public/index.html +279 -0
  1279. data/test/stub/rails_apps/3.0/empty/public/robots.txt +5 -0
  1280. data/test/stub/rails_apps/3.0/empty/script/rails +9 -0
  1281. data/test/stub/rails_apps/3.0/empty/test/performance/browsing_test.rb +9 -0
  1282. data/test/stub/rails_apps/3.0/empty/test/test_helper.rb +13 -0
  1283. data/test/stub/spawn_server.rb +4 -2
  1284. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +3 -0
  1285. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +7 -2
  1286. data/test/support/apache2_controller.rb +10 -2
  1287. data/test/support/nginx_controller.rb +3 -2
  1288. data/test/support/test_helper.rb +282 -46
  1289. data/test/{support → tut}/tut.h +6 -0
  1290. data/test/{support → tut}/tut_reporter.h +0 -0
  1291. metadata +824 -266
  1292. data/benchmark/ApplicationPool.cpp +0 -52
  1293. data/benchmark/accept_vs_socketpair_vs_named_pipes.rb +0 -126
  1294. data/benchmark/dispatcher.rb +0 -42
  1295. data/benchmark/overhead_of_password_checking.rb +0 -81
  1296. data/benchmark/socket_connections_vs_persistent_pipe.rb +0 -99
  1297. data/benchmark/unix_sockets_vs_pipes.rb +0 -83
  1298. data/ext/boost/LICENSE.TXT +0 -23
  1299. data/ext/boost/VERSION.TXT +0 -1
  1300. data/ext/boost/detail/sp_counted_base.hpp +0 -81
  1301. data/ext/boost/src/pthread/exceptions.cpp +0 -146
  1302. data/ext/boost/src/win32/exceptions.cpp +0 -124
  1303. data/ext/boost/src/win32/thread.cpp +0 -629
  1304. data/ext/boost/src/win32/timeconv.inl +0 -130
  1305. data/ext/boost/src/win32/tss_dll.cpp +0 -72
  1306. data/ext/boost/src/win32/tss_pe.cpp +0 -269
  1307. data/ext/boost/thread/pthread/thread.hpp +0 -339
  1308. data/ext/boost/thread/pthread/tss.hpp +0 -103
  1309. data/ext/common/Application.h +0 -511
  1310. data/ext/common/ApplicationPoolServer.h +0 -794
  1311. data/ext/common/ApplicationPoolServerExecutable.cpp +0 -743
  1312. data/ext/common/ApplicationPoolStatusReporter.h +0 -336
  1313. data/ext/common/DummySpawnManager.h +0 -108
  1314. data/ext/common/StandardApplicationPool.h +0 -821
  1315. data/ext/common/SystemTime.h +0 -88
  1316. data/lib/phusion_passenger/admin_tools/control_process.rb +0 -150
  1317. data/lib/phusion_passenger/railz/application_spawner.rb +0 -463
  1318. data/lib/phusion_passenger/templates/invalid_app_root.html.erb +0 -9
  1319. data/test/ApplicationPoolServerTest.cpp +0 -114
  1320. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +0 -33
  1321. data/test/ApplicationPoolTest.cpp +0 -599
  1322. data/test/MessageChannelTest.cpp +0 -320
  1323. data/test/SpawnManagerTest.cpp +0 -64
  1324. data/test/StandardApplicationPoolTest.cpp +0 -27
  1325. data/test/StaticStringTest.cpp +0 -51
  1326. data/test/UtilsTest.cpp +0 -257
  1327. data/test/ruby/rails/application_spawner_spec.rb +0 -159
  1328. data/test/ruby/rails/framework_spawner_spec.rb +0 -133
  1329. data/test/ruby/rails/minimal_spawner_spec.rb +0 -93
  1330. data/test/ruby/rails/spawner_error_handling_spec.rb +0 -107
  1331. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +0 -97
  1332. data/test/ruby/spawn_server_spec.rb +0 -26
  1333. data/test/stub/MessageServer.dSYM/Contents/Info.plist +0 -25
  1334. data/test/stub/MessageServer.dSYM/Contents/Resources/DWARF/MessageServer +0 -0
  1335. data/test/support/Support.cpp +0 -84
  1336. data/test/support/Support.h +0 -118
  1337. data/test/support/config.rb +0 -38
  1338. data/test/support/run_rspec_tests.rb +0 -10
@@ -10,1680 +10,15 @@
10
10
  //
11
11
  // bind.hpp - binds function objects to arguments
12
12
  //
13
- // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
14
- // Copyright (c) 2001 David Abrahams
15
- // Copyright (c) 2005 Peter Dimov
13
+ // Copyright (c) 2009 Peter Dimov
16
14
  //
17
- // Distributed under the Boost Software License, Version 1.0. (See
18
- // accompanying file LICENSE_1_0.txt or copy at
19
- // http://www.boost.org/LICENSE_1_0.txt)
15
+ // Distributed under the Boost Software License, Version 1.0.
16
+ // See accompanying file LICENSE_1_0.txt or copy at
17
+ // http://www.boost.org/LICENSE_1_0.txt
20
18
  //
21
19
  // See http://www.boost.org/libs/bind/bind.html for documentation.
22
20
  //
23
21
 
24
- #include <boost/config.hpp>
25
- #include <boost/ref.hpp>
26
- #include <boost/mem_fn.hpp>
27
- #include <boost/type.hpp>
28
- #include <boost/is_placeholder.hpp>
29
- #include <boost/bind/arg.hpp>
30
- #include <boost/detail/workaround.hpp>
31
- #include <boost/visit_each.hpp>
32
-
33
- // Borland-specific bug, visit_each() silently fails to produce code
34
-
35
- #if defined(__BORLANDC__)
36
- # define BOOST_BIND_VISIT_EACH boost::visit_each
37
- #else
38
- # define BOOST_BIND_VISIT_EACH visit_each
39
- #endif
40
-
41
- #include <boost/bind/storage.hpp>
42
-
43
- #ifdef BOOST_MSVC
44
- # pragma warning(push)
45
- # pragma warning(disable: 4512) // assignment operator could not be generated
46
- #endif
47
-
48
- namespace boost
49
- {
50
-
51
- namespace _bi // implementation details
52
- {
53
-
54
- // result_traits
55
-
56
- template<class R, class F> struct result_traits
57
- {
58
- typedef R type;
59
- };
60
-
61
- #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
62
-
63
- struct unspecified {};
64
-
65
- template<class F> struct result_traits<unspecified, F>
66
- {
67
- typedef typename F::result_type type;
68
- };
69
-
70
- template<class F> struct result_traits< unspecified, reference_wrapper<F> >
71
- {
72
- typedef typename F::result_type type;
73
- };
74
-
75
- #endif
76
-
77
- // ref_compare
78
-
79
- template<class T> bool ref_compare( T const & a, T const & b, long )
80
- {
81
- return a == b;
82
- }
83
-
84
- template<int I> bool ref_compare( arg<I> const &, arg<I> const &, int )
85
- {
86
- return true;
87
- }
88
-
89
- template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) (), int )
90
- {
91
- return true;
92
- }
93
-
94
- template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b, int )
95
- {
96
- return a.get_pointer() == b.get_pointer();
97
- }
98
-
99
- // bind_t forward declaration for listN
100
-
101
- template<class R, class F, class L> class bind_t;
102
-
103
- // value
104
-
105
- template<class T> class value
106
- {
107
- public:
108
-
109
- value(T const & t): t_(t) {}
110
-
111
- T & get() { return t_; }
112
- T const & get() const { return t_; }
113
-
114
- bool operator==(value const & rhs) const
115
- {
116
- return t_ == rhs.t_;
117
- }
118
-
119
- private:
120
-
121
- T t_;
122
- };
123
-
124
- // type
125
-
126
- template<class T> class type {};
127
-
128
- // unwrap
129
-
130
- template<class F> struct unwrapper
131
- {
132
- static inline F & unwrap( F & f, long )
133
- {
134
- return f;
135
- }
136
-
137
- template<class F2> static inline F2 & unwrap( reference_wrapper<F2> rf, int )
138
- {
139
- return rf.get();
140
- }
141
-
142
- template<class R, class T> static inline _mfi::dm<R, T> unwrap( R T::* pm, int )
143
- {
144
- return _mfi::dm<R, T>( pm );
145
- }
146
- };
147
-
148
- // listN
149
-
150
- class list0
151
- {
152
- public:
153
-
154
- list0() {}
155
-
156
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
157
-
158
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
159
-
160
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
161
-
162
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
163
-
164
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
165
-
166
- template<class R, class F, class A> R operator()(type<R>, F & f, A &, long)
167
- {
168
- return unwrapper<F>::unwrap(f, 0)();
169
- }
170
-
171
- template<class R, class F, class A> R operator()(type<R>, F const & f, A &, long) const
172
- {
173
- return unwrapper<F const>::unwrap(f, 0)();
174
- }
175
-
176
- template<class F, class A> void operator()(type<void>, F & f, A &, int)
177
- {
178
- unwrapper<F>::unwrap(f, 0)();
179
- }
180
-
181
- template<class F, class A> void operator()(type<void>, F const & f, A &, int) const
182
- {
183
- unwrapper<F const>::unwrap(f, 0)();
184
- }
185
-
186
- template<class V> void accept(V &) const
187
- {
188
- }
189
-
190
- bool operator==(list0 const &) const
191
- {
192
- return true;
193
- }
194
- };
195
-
196
- template< class A1 > class list1: private storage1< A1 >
197
- {
198
- private:
199
-
200
- typedef storage1< A1 > base_type;
201
-
202
- public:
203
-
204
- explicit list1( A1 a1 ): base_type( a1 ) {}
205
-
206
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
207
-
208
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
209
-
210
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
211
-
212
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
213
-
214
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
215
-
216
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
217
-
218
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
219
-
220
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
221
- {
222
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
223
- }
224
-
225
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
226
- {
227
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]);
228
- }
229
-
230
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
231
- {
232
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
233
- }
234
-
235
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
236
- {
237
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]);
238
- }
239
-
240
- template<class V> void accept(V & v) const
241
- {
242
- base_type::accept(v);
243
- }
244
-
245
- bool operator==(list1 const & rhs) const
246
- {
247
- return ref_compare(base_type::a1_, rhs.a1_, 0);
248
- }
249
- };
250
-
251
- template< class A1, class A2 > class list2: private storage2< A1, A2 >
252
- {
253
- private:
254
-
255
- typedef storage2< A1, A2 > base_type;
256
-
257
- public:
258
-
259
- list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {}
260
-
261
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
262
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
263
-
264
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
265
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
266
-
267
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
268
-
269
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
270
-
271
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
272
-
273
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
274
-
275
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
276
-
277
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
278
- {
279
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
280
- }
281
-
282
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
283
- {
284
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
285
- }
286
-
287
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
288
- {
289
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
290
- }
291
-
292
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
293
- {
294
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
295
- }
296
-
297
- template<class V> void accept(V & v) const
298
- {
299
- base_type::accept(v);
300
- }
301
-
302
- bool operator==(list2 const & rhs) const
303
- {
304
- return ref_compare(base_type::a1_, rhs.a1_, 0) && ref_compare(base_type::a2_, rhs.a2_, 0);
305
- }
306
- };
307
-
308
- template< class A1, class A2, class A3 > class list3: private storage3< A1, A2, A3 >
309
- {
310
- private:
311
-
312
- typedef storage3< A1, A2, A3 > base_type;
313
-
314
- public:
315
-
316
- list3( A1 a1, A2 a2, A3 a3 ): base_type( a1, a2, a3 ) {}
317
-
318
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
319
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
320
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
321
-
322
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
323
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
324
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
325
-
326
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
327
-
328
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
329
-
330
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
331
-
332
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
333
-
334
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
335
-
336
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
337
- {
338
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
339
- }
340
-
341
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
342
- {
343
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
344
- }
345
-
346
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
347
- {
348
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
349
- }
350
-
351
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
352
- {
353
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
354
- }
355
-
356
- template<class V> void accept(V & v) const
357
- {
358
- base_type::accept(v);
359
- }
360
-
361
- bool operator==(list3 const & rhs) const
362
- {
363
- return
364
-
365
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
366
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
367
- ref_compare( base_type::a3_, rhs.a3_, 0 );
368
- }
369
- };
370
-
371
- template< class A1, class A2, class A3, class A4 > class list4: private storage4< A1, A2, A3, A4 >
372
- {
373
- private:
374
-
375
- typedef storage4< A1, A2, A3, A4 > base_type;
376
-
377
- public:
378
-
379
- list4( A1 a1, A2 a2, A3 a3, A4 a4 ): base_type( a1, a2, a3, a4 ) {}
380
-
381
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
382
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
383
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
384
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
385
-
386
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
387
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
388
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
389
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
390
-
391
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
392
-
393
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
394
-
395
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
396
-
397
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
398
-
399
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
400
-
401
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
402
- {
403
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
404
- }
405
-
406
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
407
- {
408
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
409
- }
410
-
411
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
412
- {
413
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
414
- }
415
-
416
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
417
- {
418
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
419
- }
420
-
421
- template<class V> void accept(V & v) const
422
- {
423
- base_type::accept(v);
424
- }
425
-
426
- bool operator==(list4 const & rhs) const
427
- {
428
- return
429
-
430
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
431
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
432
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
433
- ref_compare( base_type::a4_, rhs.a4_, 0 );
434
- }
435
- };
436
-
437
- template< class A1, class A2, class A3, class A4, class A5 > class list5: private storage5< A1, A2, A3, A4, A5 >
438
- {
439
- private:
440
-
441
- typedef storage5< A1, A2, A3, A4, A5 > base_type;
442
-
443
- public:
444
-
445
- list5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): base_type( a1, a2, a3, a4, a5 ) {}
446
-
447
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
448
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
449
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
450
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
451
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
452
-
453
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
454
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
455
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
456
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
457
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
458
-
459
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
460
-
461
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
462
-
463
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
464
-
465
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
466
-
467
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
468
-
469
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
470
- {
471
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
472
- }
473
-
474
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
475
- {
476
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
477
- }
478
-
479
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
480
- {
481
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
482
- }
483
-
484
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
485
- {
486
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
487
- }
488
-
489
- template<class V> void accept(V & v) const
490
- {
491
- base_type::accept(v);
492
- }
493
-
494
- bool operator==(list5 const & rhs) const
495
- {
496
- return
497
-
498
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
499
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
500
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
501
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
502
- ref_compare( base_type::a5_, rhs.a5_, 0 );
503
- }
504
- };
505
-
506
- template<class A1, class A2, class A3, class A4, class A5, class A6> class list6: private storage6< A1, A2, A3, A4, A5, A6 >
507
- {
508
- private:
509
-
510
- typedef storage6< A1, A2, A3, A4, A5, A6 > base_type;
511
-
512
- public:
513
-
514
- list6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): base_type( a1, a2, a3, a4, a5, a6 ) {}
515
-
516
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
517
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
518
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
519
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
520
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
521
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
522
-
523
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
524
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
525
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
526
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
527
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
528
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
529
-
530
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
531
-
532
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
533
-
534
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
535
-
536
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
537
-
538
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
539
-
540
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
541
- {
542
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
543
- }
544
-
545
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
546
- {
547
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
548
- }
549
-
550
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
551
- {
552
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
553
- }
554
-
555
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
556
- {
557
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
558
- }
559
-
560
- template<class V> void accept(V & v) const
561
- {
562
- base_type::accept(v);
563
- }
564
-
565
- bool operator==(list6 const & rhs) const
566
- {
567
- return
568
-
569
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
570
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
571
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
572
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
573
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
574
- ref_compare( base_type::a6_, rhs.a6_, 0 );
575
- }
576
- };
577
-
578
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> class list7: private storage7< A1, A2, A3, A4, A5, A6, A7 >
579
- {
580
- private:
581
-
582
- typedef storage7< A1, A2, A3, A4, A5, A6, A7 > base_type;
583
-
584
- public:
585
-
586
- list7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): base_type( a1, a2, a3, a4, a5, a6, a7 ) {}
587
-
588
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
589
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
590
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
591
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
592
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
593
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
594
- A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
595
-
596
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
597
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
598
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
599
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
600
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
601
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
602
- A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
603
-
604
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
605
-
606
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
607
-
608
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
609
-
610
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
611
-
612
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
613
-
614
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
615
- {
616
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
617
- }
618
-
619
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
620
- {
621
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
622
- }
623
-
624
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
625
- {
626
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
627
- }
628
-
629
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
630
- {
631
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
632
- }
633
-
634
- template<class V> void accept(V & v) const
635
- {
636
- base_type::accept(v);
637
- }
638
-
639
- bool operator==(list7 const & rhs) const
640
- {
641
- return
642
-
643
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
644
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
645
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
646
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
647
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
648
- ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
649
- ref_compare( base_type::a7_, rhs.a7_, 0 );
650
- }
651
- };
652
-
653
- template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class list8: private storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
654
- {
655
- private:
656
-
657
- typedef storage8< A1, A2, A3, A4, A5, A6, A7, A8 > base_type;
658
-
659
- public:
660
-
661
- list8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
662
-
663
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
664
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
665
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
666
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
667
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
668
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
669
- A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
670
- A8 operator[] (boost::arg<8>) const { return base_type::a8_; }
671
-
672
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
673
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
674
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
675
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
676
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
677
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
678
- A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
679
- A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
680
-
681
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
682
-
683
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
684
-
685
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
686
-
687
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
688
-
689
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
690
-
691
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
692
- {
693
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
694
- }
695
-
696
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
697
- {
698
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
699
- }
700
-
701
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
702
- {
703
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
704
- }
705
-
706
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
707
- {
708
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
709
- }
710
-
711
- template<class V> void accept(V & v) const
712
- {
713
- base_type::accept(v);
714
- }
715
-
716
- bool operator==(list8 const & rhs) const
717
- {
718
- return
719
-
720
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
721
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
722
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
723
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
724
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
725
- ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
726
- ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
727
- ref_compare( base_type::a8_, rhs.a8_, 0 );
728
- }
729
- };
730
-
731
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class list9: private storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 >
732
- {
733
- private:
734
-
735
- typedef storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > base_type;
736
-
737
- public:
738
-
739
- list9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) {}
740
-
741
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
742
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
743
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
744
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
745
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
746
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
747
- A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
748
- A8 operator[] (boost::arg<8>) const { return base_type::a8_; }
749
- A9 operator[] (boost::arg<9>) const { return base_type::a9_; }
750
-
751
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
752
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
753
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
754
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
755
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
756
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
757
- A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
758
- A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
759
- A9 operator[] (boost::arg<9> (*) ()) const { return base_type::a9_; }
760
-
761
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
762
-
763
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
764
-
765
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
766
-
767
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
768
-
769
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
770
-
771
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
772
- {
773
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
774
- }
775
-
776
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
777
- {
778
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
779
- }
780
-
781
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
782
- {
783
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
784
- }
785
-
786
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
787
- {
788
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
789
- }
790
-
791
- template<class V> void accept(V & v) const
792
- {
793
- base_type::accept(v);
794
- }
795
-
796
- bool operator==(list9 const & rhs) const
797
- {
798
- return
799
-
800
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
801
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
802
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
803
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
804
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
805
- ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
806
- ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
807
- ref_compare( base_type::a8_, rhs.a8_, 0 ) &&
808
- ref_compare( base_type::a9_, rhs.a9_, 0 );
809
- }
810
- };
811
-
812
- // bind_t
813
-
814
- #ifndef BOOST_NO_VOID_RETURNS
815
-
816
- template<class R, class F, class L> class bind_t
817
- {
818
- public:
819
-
820
- typedef bind_t this_type;
821
-
822
- bind_t(F f, L const & l): f_(f), l_(l) {}
823
-
824
- #define BOOST_BIND_RETURN return
825
- #include <boost/bind/bind_template.hpp>
826
- #undef BOOST_BIND_RETURN
827
-
828
- };
829
-
830
- #else
831
-
832
- template<class R> struct bind_t_generator
833
- {
834
-
835
- template<class F, class L> class implementation
836
- {
837
- public:
838
-
839
- typedef implementation this_type;
840
-
841
- implementation(F f, L const & l): f_(f), l_(l) {}
842
-
843
- #define BOOST_BIND_RETURN return
844
- #include <boost/bind/bind_template.hpp>
845
- #undef BOOST_BIND_RETURN
846
-
847
- };
848
-
849
- };
850
-
851
- template<> struct bind_t_generator<void>
852
- {
853
-
854
- template<class F, class L> class implementation
855
- {
856
- private:
857
-
858
- typedef void R;
859
-
860
- public:
861
-
862
- typedef implementation this_type;
863
-
864
- implementation(F f, L const & l): f_(f), l_(l) {}
865
-
866
- #define BOOST_BIND_RETURN
867
- #include <boost/bind/bind_template.hpp>
868
- #undef BOOST_BIND_RETURN
869
-
870
- };
871
-
872
- };
873
-
874
- template<class R2, class F, class L> class bind_t: public bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>
875
- {
876
- public:
877
-
878
- bind_t(F f, L const & l): bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>(f, l) {}
879
-
880
- };
881
-
882
- #endif
883
-
884
- // function_equal
885
-
886
- #ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
887
-
888
- // put overloads in _bi, rely on ADL
889
-
890
- # ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
891
-
892
- template<class R, class F, class L> bool function_equal( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b )
893
- {
894
- return a.compare(b);
895
- }
896
-
897
- # else
898
-
899
- template<class R, class F, class L> bool function_equal_impl( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
900
- {
901
- return a.compare(b);
902
- }
903
-
904
- # endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
905
-
906
- #else // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
907
-
908
- // put overloads in boost
909
-
910
- } // namespace _bi
911
-
912
- # ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
913
-
914
- template<class R, class F, class L> bool function_equal( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b )
915
- {
916
- return a.compare(b);
917
- }
918
-
919
- # else
920
-
921
- template<class R, class F, class L> bool function_equal_impl( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b, int )
922
- {
923
- return a.compare(b);
924
- }
925
-
926
- # endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
927
-
928
- namespace _bi
929
- {
930
-
931
- #endif // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
932
-
933
- // add_value
934
-
935
- #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530)
936
-
937
- #if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x582) )
938
-
939
- template<class T> struct add_value
940
- {
941
- typedef _bi::value<T> type;
942
- };
943
-
944
- #else
945
-
946
- template< class T, int I > struct add_value_2
947
- {
948
- typedef boost::arg<I> type;
949
- };
950
-
951
- template< class T > struct add_value_2< T, 0 >
952
- {
953
- typedef _bi::value< T > type;
954
- };
955
-
956
- template<class T> struct add_value
957
- {
958
- typedef typename add_value_2< T, boost::is_placeholder< T >::value >::type type;
959
- };
960
-
961
- #endif
962
-
963
- template<class T> struct add_value< value<T> >
964
- {
965
- typedef _bi::value<T> type;
966
- };
967
-
968
- template<class T> struct add_value< reference_wrapper<T> >
969
- {
970
- typedef reference_wrapper<T> type;
971
- };
972
-
973
- template<int I> struct add_value< arg<I> >
974
- {
975
- typedef boost::arg<I> type;
976
- };
977
-
978
- template<int I> struct add_value< arg<I> (*) () >
979
- {
980
- typedef boost::arg<I> (*type) ();
981
- };
982
-
983
- template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
984
- {
985
- typedef bind_t<R, F, L> type;
986
- };
987
-
988
- #else
989
-
990
- template<int I> struct _avt_0;
991
-
992
- template<> struct _avt_0<1>
993
- {
994
- template<class T> struct inner
995
- {
996
- typedef T type;
997
- };
998
- };
999
-
1000
- template<> struct _avt_0<2>
1001
- {
1002
- template<class T> struct inner
1003
- {
1004
- typedef value<T> type;
1005
- };
1006
- };
1007
-
1008
- typedef char (&_avt_r1) [1];
1009
- typedef char (&_avt_r2) [2];
1010
-
1011
- template<class T> _avt_r1 _avt_f(value<T>);
1012
- template<class T> _avt_r1 _avt_f(reference_wrapper<T>);
1013
- template<int I> _avt_r1 _avt_f(arg<I>);
1014
- template<int I> _avt_r1 _avt_f(arg<I> (*) ());
1015
- template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
1016
-
1017
- _avt_r2 _avt_f(...);
1018
-
1019
- template<class T> struct add_value
1020
- {
1021
- static T t();
1022
- typedef typename _avt_0<sizeof(_avt_f(t()))>::template inner<T>::type type;
1023
- };
1024
-
1025
- #endif
1026
-
1027
- // list_av_N
1028
-
1029
- template<class A1> struct list_av_1
1030
- {
1031
- typedef typename add_value<A1>::type B1;
1032
- typedef list1<B1> type;
1033
- };
1034
-
1035
- template<class A1, class A2> struct list_av_2
1036
- {
1037
- typedef typename add_value<A1>::type B1;
1038
- typedef typename add_value<A2>::type B2;
1039
- typedef list2<B1, B2> type;
1040
- };
1041
-
1042
- template<class A1, class A2, class A3> struct list_av_3
1043
- {
1044
- typedef typename add_value<A1>::type B1;
1045
- typedef typename add_value<A2>::type B2;
1046
- typedef typename add_value<A3>::type B3;
1047
- typedef list3<B1, B2, B3> type;
1048
- };
1049
-
1050
- template<class A1, class A2, class A3, class A4> struct list_av_4
1051
- {
1052
- typedef typename add_value<A1>::type B1;
1053
- typedef typename add_value<A2>::type B2;
1054
- typedef typename add_value<A3>::type B3;
1055
- typedef typename add_value<A4>::type B4;
1056
- typedef list4<B1, B2, B3, B4> type;
1057
- };
1058
-
1059
- template<class A1, class A2, class A3, class A4, class A5> struct list_av_5
1060
- {
1061
- typedef typename add_value<A1>::type B1;
1062
- typedef typename add_value<A2>::type B2;
1063
- typedef typename add_value<A3>::type B3;
1064
- typedef typename add_value<A4>::type B4;
1065
- typedef typename add_value<A5>::type B5;
1066
- typedef list5<B1, B2, B3, B4, B5> type;
1067
- };
1068
-
1069
- template<class A1, class A2, class A3, class A4, class A5, class A6> struct list_av_6
1070
- {
1071
- typedef typename add_value<A1>::type B1;
1072
- typedef typename add_value<A2>::type B2;
1073
- typedef typename add_value<A3>::type B3;
1074
- typedef typename add_value<A4>::type B4;
1075
- typedef typename add_value<A5>::type B5;
1076
- typedef typename add_value<A6>::type B6;
1077
- typedef list6<B1, B2, B3, B4, B5, B6> type;
1078
- };
1079
-
1080
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct list_av_7
1081
- {
1082
- typedef typename add_value<A1>::type B1;
1083
- typedef typename add_value<A2>::type B2;
1084
- typedef typename add_value<A3>::type B3;
1085
- typedef typename add_value<A4>::type B4;
1086
- typedef typename add_value<A5>::type B5;
1087
- typedef typename add_value<A6>::type B6;
1088
- typedef typename add_value<A7>::type B7;
1089
- typedef list7<B1, B2, B3, B4, B5, B6, B7> type;
1090
- };
1091
-
1092
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct list_av_8
1093
- {
1094
- typedef typename add_value<A1>::type B1;
1095
- typedef typename add_value<A2>::type B2;
1096
- typedef typename add_value<A3>::type B3;
1097
- typedef typename add_value<A4>::type B4;
1098
- typedef typename add_value<A5>::type B5;
1099
- typedef typename add_value<A6>::type B6;
1100
- typedef typename add_value<A7>::type B7;
1101
- typedef typename add_value<A8>::type B8;
1102
- typedef list8<B1, B2, B3, B4, B5, B6, B7, B8> type;
1103
- };
1104
-
1105
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct list_av_9
1106
- {
1107
- typedef typename add_value<A1>::type B1;
1108
- typedef typename add_value<A2>::type B2;
1109
- typedef typename add_value<A3>::type B3;
1110
- typedef typename add_value<A4>::type B4;
1111
- typedef typename add_value<A5>::type B5;
1112
- typedef typename add_value<A6>::type B6;
1113
- typedef typename add_value<A7>::type B7;
1114
- typedef typename add_value<A8>::type B8;
1115
- typedef typename add_value<A9>::type B9;
1116
- typedef list9<B1, B2, B3, B4, B5, B6, B7, B8, B9> type;
1117
- };
1118
-
1119
- // operator!
1120
-
1121
- struct logical_not
1122
- {
1123
- template<class V> bool operator()(V const & v) const { return !v; }
1124
- };
1125
-
1126
- template<class R, class F, class L>
1127
- bind_t< bool, logical_not, list1< bind_t<R, F, L> > >
1128
- operator! (bind_t<R, F, L> const & f)
1129
- {
1130
- typedef list1< bind_t<R, F, L> > list_type;
1131
- return bind_t<bool, logical_not, list_type> ( logical_not(), list_type(f) );
1132
- }
1133
-
1134
- // relational operators
1135
-
1136
- #define BOOST_BIND_OPERATOR( op, name ) \
1137
- \
1138
- struct name \
1139
- { \
1140
- template<class V, class W> bool operator()(V const & v, W const & w) const { return v op w; } \
1141
- }; \
1142
- \
1143
- template<class R, class F, class L, class A2> \
1144
- bind_t< bool, name, list2< bind_t<R, F, L>, typename add_value<A2>::type > > \
1145
- operator op (bind_t<R, F, L> const & f, A2 a2) \
1146
- { \
1147
- typedef typename add_value<A2>::type B2; \
1148
- typedef list2< bind_t<R, F, L>, B2> list_type; \
1149
- return bind_t<bool, name, list_type> ( name(), list_type(f, a2) ); \
1150
- }
1151
-
1152
- BOOST_BIND_OPERATOR( ==, equal )
1153
- BOOST_BIND_OPERATOR( !=, not_equal )
1154
-
1155
- BOOST_BIND_OPERATOR( <, less )
1156
- BOOST_BIND_OPERATOR( <=, less_equal )
1157
-
1158
- BOOST_BIND_OPERATOR( >, greater )
1159
- BOOST_BIND_OPERATOR( >=, greater_equal )
1160
-
1161
- #undef BOOST_BIND_OPERATOR
1162
-
1163
- #if defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3)
1164
-
1165
- // resolve ambiguity with rel_ops
1166
-
1167
- #define BOOST_BIND_OPERATOR( op, name ) \
1168
- \
1169
- template<class R, class F, class L> \
1170
- bind_t< bool, name, list2< bind_t<R, F, L>, bind_t<R, F, L> > > \
1171
- operator op (bind_t<R, F, L> const & f, bind_t<R, F, L> const & g) \
1172
- { \
1173
- typedef list2< bind_t<R, F, L>, bind_t<R, F, L> > list_type; \
1174
- return bind_t<bool, name, list_type> ( name(), list_type(f, g) ); \
1175
- }
1176
-
1177
- BOOST_BIND_OPERATOR( !=, not_equal )
1178
- BOOST_BIND_OPERATOR( <=, less_equal )
1179
- BOOST_BIND_OPERATOR( >, greater )
1180
- BOOST_BIND_OPERATOR( >=, greater_equal )
1181
-
1182
- #endif
1183
-
1184
- // visit_each, ADL
1185
-
1186
- #if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ ) \
1187
- && !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
1188
-
1189
- template<class V, class T> void visit_each( V & v, value<T> const & t, int )
1190
- {
1191
- using boost::visit_each;
1192
- BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
1193
- }
1194
-
1195
- template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F, L> const & t, int )
1196
- {
1197
- t.accept( v );
1198
- }
1199
-
1200
- #endif
1201
-
1202
- } // namespace _bi
1203
-
1204
- // visit_each, no ADL
1205
-
1206
- #if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( __BORLANDC__ ) \
1207
- || (defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
1208
-
1209
- template<class V, class T> void visit_each( V & v, _bi::value<T> const & t, int )
1210
- {
1211
- BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
1212
- }
1213
-
1214
- template<class V, class R, class F, class L> void visit_each( V & v, _bi::bind_t<R, F, L> const & t, int )
1215
- {
1216
- t.accept( v );
1217
- }
1218
-
1219
- #endif
1220
-
1221
- // is_bind_expression
1222
-
1223
- template< class T > struct is_bind_expression
1224
- {
1225
- enum _vt { value = 0 };
1226
- };
1227
-
1228
- #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1229
-
1230
- template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, F, L > >
1231
- {
1232
- enum _vt { value = 1 };
1233
- };
1234
-
1235
- #endif
1236
-
1237
- // bind
1238
-
1239
- #ifndef BOOST_BIND
1240
- #define BOOST_BIND bind
1241
- #endif
1242
-
1243
- // generic function objects
1244
-
1245
- template<class R, class F>
1246
- _bi::bind_t<R, F, _bi::list0>
1247
- BOOST_BIND(F f)
1248
- {
1249
- typedef _bi::list0 list_type;
1250
- return _bi::bind_t<R, F, list_type> (f, list_type());
1251
- }
1252
-
1253
- template<class R, class F, class A1>
1254
- _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
1255
- BOOST_BIND(F f, A1 a1)
1256
- {
1257
- typedef typename _bi::list_av_1<A1>::type list_type;
1258
- return _bi::bind_t<R, F, list_type> (f, list_type(a1));
1259
- }
1260
-
1261
- template<class R, class F, class A1, class A2>
1262
- _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
1263
- BOOST_BIND(F f, A1 a1, A2 a2)
1264
- {
1265
- typedef typename _bi::list_av_2<A1, A2>::type list_type;
1266
- return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
1267
- }
1268
-
1269
- template<class R, class F, class A1, class A2, class A3>
1270
- _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
1271
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
1272
- {
1273
- typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1274
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
1275
- }
1276
-
1277
- template<class R, class F, class A1, class A2, class A3, class A4>
1278
- _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1279
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
1280
- {
1281
- typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1282
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
1283
- }
1284
-
1285
- template<class R, class F, class A1, class A2, class A3, class A4, class A5>
1286
- _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1287
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
1288
- {
1289
- typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
1290
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
1291
- }
1292
-
1293
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
1294
- _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
1295
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
1296
- {
1297
- typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
1298
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
1299
- }
1300
-
1301
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
1302
- _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
1303
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
1304
- {
1305
- typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
1306
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
1307
- }
1308
-
1309
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
1310
- _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
1311
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
1312
- {
1313
- typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
1314
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
1315
- }
1316
-
1317
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
1318
- _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
1319
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
1320
- {
1321
- typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
1322
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
1323
- }
1324
-
1325
- // generic function objects, alternative syntax
1326
-
1327
- template<class R, class F>
1328
- _bi::bind_t<R, F, _bi::list0>
1329
- BOOST_BIND(boost::type<R>, F f)
1330
- {
1331
- typedef _bi::list0 list_type;
1332
- return _bi::bind_t<R, F, list_type> (f, list_type());
1333
- }
1334
-
1335
- template<class R, class F, class A1>
1336
- _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
1337
- BOOST_BIND(boost::type<R>, F f, A1 a1)
1338
- {
1339
- typedef typename _bi::list_av_1<A1>::type list_type;
1340
- return _bi::bind_t<R, F, list_type> (f, list_type(a1));
1341
- }
1342
-
1343
- template<class R, class F, class A1, class A2>
1344
- _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
1345
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2)
1346
- {
1347
- typedef typename _bi::list_av_2<A1, A2>::type list_type;
1348
- return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
1349
- }
1350
-
1351
- template<class R, class F, class A1, class A2, class A3>
1352
- _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
1353
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3)
1354
- {
1355
- typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1356
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
1357
- }
1358
-
1359
- template<class R, class F, class A1, class A2, class A3, class A4>
1360
- _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1361
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4)
1362
- {
1363
- typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1364
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
1365
- }
1366
-
1367
- template<class R, class F, class A1, class A2, class A3, class A4, class A5>
1368
- _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1369
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
1370
- {
1371
- typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
1372
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
1373
- }
1374
-
1375
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
1376
- _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
1377
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
1378
- {
1379
- typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
1380
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
1381
- }
1382
-
1383
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
1384
- _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
1385
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
1386
- {
1387
- typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
1388
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
1389
- }
1390
-
1391
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
1392
- _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
1393
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
1394
- {
1395
- typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
1396
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
1397
- }
1398
-
1399
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
1400
- _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
1401
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
1402
- {
1403
- typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
1404
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
1405
- }
1406
-
1407
- #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
1408
-
1409
- // adaptable function objects
1410
-
1411
- template<class F>
1412
- _bi::bind_t<_bi::unspecified, F, _bi::list0>
1413
- BOOST_BIND(F f)
1414
- {
1415
- typedef _bi::list0 list_type;
1416
- return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type());
1417
- }
1418
-
1419
- template<class F, class A1>
1420
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1<A1>::type>
1421
- BOOST_BIND(F f, A1 a1)
1422
- {
1423
- typedef typename _bi::list_av_1<A1>::type list_type;
1424
- return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1));
1425
- }
1426
-
1427
- template<class F, class A1, class A2>
1428
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2<A1, A2>::type>
1429
- BOOST_BIND(F f, A1 a1, A2 a2)
1430
- {
1431
- typedef typename _bi::list_av_2<A1, A2>::type list_type;
1432
- return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2));
1433
- }
1434
-
1435
- template<class F, class A1, class A2, class A3>
1436
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3<A1, A2, A3>::type>
1437
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
1438
- {
1439
- typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1440
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3));
1441
- }
1442
-
1443
- template<class F, class A1, class A2, class A3, class A4>
1444
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1445
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
1446
- {
1447
- typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1448
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4));
1449
- }
1450
-
1451
- template<class F, class A1, class A2, class A3, class A4, class A5>
1452
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1453
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
1454
- {
1455
- typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
1456
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
1457
- }
1458
-
1459
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6>
1460
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
1461
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
1462
- {
1463
- typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
1464
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
1465
- }
1466
-
1467
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
1468
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
1469
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
1470
- {
1471
- typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
1472
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
1473
- }
1474
-
1475
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
1476
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
1477
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
1478
- {
1479
- typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
1480
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
1481
- }
1482
-
1483
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
1484
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
1485
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
1486
- {
1487
- typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
1488
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
1489
- }
1490
-
1491
- #endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
1492
-
1493
- // function pointers
1494
-
1495
- #define BOOST_BIND_CC
1496
- #define BOOST_BIND_ST
1497
-
1498
- #include <boost/bind/bind_cc.hpp>
1499
-
1500
- #undef BOOST_BIND_CC
1501
- #undef BOOST_BIND_ST
1502
-
1503
- #ifdef BOOST_BIND_ENABLE_STDCALL
1504
-
1505
- #define BOOST_BIND_CC __stdcall
1506
- #define BOOST_BIND_ST
1507
-
1508
- #include <boost/bind/bind_cc.hpp>
1509
-
1510
- #undef BOOST_BIND_CC
1511
- #undef BOOST_BIND_ST
1512
-
1513
- #endif
1514
-
1515
- #ifdef BOOST_BIND_ENABLE_FASTCALL
1516
-
1517
- #define BOOST_BIND_CC __fastcall
1518
- #define BOOST_BIND_ST
1519
-
1520
- #include <boost/bind/bind_cc.hpp>
1521
-
1522
- #undef BOOST_BIND_CC
1523
- #undef BOOST_BIND_ST
1524
-
1525
- #endif
1526
-
1527
- #ifdef BOOST_BIND_ENABLE_PASCAL
1528
-
1529
- #define BOOST_BIND_ST pascal
1530
- #define BOOST_BIND_CC
1531
-
1532
- #include <boost/bind/bind_cc.hpp>
1533
-
1534
- #undef BOOST_BIND_ST
1535
- #undef BOOST_BIND_CC
1536
-
1537
- #endif
1538
-
1539
- // member function pointers
1540
-
1541
- #define BOOST_BIND_MF_NAME(X) X
1542
- #define BOOST_BIND_MF_CC
1543
-
1544
- #include <boost/bind/bind_mf_cc.hpp>
1545
-
1546
- #undef BOOST_BIND_MF_NAME
1547
- #undef BOOST_BIND_MF_CC
1548
-
1549
- #ifdef BOOST_MEM_FN_ENABLE_CDECL
1550
-
1551
- #define BOOST_BIND_MF_NAME(X) X##_cdecl
1552
- #define BOOST_BIND_MF_CC __cdecl
1553
-
1554
- #include <boost/bind/bind_mf_cc.hpp>
1555
-
1556
- #undef BOOST_BIND_MF_NAME
1557
- #undef BOOST_BIND_MF_CC
1558
-
1559
- #endif
1560
-
1561
- #ifdef BOOST_MEM_FN_ENABLE_STDCALL
1562
-
1563
- #define BOOST_BIND_MF_NAME(X) X##_stdcall
1564
- #define BOOST_BIND_MF_CC __stdcall
1565
-
1566
- #include <boost/bind/bind_mf_cc.hpp>
1567
-
1568
- #undef BOOST_BIND_MF_NAME
1569
- #undef BOOST_BIND_MF_CC
1570
-
1571
- #endif
1572
-
1573
- #ifdef BOOST_MEM_FN_ENABLE_FASTCALL
1574
-
1575
- #define BOOST_BIND_MF_NAME(X) X##_fastcall
1576
- #define BOOST_BIND_MF_CC __fastcall
1577
-
1578
- #include <boost/bind/bind_mf_cc.hpp>
1579
-
1580
- #undef BOOST_BIND_MF_NAME
1581
- #undef BOOST_BIND_MF_CC
1582
-
1583
- #endif
1584
-
1585
- // data member pointers
1586
-
1587
- #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
1588
- || ( defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x600 ) )
1589
-
1590
- template<class R, class T, class A1>
1591
- _bi::bind_t< R, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type >
1592
- BOOST_BIND(R T::*f, A1 a1)
1593
- {
1594
- typedef _mfi::dm<R, T> F;
1595
- typedef typename _bi::list_av_1<A1>::type list_type;
1596
- return _bi::bind_t<R, F, list_type>( F(f), list_type(a1) );
1597
- }
1598
-
1599
- #else
1600
-
1601
- namespace _bi
1602
- {
1603
-
1604
- template< class Pm, int I > struct add_cref;
1605
-
1606
- template< class M, class T > struct add_cref< M T::*, 0 >
1607
- {
1608
- typedef M type;
1609
- };
1610
-
1611
- template< class M, class T > struct add_cref< M T::*, 1 >
1612
- {
1613
- typedef M const & type;
1614
- };
1615
-
1616
- template< class R, class T > struct add_cref< R (T::*) (), 1 >
1617
- {
1618
- typedef void type;
1619
- };
1620
-
1621
- #if !( defined(__IBMCPP__) && BOOST_WORKAROUND( __IBMCPP__, BOOST_TESTED_AT(600) ) )
1622
-
1623
- template< class R, class T > struct add_cref< R (T::*) () const, 1 >
1624
- {
1625
- typedef void type;
1626
- };
1627
-
1628
- #endif // __IBMCPP__
1629
-
1630
- template<class R> struct isref
1631
- {
1632
- enum value_type { value = 0 };
1633
- };
1634
-
1635
- template<class R> struct isref< R& >
1636
- {
1637
- enum value_type { value = 1 };
1638
- };
1639
-
1640
- template<class R> struct isref< R* >
1641
- {
1642
- enum value_type { value = 1 };
1643
- };
1644
-
1645
- template<class Pm, class A1> struct dm_result
1646
- {
1647
- typedef typename add_cref< Pm, 1 >::type type;
1648
- };
1649
-
1650
- template<class Pm, class R, class F, class L> struct dm_result< Pm, bind_t<R, F, L> >
1651
- {
1652
- typedef typename bind_t<R, F, L>::result_type result_type;
1653
- typedef typename add_cref< Pm, isref< result_type >::value >::type type;
1654
- };
1655
-
1656
- } // namespace _bi
1657
-
1658
- template< class A1, class M, class T >
1659
-
1660
- _bi::bind_t<
1661
- typename _bi::dm_result< M T::*, A1 >::type,
1662
- _mfi::dm<M, T>,
1663
- typename _bi::list_av_1<A1>::type
1664
- >
1665
-
1666
- BOOST_BIND( M T::*f, A1 a1 )
1667
- {
1668
- typedef typename _bi::dm_result< M T::*, A1 >::type result_type;
1669
- typedef _mfi::dm<M, T> F;
1670
- typedef typename _bi::list_av_1<A1>::type list_type;
1671
- return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) );
1672
- }
1673
-
1674
- #endif
1675
-
1676
- } // namespace boost
1677
-
1678
- #ifndef BOOST_BIND_NO_PLACEHOLDERS
1679
-
1680
- # include <boost/bind/placeholders.hpp>
1681
-
1682
- #endif
1683
-
1684
- #ifdef BOOST_MSVC
1685
- # pragma warning(default: 4512) // assignment operator could not be generated
1686
- # pragma warning(pop)
1687
- #endif
22
+ #include <boost/bind/bind.hpp>
1688
23
 
1689
24
  #endif // #ifndef BOOST_BIND_HPP_INCLUDED