colouringcode-passenger 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1064) hide show
  1. data/DEVELOPERS.TXT +101 -0
  2. data/INSTALL +6 -0
  3. data/LICENSE +19 -0
  4. data/NEWS +174 -0
  5. data/README +59 -0
  6. data/Rakefile +921 -0
  7. data/benchmark/ApplicationPool.cpp +52 -0
  8. data/benchmark/accept_vs_socketpair_vs_named_pipes.rb +126 -0
  9. data/benchmark/dispatcher.rb +42 -0
  10. data/benchmark/overhead_of_password_checking.rb +81 -0
  11. data/benchmark/socket_connections_vs_persistent_pipe.rb +99 -0
  12. data/benchmark/unix_sockets_vs_pipes.rb +83 -0
  13. data/bin/passenger-config +46 -0
  14. data/bin/passenger-install-apache2-module +223 -0
  15. data/bin/passenger-install-nginx-module +472 -0
  16. data/bin/passenger-make-enterprisey +83 -0
  17. data/bin/passenger-memory-stats +301 -0
  18. data/bin/passenger-spawn-server +68 -0
  19. data/bin/passenger-status +125 -0
  20. data/bin/passenger-stress-test +344 -0
  21. data/debian/compat +1 -0
  22. data/debian/control +21 -0
  23. data/debian/postinst +24 -0
  24. data/debian/prerm +2 -0
  25. data/doc/ApplicationPool algorithm.txt +402 -0
  26. data/doc/Architectural overview.html +1 -0
  27. data/doc/Architectural overview.txt +334 -0
  28. data/doc/Doxyfile +241 -0
  29. data/doc/Security of user switching support.html +1 -0
  30. data/doc/Security of user switching support.txt +197 -0
  31. data/doc/Users guide Apache.html +1 -0
  32. data/doc/Users guide Apache.txt +1848 -0
  33. data/doc/Users guide Nginx.html +1 -0
  34. data/doc/Users guide Nginx.txt +769 -0
  35. data/doc/definitions.h +5 -0
  36. data/doc/images/by_sa.png +0 -0
  37. data/doc/images/conservative_spawning.png +0 -0
  38. data/doc/images/conservative_spawning.svg +248 -0
  39. data/doc/images/icons/README +5 -0
  40. data/doc/images/icons/callouts/1.png +0 -0
  41. data/doc/images/icons/callouts/10.png +0 -0
  42. data/doc/images/icons/callouts/11.png +0 -0
  43. data/doc/images/icons/callouts/12.png +0 -0
  44. data/doc/images/icons/callouts/13.png +0 -0
  45. data/doc/images/icons/callouts/14.png +0 -0
  46. data/doc/images/icons/callouts/15.png +0 -0
  47. data/doc/images/icons/callouts/2.png +0 -0
  48. data/doc/images/icons/callouts/3.png +0 -0
  49. data/doc/images/icons/callouts/4.png +0 -0
  50. data/doc/images/icons/callouts/5.png +0 -0
  51. data/doc/images/icons/callouts/6.png +0 -0
  52. data/doc/images/icons/callouts/7.png +0 -0
  53. data/doc/images/icons/callouts/8.png +0 -0
  54. data/doc/images/icons/callouts/9.png +0 -0
  55. data/doc/images/icons/caution.png +0 -0
  56. data/doc/images/icons/example.png +0 -0
  57. data/doc/images/icons/home.png +0 -0
  58. data/doc/images/icons/important.png +0 -0
  59. data/doc/images/icons/next.png +0 -0
  60. data/doc/images/icons/note.png +0 -0
  61. data/doc/images/icons/prev.png +0 -0
  62. data/doc/images/icons/tip.png +0 -0
  63. data/doc/images/icons/up.png +0 -0
  64. data/doc/images/icons/warning.png +0 -0
  65. data/doc/images/passenger_architecture.png +0 -0
  66. data/doc/images/passenger_architecture.svg +401 -0
  67. data/doc/images/phusion_banner.png +0 -0
  68. data/doc/images/smart-lv2.png +0 -0
  69. data/doc/images/smart-lv2.svg +320 -0
  70. data/doc/images/spawn_server_architecture.png +0 -0
  71. data/doc/images/spawn_server_architecture.svg +655 -0
  72. data/doc/images/typical_isolated_web_application.png +0 -0
  73. data/doc/images/typical_isolated_web_application.svg +213 -0
  74. data/doc/rdoc/classes/ConditionVariable.html +194 -0
  75. data/doc/rdoc/classes/Exception.html +120 -0
  76. data/doc/rdoc/classes/GC.html +113 -0
  77. data/doc/rdoc/classes/IO.html +169 -0
  78. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +153 -0
  79. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +517 -0
  80. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  81. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +96 -0
  82. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +97 -0
  83. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +96 -0
  84. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +719 -0
  85. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
  86. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
  87. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +317 -0
  88. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
  89. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +154 -0
  90. data/doc/rdoc/classes/PhusionPassenger/Application.html +283 -0
  91. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +172 -0
  92. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +145 -0
  93. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +181 -0
  94. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +141 -0
  95. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  96. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +489 -0
  97. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +350 -0
  98. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +188 -0
  99. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +199 -0
  100. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  101. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
  102. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +438 -0
  103. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
  104. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
  105. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +436 -0
  106. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +155 -0
  107. data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
  108. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +402 -0
  109. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +125 -0
  110. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +169 -0
  111. data/doc/rdoc/classes/PhusionPassenger/Utils.html +803 -0
  112. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +140 -0
  113. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
  114. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  115. data/doc/rdoc/classes/PhusionPassenger.html +238 -0
  116. data/doc/rdoc/classes/PlatformInfo.html +866 -0
  117. data/doc/rdoc/classes/RakeExtensions.html +197 -0
  118. data/doc/rdoc/classes/Signal.html +131 -0
  119. data/doc/rdoc/created.rid +1 -0
  120. data/doc/rdoc/files/DEVELOPERS_TXT.html +255 -0
  121. data/doc/rdoc/files/README.html +175 -0
  122. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +92 -0
  123. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +129 -0
  124. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +129 -0
  125. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +126 -0
  126. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +128 -0
  127. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +130 -0
  128. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +122 -0
  129. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +127 -0
  130. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +126 -0
  131. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +122 -0
  132. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +134 -0
  133. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +122 -0
  134. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +122 -0
  135. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +126 -0
  136. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +120 -0
  137. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  138. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +127 -0
  139. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +133 -0
  140. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +125 -0
  141. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +140 -0
  142. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
  143. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +145 -0
  144. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +125 -0
  145. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +122 -0
  146. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +159 -0
  147. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +174 -0
  148. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +129 -0
  149. data/doc/rdoc/files/misc/rake/extensions_rb.html +130 -0
  150. data/doc/rdoc/fr_class_index.html +91 -0
  151. data/doc/rdoc/fr_file_index.html +76 -0
  152. data/doc/rdoc/fr_method_index.html +205 -0
  153. data/doc/rdoc/index.html +26 -0
  154. data/doc/rdoc/rdoc-style.css +187 -0
  155. data/doc/template/horo.rb +613 -0
  156. data/doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt +144 -0
  157. data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
  158. data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
  159. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +304 -0
  160. data/doc/users_guide_snippets/global_queueing_explained.txt +78 -0
  161. data/doc/users_guide_snippets/rackup_specifications.txt +71 -0
  162. data/doc/users_guide_snippets/rails_spawn_method.txt +48 -0
  163. data/doc/users_guide_snippets/tips.txt +173 -0
  164. data/ext/apache2/Bucket.cpp +190 -0
  165. data/ext/apache2/Bucket.h +87 -0
  166. data/ext/apache2/Configuration.cpp +798 -0
  167. data/ext/apache2/Configuration.h +405 -0
  168. data/ext/apache2/DirectoryMapper.h +296 -0
  169. data/ext/apache2/Hooks.cpp +1615 -0
  170. data/ext/apache2/Hooks.h +45 -0
  171. data/ext/apache2/LICENSE-CNRI.TXT +79 -0
  172. data/ext/apache2/mod_passenger.c +38 -0
  173. data/ext/boost/LICENSE.TXT +23 -0
  174. data/ext/boost/VERSION.TXT +1 -0
  175. data/ext/boost/algorithm/string/case_conv.hpp +176 -0
  176. data/ext/boost/algorithm/string/compare.hpp +199 -0
  177. data/ext/boost/algorithm/string/concept.hpp +83 -0
  178. data/ext/boost/algorithm/string/config.hpp +28 -0
  179. data/ext/boost/algorithm/string/constants.hpp +36 -0
  180. data/ext/boost/algorithm/string/detail/case_conv.hpp +112 -0
  181. data/ext/boost/algorithm/string/detail/find_format.hpp +193 -0
  182. data/ext/boost/algorithm/string/detail/find_format_all.hpp +263 -0
  183. data/ext/boost/algorithm/string/detail/find_format_store.hpp +71 -0
  184. data/ext/boost/algorithm/string/detail/finder.hpp +646 -0
  185. data/ext/boost/algorithm/string/detail/formatter.hpp +94 -0
  186. data/ext/boost/algorithm/string/detail/replace_storage.hpp +159 -0
  187. data/ext/boost/algorithm/string/detail/sequence.hpp +200 -0
  188. data/ext/boost/algorithm/string/detail/util.hpp +106 -0
  189. data/ext/boost/algorithm/string/erase.hpp +844 -0
  190. data/ext/boost/algorithm/string/find_format.hpp +269 -0
  191. data/ext/boost/algorithm/string/finder.hpp +270 -0
  192. data/ext/boost/algorithm/string/formatter.hpp +103 -0
  193. data/ext/boost/algorithm/string/replace.hpp +928 -0
  194. data/ext/boost/algorithm/string/sequence_traits.hpp +193 -0
  195. data/ext/boost/algorithm/string/yes_no_type.hpp +33 -0
  196. data/ext/boost/assert.hpp +50 -0
  197. data/ext/boost/bind/arg.hpp +62 -0
  198. data/ext/boost/bind/bind_cc.hpp +117 -0
  199. data/ext/boost/bind/bind_mf_cc.hpp +227 -0
  200. data/ext/boost/bind/bind_template.hpp +345 -0
  201. data/ext/boost/bind/mem_fn_cc.hpp +103 -0
  202. data/ext/boost/bind/mem_fn_template.hpp +1020 -0
  203. data/ext/boost/bind/placeholders.hpp +68 -0
  204. data/ext/boost/bind/storage.hpp +475 -0
  205. data/ext/boost/bind.hpp +1689 -0
  206. data/ext/boost/call_traits.hpp +24 -0
  207. data/ext/boost/checked_delete.hpp +69 -0
  208. data/ext/boost/concept/assert.hpp +46 -0
  209. data/ext/boost/concept/detail/concept_def.hpp +51 -0
  210. data/ext/boost/concept/detail/concept_undef.hpp +5 -0
  211. data/ext/boost/concept/detail/general.hpp +66 -0
  212. data/ext/boost/concept/detail/has_constraints.hpp +48 -0
  213. data/ext/boost/concept/usage.hpp +43 -0
  214. data/ext/boost/concept_check.hpp +988 -0
  215. data/ext/boost/config/abi/borland_prefix.hpp +27 -0
  216. data/ext/boost/config/abi/borland_suffix.hpp +12 -0
  217. data/ext/boost/config/abi/msvc_prefix.hpp +8 -0
  218. data/ext/boost/config/abi/msvc_suffix.hpp +8 -0
  219. data/ext/boost/config/abi_prefix.hpp +25 -0
  220. data/ext/boost/config/abi_suffix.hpp +26 -0
  221. data/ext/boost/config/auto_link.hpp +368 -0
  222. data/ext/boost/config/compiler/borland.hpp +209 -0
  223. data/ext/boost/config/compiler/comeau.hpp +59 -0
  224. data/ext/boost/config/compiler/common_edg.hpp +62 -0
  225. data/ext/boost/config/compiler/compaq_cxx.hpp +19 -0
  226. data/ext/boost/config/compiler/digitalmars.hpp +67 -0
  227. data/ext/boost/config/compiler/gcc.hpp +149 -0
  228. data/ext/boost/config/compiler/gcc_xml.hpp +30 -0
  229. data/ext/boost/config/compiler/greenhills.hpp +28 -0
  230. data/ext/boost/config/compiler/hp_acc.hpp +95 -0
  231. data/ext/boost/config/compiler/intel.hpp +162 -0
  232. data/ext/boost/config/compiler/kai.hpp +35 -0
  233. data/ext/boost/config/compiler/metrowerks.hpp +111 -0
  234. data/ext/boost/config/compiler/mpw.hpp +51 -0
  235. data/ext/boost/config/compiler/pgi.hpp +25 -0
  236. data/ext/boost/config/compiler/sgi_mipspro.hpp +28 -0
  237. data/ext/boost/config/compiler/sunpro_cc.hpp +98 -0
  238. data/ext/boost/config/compiler/vacpp.hpp +60 -0
  239. data/ext/boost/config/compiler/visualc.hpp +191 -0
  240. data/ext/boost/config/no_tr1/complex.hpp +28 -0
  241. data/ext/boost/config/no_tr1/functional.hpp +28 -0
  242. data/ext/boost/config/no_tr1/memory.hpp +28 -0
  243. data/ext/boost/config/no_tr1/utility.hpp +28 -0
  244. data/ext/boost/config/platform/aix.hpp +33 -0
  245. data/ext/boost/config/platform/amigaos.hpp +15 -0
  246. data/ext/boost/config/platform/beos.hpp +26 -0
  247. data/ext/boost/config/platform/bsd.hpp +73 -0
  248. data/ext/boost/config/platform/cygwin.hpp +51 -0
  249. data/ext/boost/config/platform/hpux.hpp +84 -0
  250. data/ext/boost/config/platform/irix.hpp +31 -0
  251. data/ext/boost/config/platform/linux.hpp +98 -0
  252. data/ext/boost/config/platform/macos.hpp +78 -0
  253. data/ext/boost/config/platform/qnxnto.hpp +31 -0
  254. data/ext/boost/config/platform/solaris.hpp +21 -0
  255. data/ext/boost/config/platform/win32.hpp +58 -0
  256. data/ext/boost/config/posix_features.hpp +95 -0
  257. data/ext/boost/config/requires_threads.hpp +92 -0
  258. data/ext/boost/config/select_compiler_config.hpp +115 -0
  259. data/ext/boost/config/select_platform_config.hpp +90 -0
  260. data/ext/boost/config/select_stdlib_config.hpp +68 -0
  261. data/ext/boost/config/stdlib/dinkumware.hpp +106 -0
  262. data/ext/boost/config/stdlib/libcomo.hpp +46 -0
  263. data/ext/boost/config/stdlib/libstdcpp3.hpp +73 -0
  264. data/ext/boost/config/stdlib/modena.hpp +30 -0
  265. data/ext/boost/config/stdlib/msl.hpp +59 -0
  266. data/ext/boost/config/stdlib/roguewave.hpp +153 -0
  267. data/ext/boost/config/stdlib/sgi.hpp +111 -0
  268. data/ext/boost/config/stdlib/stlport.hpp +201 -0
  269. data/ext/boost/config/stdlib/vacpp.hpp +18 -0
  270. data/ext/boost/config/suffix.hpp +566 -0
  271. data/ext/boost/config/user.hpp +124 -0
  272. data/ext/boost/config.hpp +70 -0
  273. data/ext/boost/cstdint.hpp +449 -0
  274. data/ext/boost/current_function.hpp +67 -0
  275. data/ext/boost/date_time/adjust_functors.hpp +178 -0
  276. data/ext/boost/date_time/c_time.hpp +91 -0
  277. data/ext/boost/date_time/compiler_config.hpp +149 -0
  278. data/ext/boost/date_time/constrained_value.hpp +98 -0
  279. data/ext/boost/date_time/date.hpp +197 -0
  280. data/ext/boost/date_time/date_clock_device.hpp +77 -0
  281. data/ext/boost/date_time/date_defs.hpp +26 -0
  282. data/ext/boost/date_time/date_duration.hpp +147 -0
  283. data/ext/boost/date_time/date_duration_types.hpp +269 -0
  284. data/ext/boost/date_time/date_facet.hpp +775 -0
  285. data/ext/boost/date_time/date_format_simple.hpp +159 -0
  286. data/ext/boost/date_time/date_formatting.hpp +127 -0
  287. data/ext/boost/date_time/date_formatting_limited.hpp +121 -0
  288. data/ext/boost/date_time/date_formatting_locales.hpp +233 -0
  289. data/ext/boost/date_time/date_generator_formatter.hpp +263 -0
  290. data/ext/boost/date_time/date_generator_parser.hpp +329 -0
  291. data/ext/boost/date_time/date_generators.hpp +509 -0
  292. data/ext/boost/date_time/date_iterator.hpp +101 -0
  293. data/ext/boost/date_time/date_names_put.hpp +320 -0
  294. data/ext/boost/date_time/date_parsing.hpp +299 -0
  295. data/ext/boost/date_time/dst_rules.hpp +391 -0
  296. data/ext/boost/date_time/filetime_functions.hpp +78 -0
  297. data/ext/boost/date_time/format_date_parser.hpp +731 -0
  298. data/ext/boost/date_time/gregorian/conversion.hpp +73 -0
  299. data/ext/boost/date_time/gregorian/formatters.hpp +162 -0
  300. data/ext/boost/date_time/gregorian/formatters_limited.hpp +81 -0
  301. data/ext/boost/date_time/gregorian/greg_calendar.hpp +47 -0
  302. data/ext/boost/date_time/gregorian/greg_date.hpp +135 -0
  303. data/ext/boost/date_time/gregorian/greg_day.hpp +57 -0
  304. data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +38 -0
  305. data/ext/boost/date_time/gregorian/greg_duration.hpp +38 -0
  306. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +34 -0
  307. data/ext/boost/date_time/gregorian/greg_month.hpp +105 -0
  308. data/ext/boost/date_time/gregorian/greg_weekday.hpp +66 -0
  309. data/ext/boost/date_time/gregorian/greg_year.hpp +53 -0
  310. data/ext/boost/date_time/gregorian/greg_ymd.hpp +33 -0
  311. data/ext/boost/date_time/gregorian/gregorian.hpp +38 -0
  312. data/ext/boost/date_time/gregorian/gregorian_io.hpp +777 -0
  313. data/ext/boost/date_time/gregorian/gregorian_types.hpp +109 -0
  314. data/ext/boost/date_time/gregorian/parsers.hpp +91 -0
  315. data/ext/boost/date_time/gregorian_calendar.hpp +70 -0
  316. data/ext/boost/date_time/gregorian_calendar.ipp +219 -0
  317. data/ext/boost/date_time/int_adapter.hpp +507 -0
  318. data/ext/boost/date_time/iso_format.hpp +303 -0
  319. data/ext/boost/date_time/locale_config.hpp +31 -0
  320. data/ext/boost/date_time/microsec_time_clock.hpp +205 -0
  321. data/ext/boost/date_time/parse_format_base.hpp +29 -0
  322. data/ext/boost/date_time/period.hpp +377 -0
  323. data/ext/boost/date_time/period_formatter.hpp +196 -0
  324. data/ext/boost/date_time/period_parser.hpp +196 -0
  325. data/ext/boost/date_time/posix_time/conversion.hpp +93 -0
  326. data/ext/boost/date_time/posix_time/date_duration_operators.hpp +114 -0
  327. data/ext/boost/date_time/posix_time/posix_time.hpp +39 -0
  328. data/ext/boost/date_time/posix_time/posix_time_config.hpp +178 -0
  329. data/ext/boost/date_time/posix_time/posix_time_duration.hpp +82 -0
  330. data/ext/boost/date_time/posix_time/posix_time_io.hpp +246 -0
  331. data/ext/boost/date_time/posix_time/posix_time_system.hpp +68 -0
  332. data/ext/boost/date_time/posix_time/posix_time_types.hpp +55 -0
  333. data/ext/boost/date_time/posix_time/ptime.hpp +65 -0
  334. data/ext/boost/date_time/posix_time/time_formatters.hpp +289 -0
  335. data/ext/boost/date_time/posix_time/time_parsers.hpp +44 -0
  336. data/ext/boost/date_time/posix_time/time_period.hpp +29 -0
  337. data/ext/boost/date_time/special_defs.hpp +25 -0
  338. data/ext/boost/date_time/special_values_formatter.hpp +96 -0
  339. data/ext/boost/date_time/special_values_parser.hpp +159 -0
  340. data/ext/boost/date_time/string_convert.hpp +33 -0
  341. data/ext/boost/date_time/string_parse_tree.hpp +278 -0
  342. data/ext/boost/date_time/strings_from_facet.hpp +123 -0
  343. data/ext/boost/date_time/time.hpp +190 -0
  344. data/ext/boost/date_time/time_clock.hpp +83 -0
  345. data/ext/boost/date_time/time_defs.hpp +33 -0
  346. data/ext/boost/date_time/time_duration.hpp +281 -0
  347. data/ext/boost/date_time/time_facet.hpp +1263 -0
  348. data/ext/boost/date_time/time_formatting_streams.hpp +119 -0
  349. data/ext/boost/date_time/time_iterator.hpp +52 -0
  350. data/ext/boost/date_time/time_parsing.hpp +321 -0
  351. data/ext/boost/date_time/time_resolution_traits.hpp +140 -0
  352. data/ext/boost/date_time/time_system_counted.hpp +254 -0
  353. data/ext/boost/date_time/time_system_split.hpp +213 -0
  354. data/ext/boost/date_time/wrapping_int.hpp +163 -0
  355. data/ext/boost/date_time/year_month_day.hpp +45 -0
  356. data/ext/boost/detail/atomic_count.hpp +124 -0
  357. data/ext/boost/detail/atomic_count_gcc.hpp +68 -0
  358. data/ext/boost/detail/atomic_count_gcc_x86.hpp +84 -0
  359. data/ext/boost/detail/atomic_count_pthreads.hpp +96 -0
  360. data/ext/boost/detail/atomic_count_solaris.hpp +59 -0
  361. data/ext/boost/detail/atomic_count_sync.hpp +57 -0
  362. data/ext/boost/detail/atomic_count_win32.hpp +63 -0
  363. data/ext/boost/detail/bad_weak_ptr.hpp +59 -0
  364. data/ext/boost/detail/call_traits.hpp +164 -0
  365. data/ext/boost/detail/endian.hpp +73 -0
  366. data/ext/boost/detail/indirect_traits.hpp +487 -0
  367. data/ext/boost/detail/iterator.hpp +494 -0
  368. data/ext/boost/detail/lcast_precision.hpp +184 -0
  369. data/ext/boost/detail/limits.hpp +449 -0
  370. data/ext/boost/detail/reference_content.hpp +141 -0
  371. data/ext/boost/detail/shared_count.hpp +375 -0
  372. data/ext/boost/detail/sp_counted_base.hpp +81 -0
  373. data/ext/boost/detail/sp_counted_base_acc_ia64.hpp +150 -0
  374. data/ext/boost/detail/sp_counted_base_cw_ppc.hpp +170 -0
  375. data/ext/boost/detail/sp_counted_base_cw_x86.hpp +158 -0
  376. data/ext/boost/detail/sp_counted_base_gcc_ia64.hpp +157 -0
  377. data/ext/boost/detail/sp_counted_base_gcc_ppc.hpp +181 -0
  378. data/ext/boost/detail/sp_counted_base_gcc_sparc.hpp +166 -0
  379. data/ext/boost/detail/sp_counted_base_gcc_x86.hpp +173 -0
  380. data/ext/boost/detail/sp_counted_base_nt.hpp +107 -0
  381. data/ext/boost/detail/sp_counted_base_pt.hpp +135 -0
  382. data/ext/boost/detail/sp_counted_base_solaris.hpp +113 -0
  383. data/ext/boost/detail/sp_counted_base_sync.hpp +151 -0
  384. data/ext/boost/detail/sp_counted_base_w32.hpp +130 -0
  385. data/ext/boost/detail/sp_counted_impl.hpp +231 -0
  386. data/ext/boost/detail/sp_typeinfo.hpp +83 -0
  387. data/ext/boost/detail/workaround.hpp +202 -0
  388. data/ext/boost/enable_shared_from_this.hpp +73 -0
  389. data/ext/boost/function/detail/function_iterate.hpp +16 -0
  390. data/ext/boost/function/detail/maybe_include.hpp +267 -0
  391. data/ext/boost/function/detail/prologue.hpp +25 -0
  392. data/ext/boost/function/function_base.hpp +762 -0
  393. data/ext/boost/function/function_template.hpp +969 -0
  394. data/ext/boost/function.hpp +66 -0
  395. data/ext/boost/function_equal.hpp +28 -0
  396. data/ext/boost/get_pointer.hpp +29 -0
  397. data/ext/boost/implicit_cast.hpp +29 -0
  398. data/ext/boost/integer_traits.hpp +236 -0
  399. data/ext/boost/io/ios_state.hpp +431 -0
  400. data/ext/boost/io_fwd.hpp +67 -0
  401. data/ext/boost/is_placeholder.hpp +31 -0
  402. data/ext/boost/iterator/detail/config_def.hpp +135 -0
  403. data/ext/boost/iterator/detail/config_undef.hpp +25 -0
  404. data/ext/boost/iterator/detail/enable_if.hpp +86 -0
  405. data/ext/boost/iterator/detail/facade_iterator_category.hpp +200 -0
  406. data/ext/boost/iterator/detail/minimum_category.hpp +116 -0
  407. data/ext/boost/iterator/interoperable.hpp +50 -0
  408. data/ext/boost/iterator/iterator_adaptor.hpp +366 -0
  409. data/ext/boost/iterator/iterator_categories.hpp +188 -0
  410. data/ext/boost/iterator/iterator_facade.hpp +879 -0
  411. data/ext/boost/iterator/iterator_traits.hpp +92 -0
  412. data/ext/boost/iterator/reverse_iterator.hpp +69 -0
  413. data/ext/boost/iterator/transform_iterator.hpp +188 -0
  414. data/ext/boost/iterator.hpp +59 -0
  415. data/ext/boost/lexical_cast.hpp +1205 -0
  416. data/ext/boost/limits.hpp +146 -0
  417. data/ext/boost/mem_fn.hpp +389 -0
  418. data/ext/boost/mpl/always.hpp +39 -0
  419. data/ext/boost/mpl/and.hpp +60 -0
  420. data/ext/boost/mpl/apply.hpp +229 -0
  421. data/ext/boost/mpl/apply_fwd.hpp +107 -0
  422. data/ext/boost/mpl/apply_wrap.hpp +203 -0
  423. data/ext/boost/mpl/arg.hpp +131 -0
  424. data/ext/boost/mpl/arg_fwd.hpp +28 -0
  425. data/ext/boost/mpl/assert.hpp +370 -0
  426. data/ext/boost/mpl/aux_/adl_barrier.hpp +48 -0
  427. data/ext/boost/mpl/aux_/arg_typedef.hpp +31 -0
  428. data/ext/boost/mpl/aux_/arity.hpp +39 -0
  429. data/ext/boost/mpl/aux_/arity_spec.hpp +67 -0
  430. data/ext/boost/mpl/aux_/common_name_wknd.hpp +34 -0
  431. data/ext/boost/mpl/aux_/config/adl.hpp +40 -0
  432. data/ext/boost/mpl/aux_/config/arrays.hpp +30 -0
  433. data/ext/boost/mpl/aux_/config/bind.hpp +33 -0
  434. data/ext/boost/mpl/aux_/config/compiler.hpp +64 -0
  435. data/ext/boost/mpl/aux_/config/ctps.hpp +30 -0
  436. data/ext/boost/mpl/aux_/config/dtp.hpp +46 -0
  437. data/ext/boost/mpl/aux_/config/eti.hpp +47 -0
  438. data/ext/boost/mpl/aux_/config/gcc.hpp +23 -0
  439. data/ext/boost/mpl/aux_/config/has_apply.hpp +32 -0
  440. data/ext/boost/mpl/aux_/config/has_xxx.hpp +33 -0
  441. data/ext/boost/mpl/aux_/config/integral.hpp +38 -0
  442. data/ext/boost/mpl/aux_/config/intel.hpp +21 -0
  443. data/ext/boost/mpl/aux_/config/lambda.hpp +32 -0
  444. data/ext/boost/mpl/aux_/config/msvc.hpp +21 -0
  445. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +26 -0
  446. data/ext/boost/mpl/aux_/config/nttp.hpp +41 -0
  447. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +29 -0
  448. data/ext/boost/mpl/aux_/config/pp_counter.hpp +26 -0
  449. data/ext/boost/mpl/aux_/config/preprocessor.hpp +39 -0
  450. data/ext/boost/mpl/aux_/config/static_constant.hpp +25 -0
  451. data/ext/boost/mpl/aux_/config/ttp.hpp +41 -0
  452. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +19 -0
  453. data/ext/boost/mpl/aux_/config/workaround.hpp +19 -0
  454. data/ext/boost/mpl/aux_/full_lambda.hpp +354 -0
  455. data/ext/boost/mpl/aux_/has_apply.hpp +32 -0
  456. data/ext/boost/mpl/aux_/has_type.hpp +23 -0
  457. data/ext/boost/mpl/aux_/include_preprocessed.hpp +42 -0
  458. data/ext/boost/mpl/aux_/integral_wrapper.hpp +93 -0
  459. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +25 -0
  460. data/ext/boost/mpl/aux_/lambda_support.hpp +169 -0
  461. data/ext/boost/mpl/aux_/msvc_never_true.hpp +34 -0
  462. data/ext/boost/mpl/aux_/na.hpp +95 -0
  463. data/ext/boost/mpl/aux_/na_assert.hpp +34 -0
  464. data/ext/boost/mpl/aux_/na_fwd.hpp +31 -0
  465. data/ext/boost/mpl/aux_/na_spec.hpp +175 -0
  466. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +48 -0
  467. data/ext/boost/mpl/aux_/nttp_decl.hpp +35 -0
  468. data/ext/boost/mpl/aux_/preprocessed/gcc/and.hpp +69 -0
  469. data/ext/boost/mpl/aux_/preprocessed/gcc/apply.hpp +169 -0
  470. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp +52 -0
  471. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp +84 -0
  472. data/ext/boost/mpl/aux_/preprocessed/gcc/arg.hpp +123 -0
  473. data/ext/boost/mpl/aux_/preprocessed/gcc/bind.hpp +561 -0
  474. data/ext/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp +52 -0
  475. data/ext/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp +558 -0
  476. data/ext/boost/mpl/aux_/preprocessed/gcc/or.hpp +69 -0
  477. data/ext/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp +105 -0
  478. data/ext/boost/mpl/aux_/preprocessed/gcc/quote.hpp +123 -0
  479. data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +101 -0
  480. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +105 -0
  481. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +62 -0
  482. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +28 -0
  483. data/ext/boost/mpl/aux_/preprocessor/params.hpp +65 -0
  484. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +65 -0
  485. data/ext/boost/mpl/aux_/static_cast.hpp +27 -0
  486. data/ext/boost/mpl/aux_/template_arity.hpp +189 -0
  487. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +23 -0
  488. data/ext/boost/mpl/aux_/type_wrapper.hpp +47 -0
  489. data/ext/boost/mpl/aux_/value_wknd.hpp +89 -0
  490. data/ext/boost/mpl/aux_/yes_no.hpp +58 -0
  491. data/ext/boost/mpl/bind.hpp +551 -0
  492. data/ext/boost/mpl/bind_fwd.hpp +99 -0
  493. data/ext/boost/mpl/bool.hpp +39 -0
  494. data/ext/boost/mpl/bool_fwd.hpp +33 -0
  495. data/ext/boost/mpl/eval_if.hpp +71 -0
  496. data/ext/boost/mpl/has_xxx.hpp +272 -0
  497. data/ext/boost/mpl/identity.hpp +45 -0
  498. data/ext/boost/mpl/if.hpp +135 -0
  499. data/ext/boost/mpl/int.hpp +22 -0
  500. data/ext/boost/mpl/int_fwd.hpp +27 -0
  501. data/ext/boost/mpl/integral_c.hpp +51 -0
  502. data/ext/boost/mpl/integral_c_fwd.hpp +32 -0
  503. data/ext/boost/mpl/integral_c_tag.hpp +26 -0
  504. data/ext/boost/mpl/lambda.hpp +29 -0
  505. data/ext/boost/mpl/lambda_fwd.hpp +57 -0
  506. data/ext/boost/mpl/limits/arity.hpp +21 -0
  507. data/ext/boost/mpl/logical.hpp +21 -0
  508. data/ext/boost/mpl/next.hpp +19 -0
  509. data/ext/boost/mpl/next_prior.hpp +49 -0
  510. data/ext/boost/mpl/not.hpp +51 -0
  511. data/ext/boost/mpl/or.hpp +61 -0
  512. data/ext/boost/mpl/placeholders.hpp +100 -0
  513. data/ext/boost/mpl/protect.hpp +55 -0
  514. data/ext/boost/mpl/quote.hpp +140 -0
  515. data/ext/boost/mpl/size_t.hpp +25 -0
  516. data/ext/boost/mpl/size_t_fwd.hpp +28 -0
  517. data/ext/boost/mpl/void.hpp +76 -0
  518. data/ext/boost/mpl/void_fwd.hpp +26 -0
  519. data/ext/boost/next_prior.hpp +51 -0
  520. data/ext/boost/non_type.hpp +27 -0
  521. data/ext/boost/noncopyable.hpp +36 -0
  522. data/ext/boost/none.hpp +28 -0
  523. data/ext/boost/none_t.hpp +24 -0
  524. data/ext/boost/operators.hpp +943 -0
  525. data/ext/boost/optional/optional.hpp +922 -0
  526. data/ext/boost/optional/optional_fwd.hpp +22 -0
  527. data/ext/boost/optional.hpp +18 -0
  528. data/ext/boost/preprocessor/arithmetic/add.hpp +51 -0
  529. data/ext/boost/preprocessor/arithmetic/dec.hpp +288 -0
  530. data/ext/boost/preprocessor/arithmetic/inc.hpp +288 -0
  531. data/ext/boost/preprocessor/arithmetic/sub.hpp +50 -0
  532. data/ext/boost/preprocessor/array/data.hpp +28 -0
  533. data/ext/boost/preprocessor/array/elem.hpp +29 -0
  534. data/ext/boost/preprocessor/array/size.hpp +28 -0
  535. data/ext/boost/preprocessor/cat.hpp +35 -0
  536. data/ext/boost/preprocessor/comma_if.hpp +17 -0
  537. data/ext/boost/preprocessor/config/config.hpp +70 -0
  538. data/ext/boost/preprocessor/control/detail/while.hpp +536 -0
  539. data/ext/boost/preprocessor/control/expr_iif.hpp +31 -0
  540. data/ext/boost/preprocessor/control/if.hpp +30 -0
  541. data/ext/boost/preprocessor/control/iif.hpp +34 -0
  542. data/ext/boost/preprocessor/control/while.hpp +312 -0
  543. data/ext/boost/preprocessor/debug/error.hpp +33 -0
  544. data/ext/boost/preprocessor/detail/auto_rec.hpp +293 -0
  545. data/ext/boost/preprocessor/detail/check.hpp +48 -0
  546. data/ext/boost/preprocessor/detail/is_binary.hpp +30 -0
  547. data/ext/boost/preprocessor/empty.hpp +17 -0
  548. data/ext/boost/preprocessor/enum.hpp +17 -0
  549. data/ext/boost/preprocessor/enum_params.hpp +17 -0
  550. data/ext/boost/preprocessor/facilities/empty.hpp +21 -0
  551. data/ext/boost/preprocessor/facilities/identity.hpp +23 -0
  552. data/ext/boost/preprocessor/identity.hpp +17 -0
  553. data/ext/boost/preprocessor/inc.hpp +17 -0
  554. data/ext/boost/preprocessor/iterate.hpp +17 -0
  555. data/ext/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
  556. data/ext/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
  557. data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
  558. data/ext/boost/preprocessor/iteration/iterate.hpp +82 -0
  559. data/ext/boost/preprocessor/list/adt.hpp +73 -0
  560. data/ext/boost/preprocessor/list/append.hpp +40 -0
  561. data/ext/boost/preprocessor/list/detail/fold_left.hpp +279 -0
  562. data/ext/boost/preprocessor/list/detail/fold_right.hpp +277 -0
  563. data/ext/boost/preprocessor/list/fold_left.hpp +303 -0
  564. data/ext/boost/preprocessor/list/fold_right.hpp +40 -0
  565. data/ext/boost/preprocessor/list/for_each_i.hpp +65 -0
  566. data/ext/boost/preprocessor/list/reverse.hpp +40 -0
  567. data/ext/boost/preprocessor/list/transform.hpp +49 -0
  568. data/ext/boost/preprocessor/logical/and.hpp +30 -0
  569. data/ext/boost/preprocessor/logical/bitand.hpp +38 -0
  570. data/ext/boost/preprocessor/logical/bool.hpp +288 -0
  571. data/ext/boost/preprocessor/logical/compl.hpp +36 -0
  572. data/ext/boost/preprocessor/punctuation/comma.hpp +21 -0
  573. data/ext/boost/preprocessor/punctuation/comma_if.hpp +31 -0
  574. data/ext/boost/preprocessor/repeat.hpp +17 -0
  575. data/ext/boost/preprocessor/repetition/detail/for.hpp +536 -0
  576. data/ext/boost/preprocessor/repetition/enum.hpp +66 -0
  577. data/ext/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
  578. data/ext/boost/preprocessor/repetition/enum_params.hpp +41 -0
  579. data/ext/boost/preprocessor/repetition/for.hpp +306 -0
  580. data/ext/boost/preprocessor/repetition/repeat.hpp +825 -0
  581. data/ext/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
  582. data/ext/boost/preprocessor/seq/elem.hpp +304 -0
  583. data/ext/boost/preprocessor/seq/enum.hpp +288 -0
  584. data/ext/boost/preprocessor/seq/for_each_i.hpp +61 -0
  585. data/ext/boost/preprocessor/seq/seq.hpp +44 -0
  586. data/ext/boost/preprocessor/seq/size.hpp +548 -0
  587. data/ext/boost/preprocessor/slot/detail/def.hpp +49 -0
  588. data/ext/boost/preprocessor/slot/detail/shared.hpp +247 -0
  589. data/ext/boost/preprocessor/slot/slot.hpp +32 -0
  590. data/ext/boost/preprocessor/stringize.hpp +33 -0
  591. data/ext/boost/preprocessor/tuple/eat.hpp +57 -0
  592. data/ext/boost/preprocessor/tuple/elem.hpp +385 -0
  593. data/ext/boost/preprocessor/tuple/rem.hpp +72 -0
  594. data/ext/boost/preprocessor/tuple/to_list.hpp +62 -0
  595. data/ext/boost/range/as_literal.hpp +131 -0
  596. data/ext/boost/range/begin.hpp +132 -0
  597. data/ext/boost/range/config.hpp +54 -0
  598. data/ext/boost/range/const_iterator.hpp +64 -0
  599. data/ext/boost/range/detail/common.hpp +117 -0
  600. data/ext/boost/range/detail/implementation_help.hpp +99 -0
  601. data/ext/boost/range/detail/sfinae.hpp +77 -0
  602. data/ext/boost/range/detail/str_types.hpp +38 -0
  603. data/ext/boost/range/difference_type.hpp +29 -0
  604. data/ext/boost/range/distance.hpp +34 -0
  605. data/ext/boost/range/empty.hpp +34 -0
  606. data/ext/boost/range/end.hpp +131 -0
  607. data/ext/boost/range/functions.hpp +27 -0
  608. data/ext/boost/range/iterator.hpp +72 -0
  609. data/ext/boost/range/iterator_range.hpp +643 -0
  610. data/ext/boost/range/mutable_iterator.hpp +64 -0
  611. data/ext/boost/range/rbegin.hpp +65 -0
  612. data/ext/boost/range/rend.hpp +65 -0
  613. data/ext/boost/range/reverse_iterator.hpp +40 -0
  614. data/ext/boost/range/size.hpp +36 -0
  615. data/ext/boost/range/size_type.hpp +78 -0
  616. data/ext/boost/range/value_type.hpp +34 -0
  617. data/ext/boost/ref.hpp +178 -0
  618. data/ext/boost/shared_ptr.hpp +619 -0
  619. data/ext/boost/src/pthread/exceptions.cpp +146 -0
  620. data/ext/boost/src/pthread/once.cpp +51 -0
  621. data/ext/boost/src/pthread/thread.cpp +709 -0
  622. data/ext/boost/src/pthread/timeconv.inl +130 -0
  623. data/ext/boost/src/tss_null.cpp +34 -0
  624. data/ext/boost/src/win32/exceptions.cpp +124 -0
  625. data/ext/boost/src/win32/thread.cpp +629 -0
  626. data/ext/boost/src/win32/timeconv.inl +130 -0
  627. data/ext/boost/src/win32/tss_dll.cpp +72 -0
  628. data/ext/boost/src/win32/tss_pe.cpp +269 -0
  629. data/ext/boost/static_assert.hpp +122 -0
  630. data/ext/boost/thread/condition.hpp +16 -0
  631. data/ext/boost/thread/condition_variable.hpp +21 -0
  632. data/ext/boost/thread/detail/config.hpp +94 -0
  633. data/ext/boost/thread/detail/move.hpp +33 -0
  634. data/ext/boost/thread/detail/platform.hpp +71 -0
  635. data/ext/boost/thread/exceptions.hpp +109 -0
  636. data/ext/boost/thread/locks.hpp +589 -0
  637. data/ext/boost/thread/mutex.hpp +21 -0
  638. data/ext/boost/thread/once.hpp +29 -0
  639. data/ext/boost/thread/pthread/condition_variable.hpp +184 -0
  640. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +66 -0
  641. data/ext/boost/thread/pthread/mutex.hpp +211 -0
  642. data/ext/boost/thread/pthread/once.hpp +85 -0
  643. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +50 -0
  644. data/ext/boost/thread/pthread/recursive_mutex.hpp +249 -0
  645. data/ext/boost/thread/pthread/thread.hpp +339 -0
  646. data/ext/boost/thread/pthread/thread_data.hpp +102 -0
  647. data/ext/boost/thread/pthread/timespec.hpp +28 -0
  648. data/ext/boost/thread/pthread/tss.hpp +103 -0
  649. data/ext/boost/thread/recursive_mutex.hpp +21 -0
  650. data/ext/boost/thread/thread.hpp +22 -0
  651. data/ext/boost/thread/thread_time.hpp +46 -0
  652. data/ext/boost/thread/tss.hpp +18 -0
  653. data/ext/boost/thread/xtime.hpp +88 -0
  654. data/ext/boost/thread.hpp +21 -0
  655. data/ext/boost/throw_exception.hpp +46 -0
  656. data/ext/boost/token_functions.hpp +621 -0
  657. data/ext/boost/token_iterator.hpp +128 -0
  658. data/ext/boost/tokenizer.hpp +98 -0
  659. data/ext/boost/type.hpp +18 -0
  660. data/ext/boost/type_traits/add_const.hpp +47 -0
  661. data/ext/boost/type_traits/add_pointer.hpp +72 -0
  662. data/ext/boost/type_traits/add_reference.hpp +89 -0
  663. data/ext/boost/type_traits/alignment_of.hpp +100 -0
  664. data/ext/boost/type_traits/broken_compiler_spec.hpp +117 -0
  665. data/ext/boost/type_traits/composite_traits.hpp +29 -0
  666. data/ext/boost/type_traits/config.hpp +76 -0
  667. data/ext/boost/type_traits/conversion_traits.hpp +17 -0
  668. data/ext/boost/type_traits/detail/bool_trait_def.hpp +173 -0
  669. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +27 -0
  670. data/ext/boost/type_traits/detail/cv_traits_impl.hpp +97 -0
  671. data/ext/boost/type_traits/detail/false_result.hpp +28 -0
  672. data/ext/boost/type_traits/detail/ice_and.hpp +35 -0
  673. data/ext/boost/type_traits/detail/ice_eq.hpp +36 -0
  674. data/ext/boost/type_traits/detail/ice_not.hpp +31 -0
  675. data/ext/boost/type_traits/detail/ice_or.hpp +34 -0
  676. data/ext/boost/type_traits/detail/is_function_ptr_helper.hpp +220 -0
  677. data/ext/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +817 -0
  678. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +58 -0
  679. data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +16 -0
  680. data/ext/boost/type_traits/detail/template_arity_spec.hpp +31 -0
  681. data/ext/boost/type_traits/detail/type_trait_def.hpp +61 -0
  682. data/ext/boost/type_traits/detail/type_trait_undef.hpp +19 -0
  683. data/ext/boost/type_traits/detail/yes_no_type.hpp +26 -0
  684. data/ext/boost/type_traits/function_traits.hpp +236 -0
  685. data/ext/boost/type_traits/has_nothrow_copy.hpp +39 -0
  686. data/ext/boost/type_traits/has_trivial_copy.hpp +49 -0
  687. data/ext/boost/type_traits/ice.hpp +20 -0
  688. data/ext/boost/type_traits/integral_constant.hpp +53 -0
  689. data/ext/boost/type_traits/intrinsics.hpp +153 -0
  690. data/ext/boost/type_traits/is_abstract.hpp +144 -0
  691. data/ext/boost/type_traits/is_arithmetic.hpp +43 -0
  692. data/ext/boost/type_traits/is_array.hpp +90 -0
  693. data/ext/boost/type_traits/is_class.hpp +128 -0
  694. data/ext/boost/type_traits/is_const.hpp +142 -0
  695. data/ext/boost/type_traits/is_convertible.hpp +418 -0
  696. data/ext/boost/type_traits/is_enum.hpp +180 -0
  697. data/ext/boost/type_traits/is_float.hpp +27 -0
  698. data/ext/boost/type_traits/is_function.hpp +95 -0
  699. data/ext/boost/type_traits/is_integral.hpp +73 -0
  700. data/ext/boost/type_traits/is_member_function_pointer.hpp +134 -0
  701. data/ext/boost/type_traits/is_member_pointer.hpp +114 -0
  702. data/ext/boost/type_traits/is_pod.hpp +135 -0
  703. data/ext/boost/type_traits/is_pointer.hpp +160 -0
  704. data/ext/boost/type_traits/is_reference.hpp +116 -0
  705. data/ext/boost/type_traits/is_same.hpp +103 -0
  706. data/ext/boost/type_traits/is_scalar.hpp +55 -0
  707. data/ext/boost/type_traits/is_union.hpp +49 -0
  708. data/ext/boost/type_traits/is_void.hpp +33 -0
  709. data/ext/boost/type_traits/is_volatile.hpp +131 -0
  710. data/ext/boost/type_traits/remove_const.hpp +78 -0
  711. data/ext/boost/type_traits/remove_cv.hpp +61 -0
  712. data/ext/boost/type_traits/remove_pointer.hpp +43 -0
  713. data/ext/boost/type_traits/remove_reference.hpp +50 -0
  714. data/ext/boost/type_traits/type_with_alignment.hpp +288 -0
  715. data/ext/boost/utility/addressof.hpp +58 -0
  716. data/ext/boost/utility/base_from_member.hpp +87 -0
  717. data/ext/boost/utility/compare_pointees.hpp +68 -0
  718. data/ext/boost/utility/enable_if.hpp +119 -0
  719. data/ext/boost/utility.hpp +19 -0
  720. data/ext/boost/visit_each.hpp +29 -0
  721. data/ext/boost/weak_ptr.hpp +188 -0
  722. data/ext/common/Application.h +511 -0
  723. data/ext/common/ApplicationPool.h +205 -0
  724. data/ext/common/ApplicationPoolServer.h +794 -0
  725. data/ext/common/ApplicationPoolServerExecutable.cpp +743 -0
  726. data/ext/common/ApplicationPoolStatusReporter.h +336 -0
  727. data/ext/common/Base64.cpp +143 -0
  728. data/ext/common/Base64.h +57 -0
  729. data/ext/common/CachedFileStat.cpp +62 -0
  730. data/ext/common/CachedFileStat.h +51 -0
  731. data/ext/common/CachedFileStat.hpp +243 -0
  732. data/ext/common/DummySpawnManager.h +108 -0
  733. data/ext/common/Exceptions.h +258 -0
  734. data/ext/common/FileChangeChecker.h +209 -0
  735. data/ext/common/Logging.cpp +65 -0
  736. data/ext/common/Logging.h +123 -0
  737. data/ext/common/MessageChannel.h +615 -0
  738. data/ext/common/PoolOptions.h +355 -0
  739. data/ext/common/SpawnManager.h +561 -0
  740. data/ext/common/StandardApplicationPool.h +819 -0
  741. data/ext/common/StaticString.h +148 -0
  742. data/ext/common/StringListCreator.h +83 -0
  743. data/ext/common/SystemTime.cpp +33 -0
  744. data/ext/common/SystemTime.h +88 -0
  745. data/ext/common/Timer.h +90 -0
  746. data/ext/common/Utils.cpp +681 -0
  747. data/ext/common/Utils.h +497 -0
  748. data/ext/common/Version.h +31 -0
  749. data/ext/nginx/Configuration.c +1098 -0
  750. data/ext/nginx/Configuration.h +71 -0
  751. data/ext/nginx/ContentHandler.c +1225 -0
  752. data/ext/nginx/ContentHandler.h +64 -0
  753. data/ext/nginx/HelperServer.cpp +850 -0
  754. data/ext/nginx/HttpStatusExtractor.h +350 -0
  755. data/ext/nginx/ScgiRequestParser.h +317 -0
  756. data/ext/nginx/StaticContentHandler.c +257 -0
  757. data/ext/nginx/StaticContentHandler.h +37 -0
  758. data/ext/nginx/config +45 -0
  759. data/ext/nginx/ngx_http_passenger_module.c +653 -0
  760. data/ext/nginx/ngx_http_passenger_module.h +72 -0
  761. data/ext/oxt/backtrace.cpp +177 -0
  762. data/ext/oxt/backtrace.hpp +135 -0
  763. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  764. data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
  765. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
  766. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  767. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  768. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  769. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  770. data/ext/oxt/macros.hpp +58 -0
  771. data/ext/oxt/spin_lock.hpp +55 -0
  772. data/ext/oxt/system_calls.cpp +340 -0
  773. data/ext/oxt/system_calls.hpp +243 -0
  774. data/ext/oxt/thread.cpp +32 -0
  775. data/ext/oxt/thread.hpp +239 -0
  776. data/ext/oxt/tracable_exception.cpp +87 -0
  777. data/ext/oxt/tracable_exception.hpp +35 -0
  778. data/ext/phusion_passenger/extconf.rb +36 -0
  779. data/ext/phusion_passenger/native_support.c +308 -0
  780. data/generators/colouringcode-passenger/USAGE +1 -0
  781. data/generators/colouringcode-passenger/passenger_template_generator.rb +16 -0
  782. data/generators/colouringcode-passenger/templates/app_exited_during_initialization.html.erb +0 -0
  783. data/generators/colouringcode-passenger/templates/app_init_error.html.erb +0 -0
  784. data/generators/colouringcode-passenger/templates/database_error.html.erb +0 -0
  785. data/generators/colouringcode-passenger/templates/error_layout.html.erb +0 -0
  786. data/generators/colouringcode-passenger/templates/framework_init_error.html.erb +0 -0
  787. data/generators/colouringcode-passenger/templates/general_error.html.erb +0 -0
  788. data/generators/colouringcode-passenger/templates/invalid_app_root.html.erb +0 -0
  789. data/generators/colouringcode-passenger/templates/load_error.html.erb +0 -0
  790. data/generators/colouringcode-passenger/templates/version_not_found.html.erb +0 -0
  791. data/lib/phusion_passenger/abstract_installer.rb +196 -0
  792. data/lib/phusion_passenger/abstract_request_handler.rb +475 -0
  793. data/lib/phusion_passenger/abstract_server.rb +369 -0
  794. data/lib/phusion_passenger/abstract_server_collection.rb +306 -0
  795. data/lib/phusion_passenger/admin_tools/control_process.rb +150 -0
  796. data/lib/phusion_passenger/admin_tools.rb +48 -0
  797. data/lib/phusion_passenger/application.rb +113 -0
  798. data/lib/phusion_passenger/console_text_template.rb +66 -0
  799. data/lib/phusion_passenger/constants.rb +31 -0
  800. data/lib/phusion_passenger/dependencies.rb +393 -0
  801. data/lib/phusion_passenger/events.rb +50 -0
  802. data/lib/phusion_passenger/exceptions.rb +103 -0
  803. data/lib/phusion_passenger/html_template.rb +119 -0
  804. data/lib/phusion_passenger/message_channel.rb +229 -0
  805. data/lib/phusion_passenger/packaging.rb +39 -0
  806. data/lib/phusion_passenger/platform_info.rb +550 -0
  807. data/lib/phusion_passenger/rack/application_spawner.rb +146 -0
  808. data/lib/phusion_passenger/rack/request_handler.rb +125 -0
  809. data/lib/phusion_passenger/railz/application_spawner.rb +386 -0
  810. data/lib/phusion_passenger/railz/cgi_fixed.rb +68 -0
  811. data/lib/phusion_passenger/railz/framework_spawner.rb +334 -0
  812. data/lib/phusion_passenger/railz/request_handler.rb +73 -0
  813. data/lib/phusion_passenger/simple_benchmarking.rb +52 -0
  814. data/lib/phusion_passenger/spawn_manager.rb +372 -0
  815. data/lib/phusion_passenger/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +9 -0
  816. data/lib/phusion_passenger/templates/apache2/config_snippets.txt.erb +13 -0
  817. data/lib/phusion_passenger/templates/apache2/deployment_example.txt.erb +23 -0
  818. data/lib/phusion_passenger/templates/apache2/no_write_permission_to_passenger_root.txt.erb +9 -0
  819. data/lib/phusion_passenger/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  820. data/lib/phusion_passenger/templates/apache2/run_installer_as_root.txt.erb +8 -0
  821. data/lib/phusion_passenger/templates/apache2/welcome.txt.erb +15 -0
  822. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  823. data/lib/phusion_passenger/templates/app_init_error.html.erb +64 -0
  824. data/lib/phusion_passenger/templates/database_error.html.erb +66 -0
  825. data/lib/phusion_passenger/templates/error_layout.css +97 -0
  826. data/lib/phusion_passenger/templates/error_layout.html.erb +39 -0
  827. data/lib/phusion_passenger/templates/framework_init_error.html.erb +39 -0
  828. data/lib/phusion_passenger/templates/general_error.html.erb +22 -0
  829. data/lib/phusion_passenger/templates/invalid_app_root.html.erb +9 -0
  830. data/lib/phusion_passenger/templates/load_error.html.erb +46 -0
  831. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  832. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  833. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  834. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  835. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  836. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  837. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  838. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  839. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  840. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  841. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  842. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  843. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  844. data/lib/phusion_passenger/templates/version_not_found.html.erb +34 -0
  845. data/lib/phusion_passenger/utils.rb +603 -0
  846. data/lib/phusion_passenger/wsgi/application_spawner.rb +104 -0
  847. data/lib/phusion_passenger/wsgi/request_handler.py +199 -0
  848. data/man/passenger-config.1 +29 -0
  849. data/man/passenger-make-enterprisey.8 +23 -0
  850. data/man/passenger-memory-stats.8 +33 -0
  851. data/man/passenger-status.8 +43 -0
  852. data/man/passenger-stress-test.1 +43 -0
  853. data/misc/copy_boost_headers.rb +125 -0
  854. data/misc/find_owner_pipe_leaks.rb +128 -0
  855. data/misc/rake/cplusplus.rb +57 -0
  856. data/misc/rake/extensions.rb +182 -0
  857. data/misc/rake/gempackagetask.rb +99 -0
  858. data/misc/rake/packagetask.rb +186 -0
  859. data/misc/rake/rdoctask.rb +209 -0
  860. data/misc/render_error_pages.rb +116 -0
  861. data/test/ApplicationPoolServerTest.cpp +114 -0
  862. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +33 -0
  863. data/test/ApplicationPoolTest.cpp +599 -0
  864. data/test/Base64Test.cpp +48 -0
  865. data/test/CachedFileStatTest.cpp +402 -0
  866. data/test/CxxTestMain.cpp +143 -0
  867. data/test/FileChangeCheckerTest.cpp +331 -0
  868. data/test/HttpStatusExtractorTest.cpp +198 -0
  869. data/test/MessageChannelTest.cpp +312 -0
  870. data/test/PoolOptionsTest.cpp +117 -0
  871. data/test/ScgiRequestParserTest.cpp +337 -0
  872. data/test/SpawnManagerTest.cpp +64 -0
  873. data/test/StandardApplicationPoolTest.cpp +27 -0
  874. data/test/StaticStringTest.cpp +51 -0
  875. data/test/SystemTimeTest.cpp +37 -0
  876. data/test/UtilsTest.cpp +257 -0
  877. data/test/config.yml.example +30 -0
  878. data/test/integration_tests/apache2_tests.rb +595 -0
  879. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  880. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  881. data/test/integration_tests/mycook_spec.rb +192 -0
  882. data/test/integration_tests/nginx_tests.rb +151 -0
  883. data/test/oxt/backtrace_test.cpp +128 -0
  884. data/test/oxt/oxt_test_main.cpp +25 -0
  885. data/test/oxt/syscall_interruption_test.cpp +38 -0
  886. data/test/ruby/abstract_request_handler_spec.rb +85 -0
  887. data/test/ruby/abstract_server_collection_spec.rb +246 -0
  888. data/test/ruby/abstract_server_spec.rb +51 -0
  889. data/test/ruby/application_spec.rb +43 -0
  890. data/test/ruby/message_channel_spec.rb +170 -0
  891. data/test/ruby/rack/application_spawner_spec.rb +99 -0
  892. data/test/ruby/rails/application_spawner_spec.rb +159 -0
  893. data/test/ruby/rails/framework_spawner_spec.rb +133 -0
  894. data/test/ruby/rails/minimal_spawner_spec.rb +93 -0
  895. data/test/ruby/rails/spawner_error_handling_spec.rb +107 -0
  896. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +97 -0
  897. data/test/ruby/spawn_manager_spec.rb +205 -0
  898. data/test/ruby/spawn_server_spec.rb +26 -0
  899. data/test/ruby/utils_spec.rb +335 -0
  900. data/test/ruby/wsgi/application_spawner_spec.rb +54 -0
  901. data/test/stub/apache2/httpd.conf.erb +81 -0
  902. data/test/stub/apache2/mime.types +748 -0
  903. data/test/stub/garbage1.dat +0 -0
  904. data/test/stub/garbage2.dat +0 -0
  905. data/test/stub/garbage3.dat +0 -0
  906. data/test/stub/http_request.yml +23 -0
  907. data/test/stub/message_channel.rb +9 -0
  908. data/test/stub/message_channel_2.rb +10 -0
  909. data/test/stub/message_channel_3.rb +17 -0
  910. data/test/stub/nginx/koi-utf +109 -0
  911. data/test/stub/nginx/koi-win +103 -0
  912. data/test/stub/nginx/mime.types +70 -0
  913. data/test/stub/nginx/nginx.conf.erb +57 -0
  914. data/test/stub/nginx/win-utf +126 -0
  915. data/test/stub/rack/config.ru +4 -0
  916. data/test/stub/rack/public/rack.jpg +0 -0
  917. data/test/stub/rails_apps/foobar/app/controllers/application.rb +12 -0
  918. data/test/stub/rails_apps/foobar/app/controllers/bar_controller_1.rb +5 -0
  919. data/test/stub/rails_apps/foobar/app/controllers/bar_controller_2.rb +5 -0
  920. data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +21 -0
  921. data/test/stub/rails_apps/foobar/app/helpers/application_helper.rb +3 -0
  922. data/test/stub/rails_apps/foobar/config/boot.rb +108 -0
  923. data/test/stub/rails_apps/foobar/config/database.yml +19 -0
  924. data/test/stub/rails_apps/foobar/config/environment.rb +59 -0
  925. data/test/stub/rails_apps/foobar/config/environments/development.rb +17 -0
  926. data/test/stub/rails_apps/foobar/config/environments/production.rb +18 -0
  927. data/test/stub/rails_apps/foobar/config/initializers/inflections.rb +10 -0
  928. data/test/stub/rails_apps/foobar/config/initializers/mime_types.rb +5 -0
  929. data/test/stub/rails_apps/foobar/config/routes.rb +35 -0
  930. data/test/stub/rails_apps/mycook/app/controllers/application.rb +12 -0
  931. data/test/stub/rails_apps/mycook/app/controllers/recipes_controller.rb +5 -0
  932. data/test/stub/rails_apps/mycook/app/controllers/uploads_controller.rb +15 -0
  933. data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +71 -0
  934. data/test/stub/rails_apps/mycook/app/helpers/application_helper.rb +3 -0
  935. data/test/stub/rails_apps/mycook/app/views/layouts/default.rhtml +26 -0
  936. data/test/stub/rails_apps/mycook/app/views/recipes/create.rhtml +13 -0
  937. data/test/stub/rails_apps/mycook/app/views/recipes/index.rhtml +3 -0
  938. data/test/stub/rails_apps/mycook/app/views/recipes/new.rhtml +8 -0
  939. data/test/stub/rails_apps/mycook/app/views/uploads/index.rhtml +1 -0
  940. data/test/stub/rails_apps/mycook/app/views/uploads/new.html.erb +8 -0
  941. data/test/stub/rails_apps/mycook/app/views/welcome/cached.rhtml +1 -0
  942. data/test/stub/rails_apps/mycook/app/views/welcome/index.rhtml +20 -0
  943. data/test/stub/rails_apps/mycook/config/boot.rb +108 -0
  944. data/test/stub/rails_apps/mycook/config/database.yml +19 -0
  945. data/test/stub/rails_apps/mycook/config/environment.rb +61 -0
  946. data/test/stub/rails_apps/mycook/config/environments/development.rb +18 -0
  947. data/test/stub/rails_apps/mycook/config/environments/production.rb +19 -0
  948. data/test/stub/rails_apps/mycook/config/initializers/inflections.rb +10 -0
  949. data/test/stub/rails_apps/mycook/config/initializers/mime_types.rb +5 -0
  950. data/test/stub/rails_apps/mycook/config/routes.rb +38 -0
  951. data/test/stub/rails_apps/mycook/log/useless.txt +1 -0
  952. data/test/stub/rails_apps/mycook/public/404.html +30 -0
  953. data/test/stub/rails_apps/mycook/public/422.html +30 -0
  954. data/test/stub/rails_apps/mycook/public/500.html +30 -0
  955. data/test/stub/rails_apps/mycook/public/dispatch.cgi +10 -0
  956. data/test/stub/rails_apps/mycook/public/dispatch.fcgi +24 -0
  957. data/test/stub/rails_apps/mycook/public/dispatch.rb +10 -0
  958. data/test/stub/rails_apps/mycook/public/favicon.ico +0 -0
  959. data/test/stub/rails_apps/mycook/public/images/angrywizard.gif +0 -0
  960. data/test/stub/rails_apps/mycook/public/images/cookbook.gif +0 -0
  961. data/test/stub/rails_apps/mycook/public/images/header.png +0 -0
  962. data/test/stub/rails_apps/mycook/public/images/rails.png +0 -0
  963. data/test/stub/rails_apps/mycook/public/javascripts/application.js +2 -0
  964. data/test/stub/rails_apps/mycook/public/javascripts/controls.js +963 -0
  965. data/test/stub/rails_apps/mycook/public/javascripts/dragdrop.js +972 -0
  966. data/test/stub/rails_apps/mycook/public/javascripts/effects.js +1120 -0
  967. data/test/stub/rails_apps/mycook/public/javascripts/prototype.js +4225 -0
  968. data/test/stub/rails_apps/mycook/public/robots.txt +5 -0
  969. data/test/stub/rails_apps/mycook/public/uploads.html +26 -0
  970. data/test/stub/rails_apps/mycook/public/welcome/cached.html +26 -0
  971. data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
  972. data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
  973. data/test/stub/rails_apps/mycook/tmp/cache/useless.txt +1 -0
  974. data/test/stub/rails_apps/mycook/tmp/pids/useless.txt +1 -0
  975. data/test/stub/rails_apps/mycook/tmp/sessions/useless.txt +1 -0
  976. data/test/stub/rails_apps/mycook/tmp/sockets/useless.txt +1 -0
  977. data/test/stub/spawn_server.rb +20 -0
  978. data/test/stub/upload_data.txt +494 -0
  979. data/test/stub/vendor_rails/minimal/README +1 -0
  980. data/test/stub/vendor_rails/minimal/actionmailer/lib/action_mailer.rb +0 -0
  981. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +19 -0
  982. data/test/stub/vendor_rails/minimal/actionpack/lib/action_pack.rb +0 -0
  983. data/test/stub/vendor_rails/minimal/actionpack/lib/action_view.rb +0 -0
  984. data/test/stub/vendor_rails/minimal/activerecord/lib/active_record.rb +7 -0
  985. data/test/stub/vendor_rails/minimal/activeresource/lib/active_resource.rb +0 -0
  986. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support/whiny_nil.rb +0 -0
  987. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support.rb +17 -0
  988. data/test/stub/vendor_rails/minimal/railties/lib/dispatcher.rb +0 -0
  989. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +52 -0
  990. data/test/stub/vendor_rails/minimal/railties/lib/ruby_version_check.rb +1 -0
  991. data/test/stub/wsgi/passenger_wsgi.py +3 -0
  992. data/test/stub/wsgi/public/wsgi-snake.jpg +0 -0
  993. data/test/stub/zsfa/header.png +0 -0
  994. data/test/stub/zsfa/index.html +14 -0
  995. data/test/stub/zsfa/zsfa.png +0 -0
  996. data/test/support/Support.cpp +84 -0
  997. data/test/support/Support.h +118 -0
  998. data/test/support/apache2_controller.rb +250 -0
  999. data/test/support/config.rb +38 -0
  1000. data/test/support/multipart.rb +62 -0
  1001. data/test/support/nginx_controller.rb +98 -0
  1002. data/test/support/run_rspec_tests.rb +10 -0
  1003. data/test/support/test_helper.rb +207 -0
  1004. data/test/support/tut.h +1234 -0
  1005. data/test/support/tut_reporter.h +256 -0
  1006. data/test/support/valgrind.h +2539 -0
  1007. data/vendor/README +13 -0
  1008. data/vendor/README_FOR_PACKAGERS +1 -0
  1009. data/vendor/rack-1.0.0-git/COPYING +18 -0
  1010. data/vendor/rack-1.0.0-git/KNOWN-ISSUES +18 -0
  1011. data/vendor/rack-1.0.0-git/README +353 -0
  1012. data/vendor/rack-1.0.0-git/Rakefile +164 -0
  1013. data/vendor/rack-1.0.0-git/lib/rack/adapter/camping.rb +22 -0
  1014. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/handler.rb +37 -0
  1015. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/request.rb +37 -0
  1016. data/vendor/rack-1.0.0-git/lib/rack/auth/basic.rb +58 -0
  1017. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/md5.rb +124 -0
  1018. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/nonce.rb +51 -0
  1019. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/params.rb +55 -0
  1020. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/request.rb +40 -0
  1021. data/vendor/rack-1.0.0-git/lib/rack/auth/openid.rb +487 -0
  1022. data/vendor/rack-1.0.0-git/lib/rack/builder.rb +63 -0
  1023. data/vendor/rack-1.0.0-git/lib/rack/cascade.rb +41 -0
  1024. data/vendor/rack-1.0.0-git/lib/rack/chunked.rb +49 -0
  1025. data/vendor/rack-1.0.0-git/lib/rack/commonlogger.rb +52 -0
  1026. data/vendor/rack-1.0.0-git/lib/rack/conditionalget.rb +47 -0
  1027. data/vendor/rack-1.0.0-git/lib/rack/content_length.rb +29 -0
  1028. data/vendor/rack-1.0.0-git/lib/rack/content_type.rb +23 -0
  1029. data/vendor/rack-1.0.0-git/lib/rack/deflater.rb +96 -0
  1030. data/vendor/rack-1.0.0-git/lib/rack/directory.rb +153 -0
  1031. data/vendor/rack-1.0.0-git/lib/rack/file.rb +88 -0
  1032. data/vendor/rack-1.0.0-git/lib/rack/handler/cgi.rb +61 -0
  1033. data/vendor/rack-1.0.0-git/lib/rack/handler/evented_mongrel.rb +8 -0
  1034. data/vendor/rack-1.0.0-git/lib/rack/handler/fastcgi.rb +88 -0
  1035. data/vendor/rack-1.0.0-git/lib/rack/handler/lsws.rb +55 -0
  1036. data/vendor/rack-1.0.0-git/lib/rack/handler/mongrel.rb +84 -0
  1037. data/vendor/rack-1.0.0-git/lib/rack/handler/scgi.rb +59 -0
  1038. data/vendor/rack-1.0.0-git/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  1039. data/vendor/rack-1.0.0-git/lib/rack/handler/thin.rb +18 -0
  1040. data/vendor/rack-1.0.0-git/lib/rack/handler/webrick.rb +67 -0
  1041. data/vendor/rack-1.0.0-git/lib/rack/handler.rb +69 -0
  1042. data/vendor/rack-1.0.0-git/lib/rack/head.rb +19 -0
  1043. data/vendor/rack-1.0.0-git/lib/rack/lint.rb +537 -0
  1044. data/vendor/rack-1.0.0-git/lib/rack/lobster.rb +65 -0
  1045. data/vendor/rack-1.0.0-git/lib/rack/lock.rb +16 -0
  1046. data/vendor/rack-1.0.0-git/lib/rack/methodoverride.rb +27 -0
  1047. data/vendor/rack-1.0.0-git/lib/rack/mime.rb +204 -0
  1048. data/vendor/rack-1.0.0-git/lib/rack/mock.rb +184 -0
  1049. data/vendor/rack-1.0.0-git/lib/rack/recursive.rb +57 -0
  1050. data/vendor/rack-1.0.0-git/lib/rack/reloader.rb +106 -0
  1051. data/vendor/rack-1.0.0-git/lib/rack/request.rb +248 -0
  1052. data/vendor/rack-1.0.0-git/lib/rack/response.rb +183 -0
  1053. data/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb +100 -0
  1054. data/vendor/rack-1.0.0-git/lib/rack/session/abstract/id.rb +142 -0
  1055. data/vendor/rack-1.0.0-git/lib/rack/session/cookie.rb +91 -0
  1056. data/vendor/rack-1.0.0-git/lib/rack/session/memcache.rb +109 -0
  1057. data/vendor/rack-1.0.0-git/lib/rack/session/pool.rb +100 -0
  1058. data/vendor/rack-1.0.0-git/lib/rack/showexceptions.rb +349 -0
  1059. data/vendor/rack-1.0.0-git/lib/rack/showstatus.rb +106 -0
  1060. data/vendor/rack-1.0.0-git/lib/rack/static.rb +38 -0
  1061. data/vendor/rack-1.0.0-git/lib/rack/urlmap.rb +55 -0
  1062. data/vendor/rack-1.0.0-git/lib/rack/utils.rb +522 -0
  1063. data/vendor/rack-1.0.0-git/lib/rack.rb +90 -0
  1064. metadata +1152 -0
@@ -0,0 +1,943 @@
1
+ // Boost operators.hpp header file ----------------------------------------//
2
+
3
+ // (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
4
+ // Distributed under the Boost Software License, Version 1.0. (See
5
+ // accompanying file LICENSE_1_0.txt or copy at
6
+ // http://www.boost.org/LICENSE_1_0.txt)
7
+
8
+ // See http://www.boost.org/libs/utility/operators.htm for documentation.
9
+
10
+ // Revision History
11
+ // 24 May 07 Changed empty_base to depend on T, see
12
+ // http://svn.boost.org/trac/boost/ticket/979
13
+ // 21 Oct 02 Modified implementation of operators to allow compilers with a
14
+ // correct named return value optimization (NRVO) to produce optimal
15
+ // code. (Daniel Frey)
16
+ // 02 Dec 01 Bug fixed in random_access_iteratable. (Helmut Zeisel)
17
+ // 28 Sep 01 Factored out iterator operator groups. (Daryle Walker)
18
+ // 27 Aug 01 'left' form for non commutative operators added;
19
+ // additional classes for groups of related operators added;
20
+ // workaround for empty base class optimization
21
+ // bug of GCC 3.0 (Helmut Zeisel)
22
+ // 25 Jun 01 output_iterator_helper changes: removed default template
23
+ // parameters, added support for self-proxying, additional
24
+ // documentation and tests (Aleksey Gurtovoy)
25
+ // 29 May 01 Added operator classes for << and >>. Added input and output
26
+ // iterator helper classes. Added classes to connect equality and
27
+ // relational operators. Added classes for groups of related
28
+ // operators. Reimplemented example operator and iterator helper
29
+ // classes in terms of the new groups. (Daryle Walker, with help
30
+ // from Alexy Gurtovoy)
31
+ // 11 Feb 01 Fixed bugs in the iterator helpers which prevented explicitly
32
+ // supplied arguments from actually being used (Dave Abrahams)
33
+ // 04 Jul 00 Fixed NO_OPERATORS_IN_NAMESPACE bugs, major cleanup and
34
+ // refactoring of compiler workarounds, additional documentation
35
+ // (Alexy Gurtovoy and Mark Rodgers with some help and prompting from
36
+ // Dave Abrahams)
37
+ // 28 Jun 00 General cleanup and integration of bugfixes from Mark Rodgers and
38
+ // Jeremy Siek (Dave Abrahams)
39
+ // 20 Jun 00 Changes to accommodate Borland C++Builder 4 and Borland C++ 5.5
40
+ // (Mark Rodgers)
41
+ // 20 Jun 00 Minor fixes to the prior revision (Aleksey Gurtovoy)
42
+ // 10 Jun 00 Support for the base class chaining technique was added
43
+ // (Aleksey Gurtovoy). See documentation and the comments below
44
+ // for the details.
45
+ // 12 Dec 99 Initial version with iterator operators (Jeremy Siek)
46
+ // 18 Nov 99 Change name "divideable" to "dividable", remove unnecessary
47
+ // specializations of dividable, subtractable, modable (Ed Brey)
48
+ // 17 Nov 99 Add comments (Beman Dawes)
49
+ // Remove unnecessary specialization of operators<> (Ed Brey)
50
+ // 15 Nov 99 Fix less_than_comparable<T,U> second operand type for first two
51
+ // operators.(Beman Dawes)
52
+ // 12 Nov 99 Add operators templates (Ed Brey)
53
+ // 11 Nov 99 Add single template parameter version for compilers without
54
+ // partial specialization (Beman Dawes)
55
+ // 10 Nov 99 Initial version
56
+
57
+ // 10 Jun 00:
58
+ // An additional optional template parameter was added to most of
59
+ // operator templates to support the base class chaining technique (see
60
+ // documentation for the details). Unfortunately, a straightforward
61
+ // implementation of this change would have broken compatibility with the
62
+ // previous version of the library by making it impossible to use the same
63
+ // template name (e.g. 'addable') for both the 1- and 2-argument versions of
64
+ // an operator template. This implementation solves the backward-compatibility
65
+ // issue at the cost of some simplicity.
66
+ //
67
+ // One of the complications is an existence of special auxiliary class template
68
+ // 'is_chained_base<>' (see 'detail' namespace below), which is used
69
+ // to determine whether its template parameter is a library's operator template
70
+ // or not. You have to specialize 'is_chained_base<>' for each new
71
+ // operator template you add to the library.
72
+ //
73
+ // However, most of the non-trivial implementation details are hidden behind
74
+ // several local macros defined below, and as soon as you understand them,
75
+ // you understand the whole library implementation.
76
+
77
+ #ifndef BOOST_OPERATORS_HPP
78
+ #define BOOST_OPERATORS_HPP
79
+
80
+ #include <boost/config.hpp>
81
+ #include <boost/iterator.hpp>
82
+ #include <boost/detail/workaround.hpp>
83
+
84
+ #if defined(__sgi) && !defined(__GNUC__)
85
+ # pragma set woff 1234
86
+ #endif
87
+
88
+ #if defined(BOOST_MSVC)
89
+ # pragma warning( disable : 4284 ) // complaint about return type of
90
+ #endif // operator-> not begin a UDT
91
+
92
+ namespace boost {
93
+ namespace detail {
94
+
95
+ template <typename T> class empty_base {
96
+
97
+ // Helmut Zeisel, empty base class optimization bug with GCC 3.0.0
98
+ #if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==0 && __GNU_PATCHLEVEL__==0
99
+ bool dummy;
100
+ #endif
101
+
102
+ };
103
+
104
+ } // namespace detail
105
+ } // namespace boost
106
+
107
+ // In this section we supply the xxxx1 and xxxx2 forms of the operator
108
+ // templates, which are explicitly targeted at the 1-type-argument and
109
+ // 2-type-argument operator forms, respectively. Some compilers get confused
110
+ // when inline friend functions are overloaded in namespaces other than the
111
+ // global namespace. When BOOST_NO_OPERATORS_IN_NAMESPACE is defined, all of
112
+ // these templates must go in the global namespace.
113
+
114
+ #ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
115
+ namespace boost
116
+ {
117
+ #endif
118
+
119
+ // Basic operator classes (contributed by Dave Abrahams) ------------------//
120
+
121
+ // Note that friend functions defined in a class are implicitly inline.
122
+ // See the C++ std, 11.4 [class.friend] paragraph 5
123
+
124
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
125
+ struct less_than_comparable2 : B
126
+ {
127
+ friend bool operator<=(const T& x, const U& y) { return !(x > y); }
128
+ friend bool operator>=(const T& x, const U& y) { return !(x < y); }
129
+ friend bool operator>(const U& x, const T& y) { return y < x; }
130
+ friend bool operator<(const U& x, const T& y) { return y > x; }
131
+ friend bool operator<=(const U& x, const T& y) { return !(y < x); }
132
+ friend bool operator>=(const U& x, const T& y) { return !(y > x); }
133
+ };
134
+
135
+ template <class T, class B = ::boost::detail::empty_base<T> >
136
+ struct less_than_comparable1 : B
137
+ {
138
+ friend bool operator>(const T& x, const T& y) { return y < x; }
139
+ friend bool operator<=(const T& x, const T& y) { return !(y < x); }
140
+ friend bool operator>=(const T& x, const T& y) { return !(x < y); }
141
+ };
142
+
143
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
144
+ struct equality_comparable2 : B
145
+ {
146
+ friend bool operator==(const U& y, const T& x) { return x == y; }
147
+ friend bool operator!=(const U& y, const T& x) { return !(x == y); }
148
+ friend bool operator!=(const T& y, const U& x) { return !(y == x); }
149
+ };
150
+
151
+ template <class T, class B = ::boost::detail::empty_base<T> >
152
+ struct equality_comparable1 : B
153
+ {
154
+ friend bool operator!=(const T& x, const T& y) { return !(x == y); }
155
+ };
156
+
157
+ // A macro which produces "name_2left" from "name".
158
+ #define BOOST_OPERATOR2_LEFT(name) name##2##_##left
159
+
160
+ // NRVO-friendly implementation (contributed by Daniel Frey) ---------------//
161
+
162
+ #if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
163
+
164
+ // This is the optimal implementation for ISO/ANSI C++,
165
+ // but it requires the compiler to implement the NRVO.
166
+ // If the compiler has no NRVO, this is the best symmetric
167
+ // implementation available.
168
+
169
+ #define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP ) \
170
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
171
+ struct NAME##2 : B \
172
+ { \
173
+ friend T operator OP( const T& lhs, const U& rhs ) \
174
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
175
+ friend T operator OP( const U& lhs, const T& rhs ) \
176
+ { T nrv( rhs ); nrv OP##= lhs; return nrv; } \
177
+ }; \
178
+ \
179
+ template <class T, class B = ::boost::detail::empty_base<T> > \
180
+ struct NAME##1 : B \
181
+ { \
182
+ friend T operator OP( const T& lhs, const T& rhs ) \
183
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
184
+ };
185
+
186
+ #define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP ) \
187
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
188
+ struct NAME##2 : B \
189
+ { \
190
+ friend T operator OP( const T& lhs, const U& rhs ) \
191
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
192
+ }; \
193
+ \
194
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
195
+ struct BOOST_OPERATOR2_LEFT(NAME) : B \
196
+ { \
197
+ friend T operator OP( const U& lhs, const T& rhs ) \
198
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
199
+ }; \
200
+ \
201
+ template <class T, class B = ::boost::detail::empty_base<T> > \
202
+ struct NAME##1 : B \
203
+ { \
204
+ friend T operator OP( const T& lhs, const T& rhs ) \
205
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
206
+ };
207
+
208
+ #else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
209
+
210
+ // For compilers without NRVO the following code is optimal, but not
211
+ // symmetric! Note that the implementation of
212
+ // BOOST_OPERATOR2_LEFT(NAME) only looks cool, but doesn't provide
213
+ // optimization opportunities to the compiler :)
214
+
215
+ #define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP ) \
216
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
217
+ struct NAME##2 : B \
218
+ { \
219
+ friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
220
+ friend T operator OP( const U& lhs, T rhs ) { return rhs OP##= lhs; } \
221
+ }; \
222
+ \
223
+ template <class T, class B = ::boost::detail::empty_base<T> > \
224
+ struct NAME##1 : B \
225
+ { \
226
+ friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
227
+ };
228
+
229
+ #define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP ) \
230
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
231
+ struct NAME##2 : B \
232
+ { \
233
+ friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
234
+ }; \
235
+ \
236
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
237
+ struct BOOST_OPERATOR2_LEFT(NAME) : B \
238
+ { \
239
+ friend T operator OP( const U& lhs, const T& rhs ) \
240
+ { return T( lhs ) OP##= rhs; } \
241
+ }; \
242
+ \
243
+ template <class T, class B = ::boost::detail::empty_base<T> > \
244
+ struct NAME##1 : B \
245
+ { \
246
+ friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
247
+ };
248
+
249
+ #endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
250
+
251
+ BOOST_BINARY_OPERATOR_COMMUTATIVE( multipliable, * )
252
+ BOOST_BINARY_OPERATOR_COMMUTATIVE( addable, + )
253
+ BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( subtractable, - )
254
+ BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( dividable, / )
255
+ BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( modable, % )
256
+ BOOST_BINARY_OPERATOR_COMMUTATIVE( xorable, ^ )
257
+ BOOST_BINARY_OPERATOR_COMMUTATIVE( andable, & )
258
+ BOOST_BINARY_OPERATOR_COMMUTATIVE( orable, | )
259
+
260
+ #undef BOOST_BINARY_OPERATOR_COMMUTATIVE
261
+ #undef BOOST_BINARY_OPERATOR_NON_COMMUTATIVE
262
+ #undef BOOST_OPERATOR2_LEFT
263
+
264
+ // incrementable and decrementable contributed by Jeremy Siek
265
+
266
+ template <class T, class B = ::boost::detail::empty_base<T> >
267
+ struct incrementable : B
268
+ {
269
+ friend T operator++(T& x, int)
270
+ {
271
+ incrementable_type nrv(x);
272
+ ++x;
273
+ return nrv;
274
+ }
275
+ private: // The use of this typedef works around a Borland bug
276
+ typedef T incrementable_type;
277
+ };
278
+
279
+ template <class T, class B = ::boost::detail::empty_base<T> >
280
+ struct decrementable : B
281
+ {
282
+ friend T operator--(T& x, int)
283
+ {
284
+ decrementable_type nrv(x);
285
+ --x;
286
+ return nrv;
287
+ }
288
+ private: // The use of this typedef works around a Borland bug
289
+ typedef T decrementable_type;
290
+ };
291
+
292
+ // Iterator operator classes (contributed by Jeremy Siek) ------------------//
293
+
294
+ template <class T, class P, class B = ::boost::detail::empty_base<T> >
295
+ struct dereferenceable : B
296
+ {
297
+ P operator->() const
298
+ {
299
+ return &*static_cast<const T&>(*this);
300
+ }
301
+ };
302
+
303
+ template <class T, class I, class R, class B = ::boost::detail::empty_base<T> >
304
+ struct indexable : B
305
+ {
306
+ R operator[](I n) const
307
+ {
308
+ return *(static_cast<const T&>(*this) + n);
309
+ }
310
+ };
311
+
312
+ // More operator classes (contributed by Daryle Walker) --------------------//
313
+ // (NRVO-friendly implementation contributed by Daniel Frey) ---------------//
314
+
315
+ #if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
316
+
317
+ #define BOOST_BINARY_OPERATOR( NAME, OP ) \
318
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
319
+ struct NAME##2 : B \
320
+ { \
321
+ friend T operator OP( const T& lhs, const U& rhs ) \
322
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
323
+ }; \
324
+ \
325
+ template <class T, class B = ::boost::detail::empty_base<T> > \
326
+ struct NAME##1 : B \
327
+ { \
328
+ friend T operator OP( const T& lhs, const T& rhs ) \
329
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
330
+ };
331
+
332
+ #else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
333
+
334
+ #define BOOST_BINARY_OPERATOR( NAME, OP ) \
335
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
336
+ struct NAME##2 : B \
337
+ { \
338
+ friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
339
+ }; \
340
+ \
341
+ template <class T, class B = ::boost::detail::empty_base<T> > \
342
+ struct NAME##1 : B \
343
+ { \
344
+ friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
345
+ };
346
+
347
+ #endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
348
+
349
+ BOOST_BINARY_OPERATOR( left_shiftable, << )
350
+ BOOST_BINARY_OPERATOR( right_shiftable, >> )
351
+
352
+ #undef BOOST_BINARY_OPERATOR
353
+
354
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
355
+ struct equivalent2 : B
356
+ {
357
+ friend bool operator==(const T& x, const U& y)
358
+ {
359
+ return !(x < y) && !(x > y);
360
+ }
361
+ };
362
+
363
+ template <class T, class B = ::boost::detail::empty_base<T> >
364
+ struct equivalent1 : B
365
+ {
366
+ friend bool operator==(const T&x, const T&y)
367
+ {
368
+ return !(x < y) && !(y < x);
369
+ }
370
+ };
371
+
372
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
373
+ struct partially_ordered2 : B
374
+ {
375
+ friend bool operator<=(const T& x, const U& y)
376
+ { return (x < y) || (x == y); }
377
+ friend bool operator>=(const T& x, const U& y)
378
+ { return (x > y) || (x == y); }
379
+ friend bool operator>(const U& x, const T& y)
380
+ { return y < x; }
381
+ friend bool operator<(const U& x, const T& y)
382
+ { return y > x; }
383
+ friend bool operator<=(const U& x, const T& y)
384
+ { return (y > x) || (y == x); }
385
+ friend bool operator>=(const U& x, const T& y)
386
+ { return (y < x) || (y == x); }
387
+ };
388
+
389
+ template <class T, class B = ::boost::detail::empty_base<T> >
390
+ struct partially_ordered1 : B
391
+ {
392
+ friend bool operator>(const T& x, const T& y)
393
+ { return y < x; }
394
+ friend bool operator<=(const T& x, const T& y)
395
+ { return (x < y) || (x == y); }
396
+ friend bool operator>=(const T& x, const T& y)
397
+ { return (y < x) || (x == y); }
398
+ };
399
+
400
+ // Combined operator classes (contributed by Daryle Walker) ----------------//
401
+
402
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
403
+ struct totally_ordered2
404
+ : less_than_comparable2<T, U
405
+ , equality_comparable2<T, U, B
406
+ > > {};
407
+
408
+ template <class T, class B = ::boost::detail::empty_base<T> >
409
+ struct totally_ordered1
410
+ : less_than_comparable1<T
411
+ , equality_comparable1<T, B
412
+ > > {};
413
+
414
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
415
+ struct additive2
416
+ : addable2<T, U
417
+ , subtractable2<T, U, B
418
+ > > {};
419
+
420
+ template <class T, class B = ::boost::detail::empty_base<T> >
421
+ struct additive1
422
+ : addable1<T
423
+ , subtractable1<T, B
424
+ > > {};
425
+
426
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
427
+ struct multiplicative2
428
+ : multipliable2<T, U
429
+ , dividable2<T, U, B
430
+ > > {};
431
+
432
+ template <class T, class B = ::boost::detail::empty_base<T> >
433
+ struct multiplicative1
434
+ : multipliable1<T
435
+ , dividable1<T, B
436
+ > > {};
437
+
438
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
439
+ struct integer_multiplicative2
440
+ : multiplicative2<T, U
441
+ , modable2<T, U, B
442
+ > > {};
443
+
444
+ template <class T, class B = ::boost::detail::empty_base<T> >
445
+ struct integer_multiplicative1
446
+ : multiplicative1<T
447
+ , modable1<T, B
448
+ > > {};
449
+
450
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
451
+ struct arithmetic2
452
+ : additive2<T, U
453
+ , multiplicative2<T, U, B
454
+ > > {};
455
+
456
+ template <class T, class B = ::boost::detail::empty_base<T> >
457
+ struct arithmetic1
458
+ : additive1<T
459
+ , multiplicative1<T, B
460
+ > > {};
461
+
462
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
463
+ struct integer_arithmetic2
464
+ : additive2<T, U
465
+ , integer_multiplicative2<T, U, B
466
+ > > {};
467
+
468
+ template <class T, class B = ::boost::detail::empty_base<T> >
469
+ struct integer_arithmetic1
470
+ : additive1<T
471
+ , integer_multiplicative1<T, B
472
+ > > {};
473
+
474
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
475
+ struct bitwise2
476
+ : xorable2<T, U
477
+ , andable2<T, U
478
+ , orable2<T, U, B
479
+ > > > {};
480
+
481
+ template <class T, class B = ::boost::detail::empty_base<T> >
482
+ struct bitwise1
483
+ : xorable1<T
484
+ , andable1<T
485
+ , orable1<T, B
486
+ > > > {};
487
+
488
+ template <class T, class B = ::boost::detail::empty_base<T> >
489
+ struct unit_steppable
490
+ : incrementable<T
491
+ , decrementable<T, B
492
+ > > {};
493
+
494
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
495
+ struct shiftable2
496
+ : left_shiftable2<T, U
497
+ , right_shiftable2<T, U, B
498
+ > > {};
499
+
500
+ template <class T, class B = ::boost::detail::empty_base<T> >
501
+ struct shiftable1
502
+ : left_shiftable1<T
503
+ , right_shiftable1<T, B
504
+ > > {};
505
+
506
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
507
+ struct ring_operators2
508
+ : additive2<T, U
509
+ , subtractable2_left<T, U
510
+ , multipliable2<T, U, B
511
+ > > > {};
512
+
513
+ template <class T, class B = ::boost::detail::empty_base<T> >
514
+ struct ring_operators1
515
+ : additive1<T
516
+ , multipliable1<T, B
517
+ > > {};
518
+
519
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
520
+ struct ordered_ring_operators2
521
+ : ring_operators2<T, U
522
+ , totally_ordered2<T, U, B
523
+ > > {};
524
+
525
+ template <class T, class B = ::boost::detail::empty_base<T> >
526
+ struct ordered_ring_operators1
527
+ : ring_operators1<T
528
+ , totally_ordered1<T, B
529
+ > > {};
530
+
531
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
532
+ struct field_operators2
533
+ : ring_operators2<T, U
534
+ , dividable2<T, U
535
+ , dividable2_left<T, U, B
536
+ > > > {};
537
+
538
+ template <class T, class B = ::boost::detail::empty_base<T> >
539
+ struct field_operators1
540
+ : ring_operators1<T
541
+ , dividable1<T, B
542
+ > > {};
543
+
544
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
545
+ struct ordered_field_operators2
546
+ : field_operators2<T, U
547
+ , totally_ordered2<T, U, B
548
+ > > {};
549
+
550
+ template <class T, class B = ::boost::detail::empty_base<T> >
551
+ struct ordered_field_operators1
552
+ : field_operators1<T
553
+ , totally_ordered1<T, B
554
+ > > {};
555
+
556
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
557
+ struct euclidian_ring_operators2
558
+ : ring_operators2<T, U
559
+ , dividable2<T, U
560
+ , dividable2_left<T, U
561
+ , modable2<T, U
562
+ , modable2_left<T, U, B
563
+ > > > > > {};
564
+
565
+ template <class T, class B = ::boost::detail::empty_base<T> >
566
+ struct euclidian_ring_operators1
567
+ : ring_operators1<T
568
+ , dividable1<T
569
+ , modable1<T, B
570
+ > > > {};
571
+
572
+ template <class T, class U, class B = ::boost::detail::empty_base<T> >
573
+ struct ordered_euclidian_ring_operators2
574
+ : totally_ordered2<T, U
575
+ , euclidian_ring_operators2<T, U, B
576
+ > > {};
577
+
578
+ template <class T, class B = ::boost::detail::empty_base<T> >
579
+ struct ordered_euclidian_ring_operators1
580
+ : totally_ordered1<T
581
+ , euclidian_ring_operators1<T, B
582
+ > > {};
583
+
584
+ template <class T, class P, class B = ::boost::detail::empty_base<T> >
585
+ struct input_iteratable
586
+ : equality_comparable1<T
587
+ , incrementable<T
588
+ , dereferenceable<T, P, B
589
+ > > > {};
590
+
591
+ template <class T, class B = ::boost::detail::empty_base<T> >
592
+ struct output_iteratable
593
+ : incrementable<T, B
594
+ > {};
595
+
596
+ template <class T, class P, class B = ::boost::detail::empty_base<T> >
597
+ struct forward_iteratable
598
+ : input_iteratable<T, P, B
599
+ > {};
600
+
601
+ template <class T, class P, class B = ::boost::detail::empty_base<T> >
602
+ struct bidirectional_iteratable
603
+ : forward_iteratable<T, P
604
+ , decrementable<T, B
605
+ > > {};
606
+
607
+ // To avoid repeated derivation from equality_comparable,
608
+ // which is an indirect base class of bidirectional_iterable,
609
+ // random_access_iteratable must not be derived from totally_ordered1
610
+ // but from less_than_comparable1 only. (Helmut Zeisel, 02-Dec-2001)
611
+ template <class T, class P, class D, class R, class B = ::boost::detail::empty_base<T> >
612
+ struct random_access_iteratable
613
+ : bidirectional_iteratable<T, P
614
+ , less_than_comparable1<T
615
+ , additive2<T, D
616
+ , indexable<T, D, R, B
617
+ > > > > {};
618
+
619
+ #ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
620
+ } // namespace boost
621
+ #endif // BOOST_NO_OPERATORS_IN_NAMESPACE
622
+
623
+
624
+ // BOOST_IMPORT_TEMPLATE1 .. BOOST_IMPORT_TEMPLATE4 -
625
+ //
626
+ // When BOOST_NO_OPERATORS_IN_NAMESPACE is defined we need a way to import an
627
+ // operator template into the boost namespace. BOOST_IMPORT_TEMPLATE1 is used
628
+ // for one-argument forms of operator templates; BOOST_IMPORT_TEMPLATE2 for
629
+ // two-argument forms. Note that these macros expect to be invoked from within
630
+ // boost.
631
+
632
+ #ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
633
+
634
+ // The template is already in boost so we have nothing to do.
635
+ # define BOOST_IMPORT_TEMPLATE4(template_name)
636
+ # define BOOST_IMPORT_TEMPLATE3(template_name)
637
+ # define BOOST_IMPORT_TEMPLATE2(template_name)
638
+ # define BOOST_IMPORT_TEMPLATE1(template_name)
639
+
640
+ #else // BOOST_NO_OPERATORS_IN_NAMESPACE
641
+
642
+ # ifndef BOOST_NO_USING_TEMPLATE
643
+
644
+ // Bring the names in with a using-declaration
645
+ // to avoid stressing the compiler.
646
+ # define BOOST_IMPORT_TEMPLATE4(template_name) using ::template_name;
647
+ # define BOOST_IMPORT_TEMPLATE3(template_name) using ::template_name;
648
+ # define BOOST_IMPORT_TEMPLATE2(template_name) using ::template_name;
649
+ # define BOOST_IMPORT_TEMPLATE1(template_name) using ::template_name;
650
+
651
+ # else
652
+
653
+ // Otherwise, because a Borland C++ 5.5 bug prevents a using declaration
654
+ // from working, we are forced to use inheritance for that compiler.
655
+ # define BOOST_IMPORT_TEMPLATE4(template_name) \
656
+ template <class T, class U, class V, class W, class B = ::boost::detail::empty_base<T> > \
657
+ struct template_name : ::template_name<T, U, V, W, B> {};
658
+
659
+ # define BOOST_IMPORT_TEMPLATE3(template_name) \
660
+ template <class T, class U, class V, class B = ::boost::detail::empty_base<T> > \
661
+ struct template_name : ::template_name<T, U, V, B> {};
662
+
663
+ # define BOOST_IMPORT_TEMPLATE2(template_name) \
664
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
665
+ struct template_name : ::template_name<T, U, B> {};
666
+
667
+ # define BOOST_IMPORT_TEMPLATE1(template_name) \
668
+ template <class T, class B = ::boost::detail::empty_base<T> > \
669
+ struct template_name : ::template_name<T, B> {};
670
+
671
+ # endif // BOOST_NO_USING_TEMPLATE
672
+
673
+ #endif // BOOST_NO_OPERATORS_IN_NAMESPACE
674
+
675
+ //
676
+ // Here's where we put it all together, defining the xxxx forms of the templates
677
+ // in namespace boost. We also define specializations of is_chained_base<> for
678
+ // the xxxx, xxxx1, and xxxx2 templates, importing them into boost:: as
679
+ // necessary.
680
+ //
681
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
682
+
683
+ // is_chained_base<> - a traits class used to distinguish whether an operator
684
+ // template argument is being used for base class chaining, or is specifying a
685
+ // 2nd argument type.
686
+
687
+ namespace boost {
688
+ // A type parameter is used instead of a plain bool because Borland's compiler
689
+ // didn't cope well with the more obvious non-type template parameter.
690
+ namespace detail {
691
+ struct true_t {};
692
+ struct false_t {};
693
+ } // namespace detail
694
+
695
+ // Unspecialized version assumes that most types are not being used for base
696
+ // class chaining. We specialize for the operator templates defined in this
697
+ // library.
698
+ template<class T> struct is_chained_base {
699
+ typedef ::boost::detail::false_t value;
700
+ };
701
+
702
+ } // namespace boost
703
+
704
+ // Import a 4-type-argument operator template into boost (if necessary) and
705
+ // provide a specialization of 'is_chained_base<>' for it.
706
+ # define BOOST_OPERATOR_TEMPLATE4(template_name4) \
707
+ BOOST_IMPORT_TEMPLATE4(template_name4) \
708
+ template<class T, class U, class V, class W, class B> \
709
+ struct is_chained_base< ::boost::template_name4<T, U, V, W, B> > { \
710
+ typedef ::boost::detail::true_t value; \
711
+ };
712
+
713
+ // Import a 3-type-argument operator template into boost (if necessary) and
714
+ // provide a specialization of 'is_chained_base<>' for it.
715
+ # define BOOST_OPERATOR_TEMPLATE3(template_name3) \
716
+ BOOST_IMPORT_TEMPLATE3(template_name3) \
717
+ template<class T, class U, class V, class B> \
718
+ struct is_chained_base< ::boost::template_name3<T, U, V, B> > { \
719
+ typedef ::boost::detail::true_t value; \
720
+ };
721
+
722
+ // Import a 2-type-argument operator template into boost (if necessary) and
723
+ // provide a specialization of 'is_chained_base<>' for it.
724
+ # define BOOST_OPERATOR_TEMPLATE2(template_name2) \
725
+ BOOST_IMPORT_TEMPLATE2(template_name2) \
726
+ template<class T, class U, class B> \
727
+ struct is_chained_base< ::boost::template_name2<T, U, B> > { \
728
+ typedef ::boost::detail::true_t value; \
729
+ };
730
+
731
+ // Import a 1-type-argument operator template into boost (if necessary) and
732
+ // provide a specialization of 'is_chained_base<>' for it.
733
+ # define BOOST_OPERATOR_TEMPLATE1(template_name1) \
734
+ BOOST_IMPORT_TEMPLATE1(template_name1) \
735
+ template<class T, class B> \
736
+ struct is_chained_base< ::boost::template_name1<T, B> > { \
737
+ typedef ::boost::detail::true_t value; \
738
+ };
739
+
740
+ // BOOST_OPERATOR_TEMPLATE(template_name) defines template_name<> such that it
741
+ // can be used for specifying both 1-argument and 2-argument forms. Requires the
742
+ // existence of two previously defined class templates named '<template_name>1'
743
+ // and '<template_name>2' which must implement the corresponding 1- and 2-
744
+ // argument forms.
745
+ //
746
+ // The template type parameter O == is_chained_base<U>::value is used to
747
+ // distinguish whether the 2nd argument to <template_name> is being used for
748
+ // base class chaining from another boost operator template or is describing a
749
+ // 2nd operand type. O == true_t only when U is actually an another operator
750
+ // template from the library. Partial specialization is used to select an
751
+ // implementation in terms of either '<template_name>1' or '<template_name>2'.
752
+ //
753
+
754
+ # define BOOST_OPERATOR_TEMPLATE(template_name) \
755
+ template <class T \
756
+ ,class U = T \
757
+ ,class B = ::boost::detail::empty_base<T> \
758
+ ,class O = typename is_chained_base<U>::value \
759
+ > \
760
+ struct template_name : template_name##2<T, U, B> {}; \
761
+ \
762
+ template<class T, class U, class B> \
763
+ struct template_name<T, U, B, ::boost::detail::true_t> \
764
+ : template_name##1<T, U> {}; \
765
+ \
766
+ template <class T, class B> \
767
+ struct template_name<T, T, B, ::boost::detail::false_t> \
768
+ : template_name##1<T, B> {}; \
769
+ \
770
+ template<class T, class U, class B, class O> \
771
+ struct is_chained_base< ::boost::template_name<T, U, B, O> > { \
772
+ typedef ::boost::detail::true_t value; \
773
+ }; \
774
+ \
775
+ BOOST_OPERATOR_TEMPLATE2(template_name##2) \
776
+ BOOST_OPERATOR_TEMPLATE1(template_name##1)
777
+
778
+
779
+ #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
780
+
781
+ # define BOOST_OPERATOR_TEMPLATE4(template_name4) \
782
+ BOOST_IMPORT_TEMPLATE4(template_name4)
783
+ # define BOOST_OPERATOR_TEMPLATE3(template_name3) \
784
+ BOOST_IMPORT_TEMPLATE3(template_name3)
785
+ # define BOOST_OPERATOR_TEMPLATE2(template_name2) \
786
+ BOOST_IMPORT_TEMPLATE2(template_name2)
787
+ # define BOOST_OPERATOR_TEMPLATE1(template_name1) \
788
+ BOOST_IMPORT_TEMPLATE1(template_name1)
789
+
790
+ // In this case we can only assume that template_name<> is equivalent to the
791
+ // more commonly needed template_name1<> form.
792
+ # define BOOST_OPERATOR_TEMPLATE(template_name) \
793
+ template <class T, class B = ::boost::detail::empty_base<T> > \
794
+ struct template_name : template_name##1<T, B> {};
795
+
796
+ #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
797
+
798
+ namespace boost {
799
+
800
+ BOOST_OPERATOR_TEMPLATE(less_than_comparable)
801
+ BOOST_OPERATOR_TEMPLATE(equality_comparable)
802
+ BOOST_OPERATOR_TEMPLATE(multipliable)
803
+ BOOST_OPERATOR_TEMPLATE(addable)
804
+ BOOST_OPERATOR_TEMPLATE(subtractable)
805
+ BOOST_OPERATOR_TEMPLATE2(subtractable2_left)
806
+ BOOST_OPERATOR_TEMPLATE(dividable)
807
+ BOOST_OPERATOR_TEMPLATE2(dividable2_left)
808
+ BOOST_OPERATOR_TEMPLATE(modable)
809
+ BOOST_OPERATOR_TEMPLATE2(modable2_left)
810
+ BOOST_OPERATOR_TEMPLATE(xorable)
811
+ BOOST_OPERATOR_TEMPLATE(andable)
812
+ BOOST_OPERATOR_TEMPLATE(orable)
813
+
814
+ BOOST_OPERATOR_TEMPLATE1(incrementable)
815
+ BOOST_OPERATOR_TEMPLATE1(decrementable)
816
+
817
+ BOOST_OPERATOR_TEMPLATE2(dereferenceable)
818
+ BOOST_OPERATOR_TEMPLATE3(indexable)
819
+
820
+ BOOST_OPERATOR_TEMPLATE(left_shiftable)
821
+ BOOST_OPERATOR_TEMPLATE(right_shiftable)
822
+ BOOST_OPERATOR_TEMPLATE(equivalent)
823
+ BOOST_OPERATOR_TEMPLATE(partially_ordered)
824
+
825
+ BOOST_OPERATOR_TEMPLATE(totally_ordered)
826
+ BOOST_OPERATOR_TEMPLATE(additive)
827
+ BOOST_OPERATOR_TEMPLATE(multiplicative)
828
+ BOOST_OPERATOR_TEMPLATE(integer_multiplicative)
829
+ BOOST_OPERATOR_TEMPLATE(arithmetic)
830
+ BOOST_OPERATOR_TEMPLATE(integer_arithmetic)
831
+ BOOST_OPERATOR_TEMPLATE(bitwise)
832
+ BOOST_OPERATOR_TEMPLATE1(unit_steppable)
833
+ BOOST_OPERATOR_TEMPLATE(shiftable)
834
+ BOOST_OPERATOR_TEMPLATE(ring_operators)
835
+ BOOST_OPERATOR_TEMPLATE(ordered_ring_operators)
836
+ BOOST_OPERATOR_TEMPLATE(field_operators)
837
+ BOOST_OPERATOR_TEMPLATE(ordered_field_operators)
838
+ BOOST_OPERATOR_TEMPLATE(euclidian_ring_operators)
839
+ BOOST_OPERATOR_TEMPLATE(ordered_euclidian_ring_operators)
840
+ BOOST_OPERATOR_TEMPLATE2(input_iteratable)
841
+ BOOST_OPERATOR_TEMPLATE1(output_iteratable)
842
+ BOOST_OPERATOR_TEMPLATE2(forward_iteratable)
843
+ BOOST_OPERATOR_TEMPLATE2(bidirectional_iteratable)
844
+ BOOST_OPERATOR_TEMPLATE4(random_access_iteratable)
845
+
846
+ #undef BOOST_OPERATOR_TEMPLATE
847
+ #undef BOOST_OPERATOR_TEMPLATE4
848
+ #undef BOOST_OPERATOR_TEMPLATE3
849
+ #undef BOOST_OPERATOR_TEMPLATE2
850
+ #undef BOOST_OPERATOR_TEMPLATE1
851
+ #undef BOOST_IMPORT_TEMPLATE1
852
+ #undef BOOST_IMPORT_TEMPLATE2
853
+ #undef BOOST_IMPORT_TEMPLATE3
854
+ #undef BOOST_IMPORT_TEMPLATE4
855
+
856
+ // The following 'operators' classes can only be used portably if the derived class
857
+ // declares ALL of the required member operators.
858
+ template <class T, class U>
859
+ struct operators2
860
+ : totally_ordered2<T,U
861
+ , integer_arithmetic2<T,U
862
+ , bitwise2<T,U
863
+ > > > {};
864
+
865
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
866
+ template <class T, class U = T>
867
+ struct operators : operators2<T, U> {};
868
+
869
+ template <class T> struct operators<T, T>
870
+ #else
871
+ template <class T> struct operators
872
+ #endif
873
+ : totally_ordered<T
874
+ , integer_arithmetic<T
875
+ , bitwise<T
876
+ , unit_steppable<T
877
+ > > > > {};
878
+
879
+ // Iterator helper classes (contributed by Jeremy Siek) -------------------//
880
+ // (Input and output iterator helpers contributed by Daryle Walker) -------//
881
+ // (Changed to use combined operator classes by Daryle Walker) ------------//
882
+ template <class T,
883
+ class V,
884
+ class D = std::ptrdiff_t,
885
+ class P = V const *,
886
+ class R = V const &>
887
+ struct input_iterator_helper
888
+ : input_iteratable<T, P
889
+ , boost::iterator<std::input_iterator_tag, V, D, P, R
890
+ > > {};
891
+
892
+ template<class T>
893
+ struct output_iterator_helper
894
+ : output_iteratable<T
895
+ , boost::iterator<std::output_iterator_tag, void, void, void, void
896
+ > >
897
+ {
898
+ T& operator*() { return static_cast<T&>(*this); }
899
+ T& operator++() { return static_cast<T&>(*this); }
900
+ };
901
+
902
+ template <class T,
903
+ class V,
904
+ class D = std::ptrdiff_t,
905
+ class P = V*,
906
+ class R = V&>
907
+ struct forward_iterator_helper
908
+ : forward_iteratable<T, P
909
+ , boost::iterator<std::forward_iterator_tag, V, D, P, R
910
+ > > {};
911
+
912
+ template <class T,
913
+ class V,
914
+ class D = std::ptrdiff_t,
915
+ class P = V*,
916
+ class R = V&>
917
+ struct bidirectional_iterator_helper
918
+ : bidirectional_iteratable<T, P
919
+ , boost::iterator<std::bidirectional_iterator_tag, V, D, P, R
920
+ > > {};
921
+
922
+ template <class T,
923
+ class V,
924
+ class D = std::ptrdiff_t,
925
+ class P = V*,
926
+ class R = V&>
927
+ struct random_access_iterator_helper
928
+ : random_access_iteratable<T, P, D, R
929
+ , boost::iterator<std::random_access_iterator_tag, V, D, P, R
930
+ > >
931
+ {
932
+ friend D requires_difference_operator(const T& x, const T& y) {
933
+ return x - y;
934
+ }
935
+ }; // random_access_iterator_helper
936
+
937
+ } // namespace boost
938
+
939
+ #if defined(__sgi) && !defined(__GNUC__)
940
+ #pragma reset woff 1234
941
+ #endif
942
+
943
+ #endif // BOOST_OPERATORS_HPP