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,1205 @@
1
+ #ifndef BOOST_LEXICAL_CAST_INCLUDED
2
+ #define BOOST_LEXICAL_CAST_INCLUDED
3
+
4
+ // Boost lexical_cast.hpp header -------------------------------------------//
5
+ //
6
+ // See http://www.boost.org/libs/conversion for documentation.
7
+ // See end of this header for rights and permissions.
8
+ //
9
+ // what: lexical_cast custom keyword cast
10
+ // who: contributed by Kevlin Henney,
11
+ // enhanced with contributions from Terje Slettebo,
12
+ // with additional fixes and suggestions from Gennaro Prota,
13
+ // Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
14
+ // Alexander Nasonov and other Boosters
15
+ // when: November 2000, March 2003, June 2005, June 2006
16
+
17
+ #include <climits>
18
+ #include <cstddef>
19
+ #include <istream>
20
+ #include <locale>
21
+ #include <string>
22
+ #include <typeinfo>
23
+ #include <boost/config.hpp>
24
+ #include <boost/limits.hpp>
25
+ #include <boost/mpl/if.hpp>
26
+ #include <boost/throw_exception.hpp>
27
+ #include <boost/type_traits/is_pointer.hpp>
28
+ #include <boost/call_traits.hpp>
29
+ #include <boost/static_assert.hpp>
30
+ #include <boost/detail/lcast_precision.hpp>
31
+
32
+ #ifdef BOOST_NO_STRINGSTREAM
33
+ #include <strstream>
34
+ #else
35
+ #include <sstream>
36
+ #endif
37
+
38
+ #if defined(BOOST_NO_STRINGSTREAM) || \
39
+ defined(BOOST_NO_STD_WSTRING) || \
40
+ defined(BOOST_NO_STD_LOCALE)
41
+ #define DISABLE_WIDE_CHAR_SUPPORT
42
+ #endif
43
+
44
+ namespace boost
45
+ {
46
+ // exception used to indicate runtime lexical_cast failure
47
+ class bad_lexical_cast : public std::bad_cast
48
+ {
49
+ public:
50
+ bad_lexical_cast() :
51
+ source(&typeid(void)), target(&typeid(void))
52
+ {
53
+ }
54
+ bad_lexical_cast(
55
+ const std::type_info &source_type_arg,
56
+ const std::type_info &target_type_arg) :
57
+ source(&source_type_arg), target(&target_type_arg)
58
+ {
59
+ }
60
+ const std::type_info &source_type() const
61
+ {
62
+ return *source;
63
+ }
64
+ const std::type_info &target_type() const
65
+ {
66
+ return *target;
67
+ }
68
+ virtual const char *what() const throw()
69
+ {
70
+ return "bad lexical cast: "
71
+ "source type value could not be interpreted as target";
72
+ }
73
+ virtual ~bad_lexical_cast() throw()
74
+ {
75
+ }
76
+ private:
77
+ const std::type_info *source;
78
+ const std::type_info *target;
79
+ };
80
+
81
+ namespace detail // selectors for choosing stream character type
82
+ {
83
+ template<typename Type>
84
+ struct stream_char
85
+ {
86
+ typedef char type;
87
+ };
88
+
89
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
90
+ template<class CharT, class Traits, class Alloc>
91
+ struct stream_char< std::basic_string<CharT,Traits,Alloc> >
92
+ {
93
+ typedef CharT type;
94
+ };
95
+ #endif
96
+
97
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
98
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
99
+ template<>
100
+ struct stream_char<wchar_t>
101
+ {
102
+ typedef wchar_t type;
103
+ };
104
+ #endif
105
+
106
+ template<>
107
+ struct stream_char<wchar_t *>
108
+ {
109
+ typedef wchar_t type;
110
+ };
111
+
112
+ template<>
113
+ struct stream_char<const wchar_t *>
114
+ {
115
+ typedef wchar_t type;
116
+ };
117
+
118
+ #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
119
+ template<>
120
+ struct stream_char<std::wstring>
121
+ {
122
+ typedef wchar_t type;
123
+ };
124
+ #endif
125
+ #endif
126
+
127
+ template<typename TargetChar, typename SourceChar>
128
+ struct widest_char
129
+ {
130
+ typedef TargetChar type;
131
+ };
132
+
133
+ template<>
134
+ struct widest_char<char, wchar_t>
135
+ {
136
+ typedef wchar_t type;
137
+ };
138
+ }
139
+
140
+ namespace detail // deduce_char_traits template
141
+ {
142
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
143
+ template<class CharT, class Target, class Source>
144
+ struct deduce_char_traits
145
+ {
146
+ typedef std::char_traits<CharT> type;
147
+ };
148
+
149
+ template<class CharT, class Traits, class Alloc, class Source>
150
+ struct deduce_char_traits< CharT
151
+ , std::basic_string<CharT,Traits,Alloc>
152
+ , Source
153
+ >
154
+ {
155
+ typedef Traits type;
156
+ };
157
+
158
+ template<class CharT, class Target, class Traits, class Alloc>
159
+ struct deduce_char_traits< CharT
160
+ , Target
161
+ , std::basic_string<CharT,Traits,Alloc>
162
+ >
163
+ {
164
+ typedef Traits type;
165
+ };
166
+
167
+ template<class CharT, class Traits, class Alloc1, class Alloc2>
168
+ struct deduce_char_traits< CharT
169
+ , std::basic_string<CharT,Traits,Alloc1>
170
+ , std::basic_string<CharT,Traits,Alloc2>
171
+ >
172
+ {
173
+ typedef Traits type;
174
+ };
175
+ #endif
176
+ }
177
+
178
+ namespace detail // lcast_src_length
179
+ {
180
+ // Return max. length of string representation of Source;
181
+ // 0 if unlimited (with exceptions for some types, see below).
182
+ // Values with limited string representation are placed to
183
+ // the buffer locally defined in lexical_cast function.
184
+ // 1 is returned for few types such as CharT const* or
185
+ // std::basic_string<CharT> that already have an internal
186
+ // buffer ready to be reused by lexical_stream_limited_src.
187
+ // Each specialization should have a correspondent operator<<
188
+ // defined in lexical_stream_limited_src.
189
+ template< class CharT // A result of widest_char transformation.
190
+ , class Source // Source type of lexical_cast.
191
+ >
192
+ struct lcast_src_length
193
+ {
194
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
195
+ // To check coverage, build the test with
196
+ // bjam --v2 profile optimization=off
197
+ static void check_coverage() {}
198
+ };
199
+
200
+ template<>
201
+ struct lcast_src_length<char, bool>
202
+ {
203
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
204
+ static void check_coverage() {}
205
+ };
206
+
207
+ template<>
208
+ struct lcast_src_length<char, char>
209
+ {
210
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
211
+ static void check_coverage() {}
212
+ };
213
+
214
+ // No specializations for:
215
+ // lcast_src_length<char, signed char>
216
+ // lcast_src_length<char, unsigned char>
217
+ // lcast_src_length<char, signed char*>
218
+ // lcast_src_length<char, unsigned char*>
219
+ // lcast_src_length<char, signed char const*>
220
+ // lcast_src_length<char, unsigned char const*>
221
+
222
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
223
+ template<>
224
+ struct lcast_src_length<wchar_t, bool>
225
+ {
226
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
227
+ static void check_coverage() {}
228
+ };
229
+
230
+ template<>
231
+ struct lcast_src_length<wchar_t, char>
232
+ {
233
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
234
+ static void check_coverage() {}
235
+ };
236
+
237
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
238
+ template<>
239
+ struct lcast_src_length<wchar_t, wchar_t>
240
+ {
241
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
242
+ static void check_coverage() {}
243
+ };
244
+ #endif
245
+ #endif
246
+
247
+ template<>
248
+ struct lcast_src_length<char, char const*>
249
+ {
250
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
251
+ static void check_coverage() {}
252
+ };
253
+
254
+ template<>
255
+ struct lcast_src_length<char, char*>
256
+ {
257
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
258
+ static void check_coverage() {}
259
+ };
260
+
261
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
262
+ template<>
263
+ struct lcast_src_length<wchar_t, wchar_t const*>
264
+ {
265
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
266
+ static void check_coverage() {}
267
+ };
268
+
269
+ template<>
270
+ struct lcast_src_length<wchar_t, wchar_t*>
271
+ {
272
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
273
+ static void check_coverage() {}
274
+ };
275
+ #endif
276
+
277
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
278
+ template<class CharT, class Traits, class Alloc>
279
+ struct lcast_src_length< CharT, std::basic_string<CharT,Traits,Alloc> >
280
+ {
281
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
282
+ static void check_coverage() {}
283
+ };
284
+ #else
285
+ template<>
286
+ struct lcast_src_length< char, std::basic_string<char> >
287
+ {
288
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
289
+ static void check_coverage() {}
290
+ };
291
+
292
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
293
+ template<>
294
+ struct lcast_src_length< wchar_t, std::basic_string<wchar_t> >
295
+ {
296
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
297
+ static void check_coverage() {}
298
+ };
299
+ #endif
300
+ #endif
301
+
302
+ // Helper for integral types.
303
+ // Notes on length calculation:
304
+ // Max length for 32bit int with grouping "\1" and thousands_sep ',':
305
+ // "-2,1,4,7,4,8,3,6,4,7"
306
+ // ^ - is_signed
307
+ // ^ - 1 digit not counted by digits10
308
+ // ^^^^^^^^^^^^^^^^^^ - digits10 * 2
309
+ //
310
+ // Constant is_specialized is used instead of constant 1
311
+ // to prevent buffer overflow in a rare case when
312
+ // <boost/limits.hpp> doesn't add missing specialization for
313
+ // numeric_limits<T> for some integral type T.
314
+ // When is_specialized is false, the whole expression is 0.
315
+ template<class Source>
316
+ struct lcast_src_length_integral
317
+ {
318
+ #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
319
+ BOOST_STATIC_CONSTANT(std::size_t, value =
320
+ std::numeric_limits<Source>::is_signed +
321
+ std::numeric_limits<Source>::is_specialized + // == 1
322
+ std::numeric_limits<Source>::digits10 * 2
323
+ );
324
+ #else
325
+ BOOST_STATIC_CONSTANT(std::size_t, value = 156);
326
+ BOOST_STATIC_ASSERT(sizeof(Source) * CHAR_BIT <= 256);
327
+ #endif
328
+ };
329
+
330
+ #define BOOST_AUX_LEXICAL_CAST_DEF1(CharT, T) template<> \
331
+ struct lcast_src_length<CharT, T> : lcast_src_length_integral<T> \
332
+ { static void check_coverage() {} };
333
+
334
+ #ifdef DISABLE_WIDE_CHAR_SUPPORT
335
+ #define BOOST_AUX_LEXICAL_CAST_DEF(T) BOOST_AUX_LEXICAL_CAST_DEF1(char, T)
336
+ #else
337
+ #define BOOST_AUX_LEXICAL_CAST_DEF(T) \
338
+ BOOST_AUX_LEXICAL_CAST_DEF1(char, T) \
339
+ BOOST_AUX_LEXICAL_CAST_DEF1(wchar_t, T)
340
+ #endif
341
+
342
+ BOOST_AUX_LEXICAL_CAST_DEF(short)
343
+ BOOST_AUX_LEXICAL_CAST_DEF(unsigned short)
344
+ BOOST_AUX_LEXICAL_CAST_DEF(int)
345
+ BOOST_AUX_LEXICAL_CAST_DEF(unsigned int)
346
+ BOOST_AUX_LEXICAL_CAST_DEF(long)
347
+ BOOST_AUX_LEXICAL_CAST_DEF(unsigned long)
348
+ #if defined(BOOST_HAS_LONG_LONG)
349
+ BOOST_AUX_LEXICAL_CAST_DEF(boost::ulong_long_type)
350
+ BOOST_AUX_LEXICAL_CAST_DEF(boost::long_long_type )
351
+ #elif defined(BOOST_HAS_MS_INT64)
352
+ BOOST_AUX_LEXICAL_CAST_DEF(unsigned __int64)
353
+ BOOST_AUX_LEXICAL_CAST_DEF( __int64)
354
+ #endif
355
+
356
+ #undef BOOST_AUX_LEXICAL_CAST_DEF
357
+ #undef BOOST_AUX_LEXICAL_CAST_DEF1
358
+
359
+ #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
360
+ // Helper for floating point types.
361
+ // -1.23456789e-123456
362
+ // ^ sign
363
+ // ^ leading digit
364
+ // ^ decimal point
365
+ // ^^^^^^^^ lcast_precision<Source>::value
366
+ // ^ "e"
367
+ // ^ exponent sign
368
+ // ^^^^^^ exponent (assumed 6 or less digits)
369
+ // sign + leading digit + decimal point + "e" + exponent sign == 5
370
+ template<class Source>
371
+ struct lcast_src_length_floating
372
+ {
373
+ BOOST_STATIC_ASSERT(
374
+ std::numeric_limits<Source>::max_exponent10 <= 999999L &&
375
+ std::numeric_limits<Source>::min_exponent10 >= -999999L
376
+ );
377
+ BOOST_STATIC_CONSTANT(std::size_t, value =
378
+ 5 + lcast_precision<Source>::value + 6
379
+ );
380
+ };
381
+
382
+ template<>
383
+ struct lcast_src_length<char,float>
384
+ : lcast_src_length_floating<float>
385
+ {
386
+ static void check_coverage() {}
387
+ };
388
+
389
+ template<>
390
+ struct lcast_src_length<char,double>
391
+ : lcast_src_length_floating<double>
392
+ {
393
+ static void check_coverage() {}
394
+ };
395
+
396
+ template<>
397
+ struct lcast_src_length<char,long double>
398
+ : lcast_src_length_floating<long double>
399
+ {
400
+ static void check_coverage() {}
401
+ };
402
+
403
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
404
+ template<>
405
+ struct lcast_src_length<wchar_t,float>
406
+ : lcast_src_length_floating<float>
407
+ {
408
+ static void check_coverage() {}
409
+ };
410
+
411
+ template<>
412
+ struct lcast_src_length<wchar_t,double>
413
+ : lcast_src_length_floating<double>
414
+ {
415
+ static void check_coverage() {}
416
+ };
417
+
418
+ template<>
419
+ struct lcast_src_length<wchar_t,long double>
420
+ : lcast_src_length_floating<long double>
421
+ {
422
+ static void check_coverage() {}
423
+ };
424
+
425
+ #endif // #ifndef DISABLE_WIDE_CHAR_SUPPORT
426
+ #endif // #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
427
+ }
428
+
429
+ namespace detail // '0' and '-' constants
430
+ {
431
+ template<typename CharT> struct lcast_char_constants;
432
+
433
+ template<>
434
+ struct lcast_char_constants<char>
435
+ {
436
+ BOOST_STATIC_CONSTANT(char, zero = '0');
437
+ BOOST_STATIC_CONSTANT(char, minus = '-');
438
+ };
439
+
440
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
441
+ template<>
442
+ struct lcast_char_constants<wchar_t>
443
+ {
444
+ BOOST_STATIC_CONSTANT(wchar_t, zero = L'0');
445
+ BOOST_STATIC_CONSTANT(wchar_t, minus = L'-');
446
+ };
447
+ #endif
448
+ }
449
+
450
+ namespace detail // lexical_streambuf_fake
451
+ {
452
+ struct lexical_streambuf_fake
453
+ {
454
+ };
455
+ }
456
+
457
+ namespace detail // lcast_to_unsigned
458
+ {
459
+ #if (defined _MSC_VER)
460
+ # pragma warning( push )
461
+ // C4146: unary minus operator applied to unsigned type, result still unsigned
462
+ # pragma warning( disable : 4146 )
463
+ #endif
464
+
465
+ inline unsigned int lcast_to_unsigned(int value)
466
+ {
467
+ unsigned int uval = value;
468
+ return value < 0 ? -uval : uval;
469
+ }
470
+
471
+ inline unsigned long lcast_to_unsigned(long value)
472
+ {
473
+ unsigned long uval = value;
474
+ return value < 0 ? -uval : uval;
475
+ }
476
+
477
+ #if defined(BOOST_HAS_LONG_LONG)
478
+ inline boost::ulong_long_type lcast_to_unsigned(boost::long_long_type v)
479
+ {
480
+ boost::ulong_long_type uval = v;
481
+ return v < 0 ? -uval : uval;
482
+ }
483
+ #elif defined(BOOST_HAS_MS_INT64)
484
+ inline unsigned __int64 lcast_to_unsigned(__int64 value)
485
+ {
486
+ unsigned __int64 uval = value;
487
+ return value < 0 ? -uval : uval;
488
+ }
489
+ #endif
490
+
491
+ #if (defined _MSC_VER)
492
+ # pragma warning( pop ) // C4146: unary minus operator applied to unsigned type,
493
+ // result still unsigned
494
+ #endif
495
+ }
496
+
497
+ namespace detail // lcast_put_unsigned
498
+ {
499
+ template<class Traits, class T, class CharT>
500
+ CharT* lcast_put_unsigned(T n, CharT* finish)
501
+ {
502
+ #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
503
+ BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
504
+ #endif
505
+ CharT thousands_sep = 0;
506
+
507
+ #ifdef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
508
+ char const* grouping = "";
509
+ std::size_t const grouping_size = 0;
510
+ #else
511
+ std::locale loc;
512
+ typedef std::numpunct<CharT> numpunct;
513
+ numpunct const& np = BOOST_USE_FACET(numpunct, loc);
514
+ std::string const& grouping = np.grouping();
515
+ std::string::size_type const grouping_size = grouping.size();
516
+
517
+ if(grouping_size)
518
+ thousands_sep = np.thousands_sep();
519
+ #endif
520
+
521
+ std::string::size_type group = 0; // current group number
522
+ char last_grp_size = grouping[0] <= 0 ? CHAR_MAX : grouping[0];
523
+ // a) Since grouping is const, grouping[grouping.size()] returns 0.
524
+ // b) It's safe to assume here and below that CHAR_MAX
525
+ // is equivalent to unlimited grouping:
526
+ #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
527
+ BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
528
+ #endif
529
+ typedef typename Traits::int_type int_type;
530
+ CharT const czero = lcast_char_constants<CharT>::zero;
531
+ int_type const zero = Traits::to_int_type(czero);
532
+
533
+ char left = last_grp_size;
534
+
535
+ do
536
+ {
537
+ if(left == 0)
538
+ {
539
+ ++group;
540
+ if(group < grouping_size)
541
+ {
542
+ char const grp_size = grouping[group];
543
+ last_grp_size = grp_size <= 0 ? CHAR_MAX : grp_size;
544
+ }
545
+
546
+ left = last_grp_size;
547
+ --finish;
548
+ Traits::assign(*finish, thousands_sep);
549
+ }
550
+
551
+ --left;
552
+ --finish;
553
+ int_type const digit = static_cast<int_type>(n % 10U);
554
+ Traits::assign(*finish, Traits::to_char_type(zero + digit));
555
+ n /= 10;
556
+ } while(n);
557
+
558
+ return finish;
559
+ }
560
+ }
561
+
562
+ namespace detail // stream wrapper for handling lexical conversions
563
+ {
564
+ template<typename Target, typename Source, typename Traits>
565
+ class lexical_stream
566
+ {
567
+ private:
568
+ typedef typename widest_char<
569
+ typename stream_char<Target>::type,
570
+ typename stream_char<Source>::type>::type char_type;
571
+
572
+ typedef Traits traits_type;
573
+
574
+ public:
575
+ lexical_stream(char_type* = 0, char_type* = 0)
576
+ {
577
+ stream.unsetf(std::ios::skipws);
578
+ lcast_set_precision(stream, (Source*)0, (Target*)0);
579
+ }
580
+ ~lexical_stream()
581
+ {
582
+ #if defined(BOOST_NO_STRINGSTREAM)
583
+ stream.freeze(false);
584
+ #endif
585
+ }
586
+ bool operator<<(const Source &input)
587
+ {
588
+ return !(stream << input).fail();
589
+ }
590
+ template<typename InputStreamable>
591
+ bool operator>>(InputStreamable &output)
592
+ {
593
+ return !is_pointer<InputStreamable>::value &&
594
+ stream >> output &&
595
+ stream.get() ==
596
+ #if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
597
+ // GCC 2.9x lacks std::char_traits<>::eof().
598
+ // We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
599
+ // configurations, which do provide std::char_traits<>::eof().
600
+
601
+ EOF;
602
+ #else
603
+ traits_type::eof();
604
+ #endif
605
+ }
606
+
607
+ #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
608
+
609
+ bool operator>>(std::string &output)
610
+ {
611
+ #if defined(BOOST_NO_STRINGSTREAM)
612
+ stream << '\0';
613
+ #endif
614
+ stream.str().swap(output);
615
+ return true;
616
+ }
617
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
618
+ bool operator>>(std::wstring &output)
619
+ {
620
+ stream.str().swap(output);
621
+ return true;
622
+ }
623
+ #endif
624
+
625
+ #else
626
+ bool operator>>(std::basic_string<char_type,traits_type>& output)
627
+ {
628
+ stream.str().swap(output);
629
+ return true;
630
+ }
631
+
632
+ template<class Alloc>
633
+ bool operator>>(std::basic_string<char_type,traits_type,Alloc>& out)
634
+ {
635
+ std::basic_string<char_type,traits_type> str(stream.str());
636
+ out.assign(str.begin(), str.end());
637
+ return true;
638
+ }
639
+ #endif
640
+ private:
641
+ #if defined(BOOST_NO_STRINGSTREAM)
642
+ std::strstream stream;
643
+ #elif defined(BOOST_NO_STD_LOCALE)
644
+ std::stringstream stream;
645
+ #else
646
+ std::basic_stringstream<char_type,traits_type> stream;
647
+ #endif
648
+ };
649
+ }
650
+
651
+ namespace detail // optimized stream wrapper
652
+ {
653
+ // String representation of Source has an upper limit.
654
+ template< class CharT // a result of widest_char transformation
655
+ , class Base // lexical_streambuf_fake or basic_streambuf<CharT>
656
+ , class Traits // usually char_traits<CharT>
657
+ >
658
+ class lexical_stream_limited_src : public Base
659
+ {
660
+ // A string representation of Source is written to [start, finish).
661
+ // Currently, it is assumed that [start, finish) is big enough
662
+ // to hold a string representation of any Source value.
663
+ CharT* start;
664
+ CharT* finish;
665
+
666
+ private:
667
+
668
+ static void widen_and_assign(char*p, char ch)
669
+ {
670
+ Traits::assign(*p, ch);
671
+ }
672
+
673
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
674
+ static void widen_and_assign(wchar_t* p, char ch)
675
+ {
676
+ std::locale loc;
677
+ wchar_t w = BOOST_USE_FACET(std::ctype<wchar_t>, loc).widen(ch);
678
+ Traits::assign(*p, w);
679
+ }
680
+
681
+ static void widen_and_assign(wchar_t* p, wchar_t ch)
682
+ {
683
+ Traits::assign(*p, ch);
684
+ }
685
+
686
+ static void widen_and_assign(char*, wchar_t ch); // undefined
687
+ #endif
688
+
689
+ template<class OutputStreamable>
690
+ bool lcast_put(const OutputStreamable& input)
691
+ {
692
+ this->setp(start, finish);
693
+ std::basic_ostream<CharT> stream(static_cast<Base*>(this));
694
+ lcast_set_precision(stream, (OutputStreamable*)0);
695
+ bool const result = !(stream << input).fail();
696
+ finish = this->pptr();
697
+ return result;
698
+ }
699
+
700
+ // Undefined:
701
+ lexical_stream_limited_src(lexical_stream_limited_src const&);
702
+ void operator=(lexical_stream_limited_src const&);
703
+
704
+ public:
705
+
706
+ lexical_stream_limited_src(CharT* start, CharT* finish)
707
+ : start(start)
708
+ , finish(finish)
709
+ {}
710
+
711
+ public: // output
712
+
713
+ template<class Alloc>
714
+ bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str)
715
+ {
716
+ start = const_cast<CharT*>(str.data());
717
+ finish = start + str.length();
718
+ return true;
719
+ }
720
+
721
+ bool operator<<(bool);
722
+ bool operator<<(char);
723
+ #if !defined(DISABLE_WIDE_CHAR_SUPPORT) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
724
+ bool operator<<(wchar_t);
725
+ #endif
726
+ bool operator<<(CharT const*);
727
+ bool operator<<(short);
728
+ bool operator<<(int);
729
+ bool operator<<(long);
730
+ bool operator<<(unsigned short);
731
+ bool operator<<(unsigned int);
732
+ bool operator<<(unsigned long);
733
+ #if defined(BOOST_HAS_LONG_LONG)
734
+ bool operator<<(boost::ulong_long_type);
735
+ bool operator<<(boost::long_long_type );
736
+ #elif defined(BOOST_HAS_MS_INT64)
737
+ bool operator<<(unsigned __int64);
738
+ bool operator<<( __int64);
739
+ #endif
740
+ // These three operators use ostream and streambuf.
741
+ // lcast_streambuf_for_source<T>::value is true.
742
+ bool operator<<(float);
743
+ bool operator<<(double);
744
+ bool operator<<(long double);
745
+
746
+ public: // input
747
+
748
+ // Generic istream-based algorithm.
749
+ // lcast_streambuf_for_target<InputStreamable>::value is true.
750
+ template<typename InputStreamable>
751
+ bool operator>>(InputStreamable& output)
752
+ {
753
+ #if (defined _MSC_VER)
754
+ # pragma warning( push )
755
+ // conditional expression is constant
756
+ # pragma warning( disable : 4127 )
757
+ #endif
758
+ if(is_pointer<InputStreamable>::value)
759
+ return false;
760
+
761
+ this->setg(start, start, finish);
762
+ std::basic_istream<CharT> stream(static_cast<Base*>(this));
763
+ stream.unsetf(std::ios::skipws);
764
+ lcast_set_precision(stream, (InputStreamable*)0);
765
+ #if (defined _MSC_VER)
766
+ # pragma warning( pop )
767
+ #endif
768
+ return stream >> output &&
769
+ stream.get() ==
770
+ #if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
771
+ // GCC 2.9x lacks std::char_traits<>::eof().
772
+ // We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
773
+ // configurations, which do provide std::char_traits<>::eof().
774
+
775
+ EOF;
776
+ #else
777
+ Traits::eof();
778
+ #endif
779
+ }
780
+
781
+ bool operator>>(CharT&);
782
+
783
+ #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
784
+ // This #if is in sync with lcast_streambuf_for_target
785
+
786
+ bool operator>>(std::string&);
787
+
788
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
789
+ bool operator>>(std::wstring&);
790
+ #endif
791
+
792
+ #else
793
+ template<class Alloc>
794
+ bool operator>>(std::basic_string<CharT,Traits,Alloc>& str)
795
+ {
796
+ str.assign(start, finish);
797
+ return true;
798
+ }
799
+ #endif
800
+ };
801
+
802
+ template<typename CharT, class Base, class Traits>
803
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
804
+ bool value)
805
+ {
806
+ typedef typename Traits::int_type int_type;
807
+ CharT const czero = lcast_char_constants<CharT>::zero;
808
+ int_type const zero = Traits::to_int_type(czero);
809
+ Traits::assign(*start, Traits::to_char_type(zero + value));
810
+ finish = start + 1;
811
+ return true;
812
+ }
813
+
814
+ template<typename CharT, class Base, class Traits>
815
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
816
+ char ch)
817
+ {
818
+ widen_and_assign(start, ch);
819
+ finish = start + 1;
820
+ return true;
821
+ }
822
+
823
+ #if !defined(DISABLE_WIDE_CHAR_SUPPORT) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
824
+ template<typename CharT, class Base, class Traits>
825
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
826
+ wchar_t ch)
827
+ {
828
+ widen_and_assign(start, ch);
829
+ finish = start + 1;
830
+ return true;
831
+ }
832
+ #endif
833
+
834
+ template<typename CharT, class Base, class Traits>
835
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
836
+ short n)
837
+ {
838
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
839
+ if(n < 0)
840
+ {
841
+ --start;
842
+ CharT const minus = lcast_char_constants<CharT>::minus;
843
+ Traits::assign(*start, minus);
844
+ }
845
+ return true;
846
+ }
847
+
848
+ template<typename CharT, class Base, class Traits>
849
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
850
+ int n)
851
+ {
852
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
853
+ if(n < 0)
854
+ {
855
+ --start;
856
+ CharT const minus = lcast_char_constants<CharT>::minus;
857
+ Traits::assign(*start, minus);
858
+ }
859
+ return true;
860
+ }
861
+
862
+ template<typename CharT, class Base, class Traits>
863
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
864
+ long n)
865
+ {
866
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
867
+ if(n < 0)
868
+ {
869
+ --start;
870
+ CharT const minus = lcast_char_constants<CharT>::minus;
871
+ Traits::assign(*start, minus);
872
+ }
873
+ return true;
874
+ }
875
+
876
+ #if defined(BOOST_HAS_LONG_LONG)
877
+ template<typename CharT, class Base, class Traits>
878
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
879
+ boost::long_long_type n)
880
+ {
881
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
882
+ if(n < 0)
883
+ {
884
+ --start;
885
+ CharT const minus = lcast_char_constants<CharT>::minus;
886
+ Traits::assign(*start, minus);
887
+ }
888
+ return true;
889
+ }
890
+ #elif defined(BOOST_HAS_MS_INT64)
891
+ template<typename CharT, class Base, class Traits>
892
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
893
+ __int64 n)
894
+ {
895
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
896
+ if(n < 0)
897
+ {
898
+ --start;
899
+ CharT const minus = lcast_char_constants<CharT>::minus;
900
+ Traits::assign(*start, minus);
901
+ }
902
+ return true;
903
+ }
904
+ #endif
905
+
906
+ template<typename CharT, class Base, class Traits>
907
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
908
+ unsigned short n)
909
+ {
910
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
911
+ return true;
912
+ }
913
+
914
+ template<typename CharT, class Base, class Traits>
915
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
916
+ unsigned int n)
917
+ {
918
+ start = lcast_put_unsigned<Traits>(n, finish);
919
+ return true;
920
+ }
921
+
922
+ template<typename CharT, class Base, class Traits>
923
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
924
+ unsigned long n)
925
+ {
926
+ start = lcast_put_unsigned<Traits>(n, finish);
927
+ return true;
928
+ }
929
+
930
+ #if defined(BOOST_HAS_LONG_LONG)
931
+ template<typename CharT, class Base, class Traits>
932
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
933
+ boost::ulong_long_type n)
934
+ {
935
+ start = lcast_put_unsigned<Traits>(n, finish);
936
+ return true;
937
+ }
938
+ #elif defined(BOOST_HAS_MS_INT64)
939
+ template<typename CharT, class Base, class Traits>
940
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
941
+ unsigned __int64 n)
942
+ {
943
+ start = lcast_put_unsigned<Traits>(n, finish);
944
+ return true;
945
+ }
946
+ #endif
947
+
948
+ template<typename CharT, class Base, class Traits>
949
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
950
+ float val)
951
+ {
952
+ return this->lcast_put(val);
953
+ }
954
+
955
+ template<typename CharT, class Base, class Traits>
956
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
957
+ double val)
958
+ {
959
+ return this->lcast_put(val);
960
+ }
961
+
962
+ template<typename CharT, class Base, class Traits>
963
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
964
+ long double val)
965
+ {
966
+ return this->lcast_put(val);
967
+ }
968
+
969
+ template<typename CharT, class Base, class Traits>
970
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
971
+ CharT const* str)
972
+ {
973
+ start = const_cast<CharT*>(str);
974
+ finish = start + Traits::length(str);
975
+ return true;
976
+ }
977
+
978
+ template<typename CharT, class Base, class Traits>
979
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
980
+ CharT& output)
981
+ {
982
+ bool const ok = (finish - start == 1);
983
+ if(ok)
984
+ Traits::assign(output, *start);
985
+ return ok;
986
+ }
987
+
988
+ #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
989
+ template<typename CharT, class Base, class Traits>
990
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
991
+ std::string& str)
992
+ {
993
+ str.assign(start, finish);
994
+ return true;
995
+ }
996
+
997
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
998
+ template<typename CharT, class Base, class Traits>
999
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
1000
+ std::wstring& str)
1001
+ {
1002
+ str.assign(start, finish);
1003
+ return true;
1004
+ }
1005
+ #endif
1006
+ #endif
1007
+ }
1008
+
1009
+ namespace detail // lcast_streambuf_for_source
1010
+ {
1011
+ // Returns true if optimized stream wrapper needs ostream for writing.
1012
+ template<class Source>
1013
+ struct lcast_streambuf_for_source
1014
+ {
1015
+ BOOST_STATIC_CONSTANT(bool, value = false);
1016
+ };
1017
+
1018
+ template<>
1019
+ struct lcast_streambuf_for_source<float>
1020
+ {
1021
+ BOOST_STATIC_CONSTANT(bool, value = true);
1022
+ };
1023
+
1024
+ template<>
1025
+ struct lcast_streambuf_for_source<double>
1026
+ {
1027
+ BOOST_STATIC_CONSTANT(bool, value = true);
1028
+ };
1029
+
1030
+ template<>
1031
+ struct lcast_streambuf_for_source<long double>
1032
+ {
1033
+ BOOST_STATIC_CONSTANT(bool, value = true);
1034
+ };
1035
+ }
1036
+
1037
+ namespace detail // lcast_streambuf_for_target
1038
+ {
1039
+ // Returns true if optimized stream wrapper needs istream for reading.
1040
+ template<class Target>
1041
+ struct lcast_streambuf_for_target
1042
+ {
1043
+ BOOST_STATIC_CONSTANT(bool, value = true);
1044
+ };
1045
+
1046
+ template<>
1047
+ struct lcast_streambuf_for_target<char>
1048
+ {
1049
+ BOOST_STATIC_CONSTANT(bool, value = false);
1050
+ };
1051
+
1052
+ #if !defined(DISABLE_WIDE_CHAR_SUPPORT) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
1053
+ template<>
1054
+ struct lcast_streambuf_for_target<wchar_t>
1055
+ {
1056
+ BOOST_STATIC_CONSTANT(bool, value = false);
1057
+ };
1058
+ #endif
1059
+
1060
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1061
+ template<class Traits, class Alloc>
1062
+ struct lcast_streambuf_for_target<
1063
+ std::basic_string<char,Traits,Alloc> >
1064
+ {
1065
+ BOOST_STATIC_CONSTANT(bool, value = false);
1066
+ };
1067
+
1068
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
1069
+ template<class Traits, class Alloc>
1070
+ struct lcast_streambuf_for_target<
1071
+ std::basic_string<wchar_t,Traits,Alloc> >
1072
+ {
1073
+ BOOST_STATIC_CONSTANT(bool, value = false);
1074
+ };
1075
+ #endif
1076
+ #else
1077
+ template<>
1078
+ struct lcast_streambuf_for_target<std::string>
1079
+ {
1080
+ BOOST_STATIC_CONSTANT(bool, value = false);
1081
+ };
1082
+
1083
+ #ifndef DISABLE_WIDE_CHAR_SUPPORT
1084
+ template<>
1085
+ struct lcast_streambuf_for_target<std::wstring>
1086
+ {
1087
+ BOOST_STATIC_CONSTANT(bool, value = false);
1088
+ };
1089
+ #endif
1090
+ #endif
1091
+ }
1092
+
1093
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1094
+
1095
+ // call-by-const reference version
1096
+
1097
+ namespace detail
1098
+ {
1099
+ template<class T>
1100
+ struct array_to_pointer_decay
1101
+ {
1102
+ typedef T type;
1103
+ };
1104
+
1105
+ template<class T, std::size_t N>
1106
+ struct array_to_pointer_decay<T[N]>
1107
+ {
1108
+ typedef const T * type;
1109
+ };
1110
+
1111
+ template< typename Target
1112
+ , typename Source
1113
+ , bool Unlimited // string representation of Source is unlimited
1114
+ , typename CharT
1115
+ >
1116
+ Target lexical_cast(
1117
+ BOOST_DEDUCED_TYPENAME boost::call_traits<Source>::param_type arg,
1118
+ CharT* buf, std::size_t src_len)
1119
+ {
1120
+ typedef BOOST_DEDUCED_TYPENAME
1121
+ deduce_char_traits<CharT,Target,Source>::type traits;
1122
+
1123
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
1124
+ lcast_streambuf_for_target<Target>::value ||
1125
+ lcast_streambuf_for_source<Source>::value
1126
+ , std::basic_streambuf<CharT>
1127
+ , lexical_streambuf_fake
1128
+ >::type base;
1129
+
1130
+ BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
1131
+ Unlimited
1132
+ , detail::lexical_stream<Target,Source,traits>
1133
+ , detail::lexical_stream_limited_src<CharT,base,traits>
1134
+ >::type interpreter(buf, buf + src_len);
1135
+
1136
+ // The original form, reproduced below, is more elegant
1137
+ // but yields a spurious C4701 warning ("possible use of
1138
+ // "result" before initialization") with VC7.1 (/W4).
1139
+ //
1140
+ // Target result;
1141
+ //
1142
+ // if(!(interpreter << arg && interpreter >> result))
1143
+ // throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
1144
+ // return result;
1145
+
1146
+ if(interpreter << arg) {
1147
+ Target result;
1148
+ if (interpreter >> result)
1149
+ return result;
1150
+ }
1151
+ throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
1152
+ return Target(); // normally never reached (throw_exception)
1153
+ }
1154
+ }
1155
+
1156
+ template<typename Target, typename Source>
1157
+ inline Target lexical_cast(const Source &arg)
1158
+ {
1159
+ typedef typename detail::array_to_pointer_decay<Source>::type src;
1160
+
1161
+ typedef typename detail::widest_char<
1162
+ typename detail::stream_char<Target>::type
1163
+ , typename detail::stream_char<src>::type
1164
+ >::type char_type;
1165
+
1166
+ typedef detail::lcast_src_length<char_type, src> lcast_src_length;
1167
+ std::size_t const src_len = lcast_src_length::value;
1168
+ char_type buf[src_len + 1];
1169
+ lcast_src_length::check_coverage();
1170
+ return detail::lexical_cast<Target, src, !src_len>(arg, buf, src_len);
1171
+ }
1172
+
1173
+ #else
1174
+
1175
+ // call-by-value fallback version (deprecated)
1176
+
1177
+ template<typename Target, typename Source>
1178
+ Target lexical_cast(Source arg)
1179
+ {
1180
+ typedef typename detail::widest_char<
1181
+ BOOST_DEDUCED_TYPENAME detail::stream_char<Target>::type
1182
+ , BOOST_DEDUCED_TYPENAME detail::stream_char<Source>::type
1183
+ >::type char_type;
1184
+
1185
+ typedef std::char_traits<char_type> traits;
1186
+ detail::lexical_stream<Target, Source, traits> interpreter;
1187
+ Target result;
1188
+
1189
+ if(!(interpreter << arg && interpreter >> result))
1190
+ throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
1191
+ return result;
1192
+ }
1193
+
1194
+ #endif
1195
+ }
1196
+
1197
+ // Copyright Kevlin Henney, 2000-2005.
1198
+ // Copyright Alexander Nasonov, 2006-2007.
1199
+ //
1200
+ // Distributed under the Boost Software License, Version 1.0. (See
1201
+ // accompanying file LICENSE_1_0.txt or copy at
1202
+ // http://www.boost.org/LICENSE_1_0.txt)
1203
+
1204
+ #undef DISABLE_WIDE_CHAR_SUPPORT
1205
+ #endif