passenger-jmazzi 2.2.9
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.
- data/INSTALL +6 -0
- data/LICENSE +19 -0
- data/NEWS +270 -0
- data/README +45 -0
- data/Rakefile +918 -0
- data/benchmark/ApplicationPool.cpp +52 -0
- data/benchmark/accept_vs_socketpair_vs_named_pipes.rb +126 -0
- data/benchmark/dispatcher.rb +42 -0
- data/benchmark/overhead_of_password_checking.rb +81 -0
- data/benchmark/socket_connections_vs_persistent_pipe.rb +99 -0
- data/benchmark/unix_sockets_vs_pipes.rb +83 -0
- data/bin/passenger-config +46 -0
- data/bin/passenger-install-apache2-module +224 -0
- data/bin/passenger-install-nginx-module +474 -0
- data/bin/passenger-make-enterprisey +83 -0
- data/bin/passenger-memory-stats +301 -0
- data/bin/passenger-spawn-server +68 -0
- data/bin/passenger-status +125 -0
- data/bin/passenger-stress-test +344 -0
- data/debian/compat +1 -0
- data/debian/control +21 -0
- data/debian/postinst +24 -0
- data/debian/prerm +2 -0
- data/doc/ApplicationPool algorithm.txt +402 -0
- data/doc/Architectural overview.txt +334 -0
- data/doc/Doxyfile +241 -0
- data/doc/Security of user switching support.txt +197 -0
- data/doc/Users guide Apache.txt +1848 -0
- data/doc/Users guide Nginx.txt +769 -0
- data/doc/definitions.h +5 -0
- data/doc/images/by_sa.png +0 -0
- data/doc/images/conservative_spawning.png +0 -0
- data/doc/images/conservative_spawning.svg +248 -0
- data/doc/images/icons/README +5 -0
- data/doc/images/icons/callouts/1.png +0 -0
- data/doc/images/icons/callouts/10.png +0 -0
- data/doc/images/icons/callouts/11.png +0 -0
- data/doc/images/icons/callouts/12.png +0 -0
- data/doc/images/icons/callouts/13.png +0 -0
- data/doc/images/icons/callouts/14.png +0 -0
- data/doc/images/icons/callouts/15.png +0 -0
- data/doc/images/icons/callouts/2.png +0 -0
- data/doc/images/icons/callouts/3.png +0 -0
- data/doc/images/icons/callouts/4.png +0 -0
- data/doc/images/icons/callouts/5.png +0 -0
- data/doc/images/icons/callouts/6.png +0 -0
- data/doc/images/icons/callouts/7.png +0 -0
- data/doc/images/icons/callouts/8.png +0 -0
- data/doc/images/icons/callouts/9.png +0 -0
- data/doc/images/icons/caution.png +0 -0
- data/doc/images/icons/example.png +0 -0
- data/doc/images/icons/home.png +0 -0
- data/doc/images/icons/important.png +0 -0
- data/doc/images/icons/next.png +0 -0
- data/doc/images/icons/note.png +0 -0
- data/doc/images/icons/prev.png +0 -0
- data/doc/images/icons/tip.png +0 -0
- data/doc/images/icons/up.png +0 -0
- data/doc/images/icons/warning.png +0 -0
- data/doc/images/passenger_architecture.png +0 -0
- data/doc/images/passenger_architecture.svg +401 -0
- data/doc/images/phusion_banner.png +0 -0
- data/doc/images/smart-lv2.png +0 -0
- data/doc/images/smart-lv2.svg +320 -0
- data/doc/images/spawn_server_architecture.png +0 -0
- data/doc/images/spawn_server_architecture.svg +655 -0
- data/doc/images/typical_isolated_web_application.png +0 -0
- data/doc/images/typical_isolated_web_application.svg +213 -0
- data/doc/template/horo.rb +613 -0
- data/doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt +144 -0
- data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
- data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
- data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +304 -0
- data/doc/users_guide_snippets/global_queueing_explained.txt +78 -0
- data/doc/users_guide_snippets/rackup_specifications.txt +71 -0
- data/doc/users_guide_snippets/rails_spawn_method.txt +48 -0
- data/doc/users_guide_snippets/tips.txt +173 -0
- data/ext/apache2/Bucket.cpp +190 -0
- data/ext/apache2/Bucket.h +87 -0
- data/ext/apache2/Configuration.cpp +798 -0
- data/ext/apache2/Configuration.h +405 -0
- data/ext/apache2/DirectoryMapper.h +296 -0
- data/ext/apache2/Hooks.cpp +1617 -0
- data/ext/apache2/Hooks.h +45 -0
- data/ext/apache2/LICENSE-CNRI.TXT +79 -0
- data/ext/apache2/mod_passenger.c +38 -0
- data/ext/boost/LICENSE.TXT +23 -0
- data/ext/boost/VERSION.TXT +1 -0
- data/ext/boost/algorithm/string/case_conv.hpp +176 -0
- data/ext/boost/algorithm/string/compare.hpp +199 -0
- data/ext/boost/algorithm/string/concept.hpp +83 -0
- data/ext/boost/algorithm/string/config.hpp +28 -0
- data/ext/boost/algorithm/string/constants.hpp +36 -0
- data/ext/boost/algorithm/string/detail/case_conv.hpp +112 -0
- data/ext/boost/algorithm/string/detail/find_format.hpp +193 -0
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +263 -0
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +71 -0
- data/ext/boost/algorithm/string/detail/finder.hpp +646 -0
- data/ext/boost/algorithm/string/detail/formatter.hpp +94 -0
- data/ext/boost/algorithm/string/detail/replace_storage.hpp +159 -0
- data/ext/boost/algorithm/string/detail/sequence.hpp +200 -0
- data/ext/boost/algorithm/string/detail/util.hpp +106 -0
- data/ext/boost/algorithm/string/erase.hpp +844 -0
- data/ext/boost/algorithm/string/find_format.hpp +269 -0
- data/ext/boost/algorithm/string/finder.hpp +270 -0
- data/ext/boost/algorithm/string/formatter.hpp +103 -0
- data/ext/boost/algorithm/string/replace.hpp +928 -0
- data/ext/boost/algorithm/string/sequence_traits.hpp +193 -0
- data/ext/boost/algorithm/string/yes_no_type.hpp +33 -0
- data/ext/boost/assert.hpp +50 -0
- data/ext/boost/bind.hpp +1689 -0
- data/ext/boost/bind/arg.hpp +62 -0
- data/ext/boost/bind/bind_cc.hpp +117 -0
- data/ext/boost/bind/bind_mf_cc.hpp +227 -0
- data/ext/boost/bind/bind_template.hpp +345 -0
- data/ext/boost/bind/mem_fn_cc.hpp +103 -0
- data/ext/boost/bind/mem_fn_template.hpp +1020 -0
- data/ext/boost/bind/placeholders.hpp +68 -0
- data/ext/boost/bind/storage.hpp +475 -0
- data/ext/boost/call_traits.hpp +24 -0
- data/ext/boost/checked_delete.hpp +69 -0
- data/ext/boost/concept/assert.hpp +46 -0
- data/ext/boost/concept/detail/concept_def.hpp +51 -0
- data/ext/boost/concept/detail/concept_undef.hpp +5 -0
- data/ext/boost/concept/detail/general.hpp +66 -0
- data/ext/boost/concept/detail/has_constraints.hpp +48 -0
- data/ext/boost/concept/usage.hpp +43 -0
- data/ext/boost/concept_check.hpp +988 -0
- data/ext/boost/config.hpp +70 -0
- data/ext/boost/config/abi/borland_prefix.hpp +27 -0
- data/ext/boost/config/abi/borland_suffix.hpp +12 -0
- data/ext/boost/config/abi/msvc_prefix.hpp +8 -0
- data/ext/boost/config/abi/msvc_suffix.hpp +8 -0
- data/ext/boost/config/abi_prefix.hpp +25 -0
- data/ext/boost/config/abi_suffix.hpp +26 -0
- data/ext/boost/config/auto_link.hpp +368 -0
- data/ext/boost/config/compiler/borland.hpp +209 -0
- data/ext/boost/config/compiler/comeau.hpp +59 -0
- data/ext/boost/config/compiler/common_edg.hpp +62 -0
- data/ext/boost/config/compiler/compaq_cxx.hpp +19 -0
- data/ext/boost/config/compiler/digitalmars.hpp +67 -0
- data/ext/boost/config/compiler/gcc.hpp +149 -0
- data/ext/boost/config/compiler/gcc_xml.hpp +30 -0
- data/ext/boost/config/compiler/greenhills.hpp +28 -0
- data/ext/boost/config/compiler/hp_acc.hpp +95 -0
- data/ext/boost/config/compiler/intel.hpp +162 -0
- data/ext/boost/config/compiler/kai.hpp +35 -0
- data/ext/boost/config/compiler/metrowerks.hpp +111 -0
- data/ext/boost/config/compiler/mpw.hpp +51 -0
- data/ext/boost/config/compiler/pgi.hpp +25 -0
- data/ext/boost/config/compiler/sgi_mipspro.hpp +28 -0
- data/ext/boost/config/compiler/sunpro_cc.hpp +98 -0
- data/ext/boost/config/compiler/vacpp.hpp +60 -0
- data/ext/boost/config/compiler/visualc.hpp +191 -0
- data/ext/boost/config/no_tr1/complex.hpp +28 -0
- data/ext/boost/config/no_tr1/functional.hpp +28 -0
- data/ext/boost/config/no_tr1/memory.hpp +28 -0
- data/ext/boost/config/no_tr1/utility.hpp +28 -0
- data/ext/boost/config/platform/aix.hpp +33 -0
- data/ext/boost/config/platform/amigaos.hpp +15 -0
- data/ext/boost/config/platform/beos.hpp +26 -0
- data/ext/boost/config/platform/bsd.hpp +73 -0
- data/ext/boost/config/platform/cygwin.hpp +51 -0
- data/ext/boost/config/platform/hpux.hpp +84 -0
- data/ext/boost/config/platform/irix.hpp +31 -0
- data/ext/boost/config/platform/linux.hpp +98 -0
- data/ext/boost/config/platform/macos.hpp +78 -0
- data/ext/boost/config/platform/qnxnto.hpp +31 -0
- data/ext/boost/config/platform/solaris.hpp +21 -0
- data/ext/boost/config/platform/win32.hpp +58 -0
- data/ext/boost/config/posix_features.hpp +95 -0
- data/ext/boost/config/requires_threads.hpp +92 -0
- data/ext/boost/config/select_compiler_config.hpp +115 -0
- data/ext/boost/config/select_platform_config.hpp +90 -0
- data/ext/boost/config/select_stdlib_config.hpp +68 -0
- data/ext/boost/config/stdlib/dinkumware.hpp +106 -0
- data/ext/boost/config/stdlib/libcomo.hpp +46 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +73 -0
- data/ext/boost/config/stdlib/modena.hpp +30 -0
- data/ext/boost/config/stdlib/msl.hpp +59 -0
- data/ext/boost/config/stdlib/roguewave.hpp +153 -0
- data/ext/boost/config/stdlib/sgi.hpp +111 -0
- data/ext/boost/config/stdlib/stlport.hpp +201 -0
- data/ext/boost/config/stdlib/vacpp.hpp +18 -0
- data/ext/boost/config/suffix.hpp +566 -0
- data/ext/boost/config/user.hpp +124 -0
- data/ext/boost/cstdint.hpp +449 -0
- data/ext/boost/current_function.hpp +67 -0
- data/ext/boost/date_time/adjust_functors.hpp +178 -0
- data/ext/boost/date_time/c_time.hpp +91 -0
- data/ext/boost/date_time/compiler_config.hpp +149 -0
- data/ext/boost/date_time/constrained_value.hpp +98 -0
- data/ext/boost/date_time/date.hpp +197 -0
- data/ext/boost/date_time/date_clock_device.hpp +77 -0
- data/ext/boost/date_time/date_defs.hpp +26 -0
- data/ext/boost/date_time/date_duration.hpp +147 -0
- data/ext/boost/date_time/date_duration_types.hpp +269 -0
- data/ext/boost/date_time/date_facet.hpp +775 -0
- data/ext/boost/date_time/date_format_simple.hpp +159 -0
- data/ext/boost/date_time/date_formatting.hpp +127 -0
- data/ext/boost/date_time/date_formatting_limited.hpp +121 -0
- data/ext/boost/date_time/date_formatting_locales.hpp +233 -0
- data/ext/boost/date_time/date_generator_formatter.hpp +263 -0
- data/ext/boost/date_time/date_generator_parser.hpp +329 -0
- data/ext/boost/date_time/date_generators.hpp +509 -0
- data/ext/boost/date_time/date_iterator.hpp +101 -0
- data/ext/boost/date_time/date_names_put.hpp +320 -0
- data/ext/boost/date_time/date_parsing.hpp +299 -0
- data/ext/boost/date_time/dst_rules.hpp +391 -0
- data/ext/boost/date_time/filetime_functions.hpp +78 -0
- data/ext/boost/date_time/format_date_parser.hpp +731 -0
- data/ext/boost/date_time/gregorian/conversion.hpp +73 -0
- data/ext/boost/date_time/gregorian/formatters.hpp +162 -0
- data/ext/boost/date_time/gregorian/formatters_limited.hpp +81 -0
- data/ext/boost/date_time/gregorian/greg_calendar.hpp +47 -0
- data/ext/boost/date_time/gregorian/greg_date.hpp +135 -0
- data/ext/boost/date_time/gregorian/greg_day.hpp +57 -0
- data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +38 -0
- data/ext/boost/date_time/gregorian/greg_duration.hpp +38 -0
- data/ext/boost/date_time/gregorian/greg_duration_types.hpp +34 -0
- data/ext/boost/date_time/gregorian/greg_month.hpp +105 -0
- data/ext/boost/date_time/gregorian/greg_weekday.hpp +66 -0
- data/ext/boost/date_time/gregorian/greg_year.hpp +53 -0
- data/ext/boost/date_time/gregorian/greg_ymd.hpp +33 -0
- data/ext/boost/date_time/gregorian/gregorian.hpp +38 -0
- data/ext/boost/date_time/gregorian/gregorian_io.hpp +777 -0
- data/ext/boost/date_time/gregorian/gregorian_types.hpp +109 -0
- data/ext/boost/date_time/gregorian/parsers.hpp +91 -0
- data/ext/boost/date_time/gregorian_calendar.hpp +70 -0
- data/ext/boost/date_time/gregorian_calendar.ipp +219 -0
- data/ext/boost/date_time/int_adapter.hpp +507 -0
- data/ext/boost/date_time/iso_format.hpp +303 -0
- data/ext/boost/date_time/locale_config.hpp +31 -0
- data/ext/boost/date_time/microsec_time_clock.hpp +205 -0
- data/ext/boost/date_time/parse_format_base.hpp +29 -0
- data/ext/boost/date_time/period.hpp +377 -0
- data/ext/boost/date_time/period_formatter.hpp +196 -0
- data/ext/boost/date_time/period_parser.hpp +196 -0
- data/ext/boost/date_time/posix_time/conversion.hpp +93 -0
- data/ext/boost/date_time/posix_time/date_duration_operators.hpp +114 -0
- data/ext/boost/date_time/posix_time/posix_time.hpp +39 -0
- data/ext/boost/date_time/posix_time/posix_time_config.hpp +178 -0
- data/ext/boost/date_time/posix_time/posix_time_duration.hpp +82 -0
- data/ext/boost/date_time/posix_time/posix_time_io.hpp +246 -0
- data/ext/boost/date_time/posix_time/posix_time_system.hpp +68 -0
- data/ext/boost/date_time/posix_time/posix_time_types.hpp +55 -0
- data/ext/boost/date_time/posix_time/ptime.hpp +65 -0
- data/ext/boost/date_time/posix_time/time_formatters.hpp +289 -0
- data/ext/boost/date_time/posix_time/time_parsers.hpp +44 -0
- data/ext/boost/date_time/posix_time/time_period.hpp +29 -0
- data/ext/boost/date_time/special_defs.hpp +25 -0
- data/ext/boost/date_time/special_values_formatter.hpp +96 -0
- data/ext/boost/date_time/special_values_parser.hpp +159 -0
- data/ext/boost/date_time/string_convert.hpp +33 -0
- data/ext/boost/date_time/string_parse_tree.hpp +278 -0
- data/ext/boost/date_time/strings_from_facet.hpp +123 -0
- data/ext/boost/date_time/time.hpp +190 -0
- data/ext/boost/date_time/time_clock.hpp +83 -0
- data/ext/boost/date_time/time_defs.hpp +33 -0
- data/ext/boost/date_time/time_duration.hpp +281 -0
- data/ext/boost/date_time/time_facet.hpp +1263 -0
- data/ext/boost/date_time/time_formatting_streams.hpp +119 -0
- data/ext/boost/date_time/time_iterator.hpp +52 -0
- data/ext/boost/date_time/time_parsing.hpp +321 -0
- data/ext/boost/date_time/time_resolution_traits.hpp +140 -0
- data/ext/boost/date_time/time_system_counted.hpp +254 -0
- data/ext/boost/date_time/time_system_split.hpp +213 -0
- data/ext/boost/date_time/wrapping_int.hpp +163 -0
- data/ext/boost/date_time/year_month_day.hpp +45 -0
- data/ext/boost/detail/atomic_count.hpp +124 -0
- data/ext/boost/detail/atomic_count_gcc.hpp +68 -0
- data/ext/boost/detail/atomic_count_gcc_x86.hpp +84 -0
- data/ext/boost/detail/atomic_count_pthreads.hpp +96 -0
- data/ext/boost/detail/atomic_count_solaris.hpp +59 -0
- data/ext/boost/detail/atomic_count_sync.hpp +57 -0
- data/ext/boost/detail/atomic_count_win32.hpp +63 -0
- data/ext/boost/detail/bad_weak_ptr.hpp +59 -0
- data/ext/boost/detail/call_traits.hpp +164 -0
- data/ext/boost/detail/endian.hpp +73 -0
- data/ext/boost/detail/indirect_traits.hpp +487 -0
- data/ext/boost/detail/iterator.hpp +494 -0
- data/ext/boost/detail/lcast_precision.hpp +184 -0
- data/ext/boost/detail/limits.hpp +449 -0
- data/ext/boost/detail/reference_content.hpp +141 -0
- data/ext/boost/detail/shared_count.hpp +375 -0
- data/ext/boost/detail/sp_counted_base.hpp +81 -0
- data/ext/boost/detail/sp_counted_base_acc_ia64.hpp +150 -0
- data/ext/boost/detail/sp_counted_base_cw_ppc.hpp +170 -0
- data/ext/boost/detail/sp_counted_base_cw_x86.hpp +158 -0
- data/ext/boost/detail/sp_counted_base_gcc_ia64.hpp +157 -0
- data/ext/boost/detail/sp_counted_base_gcc_ppc.hpp +181 -0
- data/ext/boost/detail/sp_counted_base_gcc_sparc.hpp +166 -0
- data/ext/boost/detail/sp_counted_base_gcc_x86.hpp +173 -0
- data/ext/boost/detail/sp_counted_base_nt.hpp +107 -0
- data/ext/boost/detail/sp_counted_base_pt.hpp +135 -0
- data/ext/boost/detail/sp_counted_base_solaris.hpp +113 -0
- data/ext/boost/detail/sp_counted_base_sync.hpp +151 -0
- data/ext/boost/detail/sp_counted_base_w32.hpp +130 -0
- data/ext/boost/detail/sp_counted_impl.hpp +231 -0
- data/ext/boost/detail/sp_typeinfo.hpp +83 -0
- data/ext/boost/detail/workaround.hpp +202 -0
- data/ext/boost/enable_shared_from_this.hpp +73 -0
- data/ext/boost/function.hpp +66 -0
- data/ext/boost/function/detail/function_iterate.hpp +16 -0
- data/ext/boost/function/detail/maybe_include.hpp +267 -0
- data/ext/boost/function/detail/prologue.hpp +25 -0
- data/ext/boost/function/function_base.hpp +762 -0
- data/ext/boost/function/function_template.hpp +969 -0
- data/ext/boost/function_equal.hpp +28 -0
- data/ext/boost/get_pointer.hpp +29 -0
- data/ext/boost/implicit_cast.hpp +29 -0
- data/ext/boost/integer_traits.hpp +236 -0
- data/ext/boost/io/ios_state.hpp +431 -0
- data/ext/boost/io_fwd.hpp +67 -0
- data/ext/boost/is_placeholder.hpp +31 -0
- data/ext/boost/iterator.hpp +59 -0
- data/ext/boost/iterator/detail/config_def.hpp +135 -0
- data/ext/boost/iterator/detail/config_undef.hpp +25 -0
- data/ext/boost/iterator/detail/enable_if.hpp +86 -0
- data/ext/boost/iterator/detail/facade_iterator_category.hpp +200 -0
- data/ext/boost/iterator/detail/minimum_category.hpp +116 -0
- data/ext/boost/iterator/interoperable.hpp +50 -0
- data/ext/boost/iterator/iterator_adaptor.hpp +366 -0
- data/ext/boost/iterator/iterator_categories.hpp +188 -0
- data/ext/boost/iterator/iterator_facade.hpp +879 -0
- data/ext/boost/iterator/iterator_traits.hpp +92 -0
- data/ext/boost/iterator/reverse_iterator.hpp +69 -0
- data/ext/boost/iterator/transform_iterator.hpp +188 -0
- data/ext/boost/lexical_cast.hpp +1205 -0
- data/ext/boost/limits.hpp +146 -0
- data/ext/boost/mem_fn.hpp +389 -0
- data/ext/boost/mpl/always.hpp +39 -0
- data/ext/boost/mpl/and.hpp +60 -0
- data/ext/boost/mpl/apply.hpp +229 -0
- data/ext/boost/mpl/apply_fwd.hpp +107 -0
- data/ext/boost/mpl/apply_wrap.hpp +203 -0
- data/ext/boost/mpl/arg.hpp +131 -0
- data/ext/boost/mpl/arg_fwd.hpp +28 -0
- data/ext/boost/mpl/assert.hpp +370 -0
- data/ext/boost/mpl/aux_/adl_barrier.hpp +48 -0
- data/ext/boost/mpl/aux_/arg_typedef.hpp +31 -0
- data/ext/boost/mpl/aux_/arity.hpp +39 -0
- data/ext/boost/mpl/aux_/arity_spec.hpp +67 -0
- data/ext/boost/mpl/aux_/common_name_wknd.hpp +34 -0
- data/ext/boost/mpl/aux_/config/adl.hpp +40 -0
- data/ext/boost/mpl/aux_/config/arrays.hpp +30 -0
- data/ext/boost/mpl/aux_/config/bind.hpp +33 -0
- data/ext/boost/mpl/aux_/config/compiler.hpp +64 -0
- data/ext/boost/mpl/aux_/config/ctps.hpp +30 -0
- data/ext/boost/mpl/aux_/config/dtp.hpp +46 -0
- data/ext/boost/mpl/aux_/config/eti.hpp +47 -0
- data/ext/boost/mpl/aux_/config/gcc.hpp +23 -0
- data/ext/boost/mpl/aux_/config/has_apply.hpp +32 -0
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +33 -0
- data/ext/boost/mpl/aux_/config/integral.hpp +38 -0
- data/ext/boost/mpl/aux_/config/intel.hpp +21 -0
- data/ext/boost/mpl/aux_/config/lambda.hpp +32 -0
- data/ext/boost/mpl/aux_/config/msvc.hpp +21 -0
- data/ext/boost/mpl/aux_/config/msvc_typename.hpp +26 -0
- data/ext/boost/mpl/aux_/config/nttp.hpp +41 -0
- data/ext/boost/mpl/aux_/config/overload_resolution.hpp +29 -0
- data/ext/boost/mpl/aux_/config/pp_counter.hpp +26 -0
- data/ext/boost/mpl/aux_/config/preprocessor.hpp +39 -0
- data/ext/boost/mpl/aux_/config/static_constant.hpp +25 -0
- data/ext/boost/mpl/aux_/config/ttp.hpp +41 -0
- data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +19 -0
- data/ext/boost/mpl/aux_/config/workaround.hpp +19 -0
- data/ext/boost/mpl/aux_/full_lambda.hpp +354 -0
- data/ext/boost/mpl/aux_/has_apply.hpp +32 -0
- data/ext/boost/mpl/aux_/has_type.hpp +23 -0
- data/ext/boost/mpl/aux_/include_preprocessed.hpp +42 -0
- data/ext/boost/mpl/aux_/integral_wrapper.hpp +93 -0
- data/ext/boost/mpl/aux_/lambda_arity_param.hpp +25 -0
- data/ext/boost/mpl/aux_/lambda_support.hpp +169 -0
- data/ext/boost/mpl/aux_/msvc_never_true.hpp +34 -0
- data/ext/boost/mpl/aux_/na.hpp +95 -0
- data/ext/boost/mpl/aux_/na_assert.hpp +34 -0
- data/ext/boost/mpl/aux_/na_fwd.hpp +31 -0
- data/ext/boost/mpl/aux_/na_spec.hpp +175 -0
- data/ext/boost/mpl/aux_/nested_type_wknd.hpp +48 -0
- data/ext/boost/mpl/aux_/nttp_decl.hpp +35 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessor/enum.hpp +62 -0
- data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +28 -0
- data/ext/boost/mpl/aux_/preprocessor/params.hpp +65 -0
- data/ext/boost/mpl/aux_/preprocessor/sub.hpp +65 -0
- data/ext/boost/mpl/aux_/static_cast.hpp +27 -0
- data/ext/boost/mpl/aux_/template_arity.hpp +189 -0
- data/ext/boost/mpl/aux_/template_arity_fwd.hpp +23 -0
- data/ext/boost/mpl/aux_/type_wrapper.hpp +47 -0
- data/ext/boost/mpl/aux_/value_wknd.hpp +89 -0
- data/ext/boost/mpl/aux_/yes_no.hpp +58 -0
- data/ext/boost/mpl/bind.hpp +551 -0
- data/ext/boost/mpl/bind_fwd.hpp +99 -0
- data/ext/boost/mpl/bool.hpp +39 -0
- data/ext/boost/mpl/bool_fwd.hpp +33 -0
- data/ext/boost/mpl/eval_if.hpp +71 -0
- data/ext/boost/mpl/has_xxx.hpp +272 -0
- data/ext/boost/mpl/identity.hpp +45 -0
- data/ext/boost/mpl/if.hpp +135 -0
- data/ext/boost/mpl/int.hpp +22 -0
- data/ext/boost/mpl/int_fwd.hpp +27 -0
- data/ext/boost/mpl/integral_c.hpp +51 -0
- data/ext/boost/mpl/integral_c_fwd.hpp +32 -0
- data/ext/boost/mpl/integral_c_tag.hpp +26 -0
- data/ext/boost/mpl/lambda.hpp +29 -0
- data/ext/boost/mpl/lambda_fwd.hpp +57 -0
- data/ext/boost/mpl/limits/arity.hpp +21 -0
- data/ext/boost/mpl/logical.hpp +21 -0
- data/ext/boost/mpl/next.hpp +19 -0
- data/ext/boost/mpl/next_prior.hpp +49 -0
- data/ext/boost/mpl/not.hpp +51 -0
- data/ext/boost/mpl/or.hpp +61 -0
- data/ext/boost/mpl/placeholders.hpp +100 -0
- data/ext/boost/mpl/protect.hpp +55 -0
- data/ext/boost/mpl/quote.hpp +140 -0
- data/ext/boost/mpl/size_t.hpp +25 -0
- data/ext/boost/mpl/size_t_fwd.hpp +28 -0
- data/ext/boost/mpl/void.hpp +76 -0
- data/ext/boost/mpl/void_fwd.hpp +26 -0
- data/ext/boost/next_prior.hpp +51 -0
- data/ext/boost/non_type.hpp +27 -0
- data/ext/boost/noncopyable.hpp +36 -0
- data/ext/boost/none.hpp +28 -0
- data/ext/boost/none_t.hpp +24 -0
- data/ext/boost/operators.hpp +943 -0
- data/ext/boost/optional.hpp +18 -0
- data/ext/boost/optional/optional.hpp +922 -0
- data/ext/boost/optional/optional_fwd.hpp +22 -0
- data/ext/boost/preprocessor/arithmetic/add.hpp +51 -0
- data/ext/boost/preprocessor/arithmetic/dec.hpp +288 -0
- data/ext/boost/preprocessor/arithmetic/inc.hpp +288 -0
- data/ext/boost/preprocessor/arithmetic/sub.hpp +50 -0
- data/ext/boost/preprocessor/array/data.hpp +28 -0
- data/ext/boost/preprocessor/array/elem.hpp +29 -0
- data/ext/boost/preprocessor/array/size.hpp +28 -0
- data/ext/boost/preprocessor/cat.hpp +35 -0
- data/ext/boost/preprocessor/comma_if.hpp +17 -0
- data/ext/boost/preprocessor/config/config.hpp +70 -0
- data/ext/boost/preprocessor/control/detail/while.hpp +536 -0
- data/ext/boost/preprocessor/control/expr_iif.hpp +31 -0
- data/ext/boost/preprocessor/control/if.hpp +30 -0
- data/ext/boost/preprocessor/control/iif.hpp +34 -0
- data/ext/boost/preprocessor/control/while.hpp +312 -0
- data/ext/boost/preprocessor/debug/error.hpp +33 -0
- data/ext/boost/preprocessor/detail/auto_rec.hpp +293 -0
- data/ext/boost/preprocessor/detail/check.hpp +48 -0
- data/ext/boost/preprocessor/detail/is_binary.hpp +30 -0
- data/ext/boost/preprocessor/empty.hpp +17 -0
- data/ext/boost/preprocessor/enum.hpp +17 -0
- data/ext/boost/preprocessor/enum_params.hpp +17 -0
- data/ext/boost/preprocessor/facilities/empty.hpp +21 -0
- data/ext/boost/preprocessor/facilities/identity.hpp +23 -0
- data/ext/boost/preprocessor/identity.hpp +17 -0
- data/ext/boost/preprocessor/inc.hpp +17 -0
- data/ext/boost/preprocessor/iterate.hpp +17 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
- data/ext/boost/preprocessor/iteration/iterate.hpp +82 -0
- data/ext/boost/preprocessor/list/adt.hpp +73 -0
- data/ext/boost/preprocessor/list/append.hpp +40 -0
- data/ext/boost/preprocessor/list/detail/fold_left.hpp +279 -0
- data/ext/boost/preprocessor/list/detail/fold_right.hpp +277 -0
- data/ext/boost/preprocessor/list/fold_left.hpp +303 -0
- data/ext/boost/preprocessor/list/fold_right.hpp +40 -0
- data/ext/boost/preprocessor/list/for_each_i.hpp +65 -0
- data/ext/boost/preprocessor/list/reverse.hpp +40 -0
- data/ext/boost/preprocessor/list/transform.hpp +49 -0
- data/ext/boost/preprocessor/logical/and.hpp +30 -0
- data/ext/boost/preprocessor/logical/bitand.hpp +38 -0
- data/ext/boost/preprocessor/logical/bool.hpp +288 -0
- data/ext/boost/preprocessor/logical/compl.hpp +36 -0
- data/ext/boost/preprocessor/punctuation/comma.hpp +21 -0
- data/ext/boost/preprocessor/punctuation/comma_if.hpp +31 -0
- data/ext/boost/preprocessor/repeat.hpp +17 -0
- data/ext/boost/preprocessor/repetition/detail/for.hpp +536 -0
- data/ext/boost/preprocessor/repetition/enum.hpp +66 -0
- data/ext/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
- data/ext/boost/preprocessor/repetition/enum_params.hpp +41 -0
- data/ext/boost/preprocessor/repetition/for.hpp +306 -0
- data/ext/boost/preprocessor/repetition/repeat.hpp +825 -0
- data/ext/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
- data/ext/boost/preprocessor/seq/elem.hpp +304 -0
- data/ext/boost/preprocessor/seq/enum.hpp +288 -0
- data/ext/boost/preprocessor/seq/for_each_i.hpp +61 -0
- data/ext/boost/preprocessor/seq/seq.hpp +44 -0
- data/ext/boost/preprocessor/seq/size.hpp +548 -0
- data/ext/boost/preprocessor/slot/detail/def.hpp +49 -0
- data/ext/boost/preprocessor/slot/detail/shared.hpp +247 -0
- data/ext/boost/preprocessor/slot/slot.hpp +32 -0
- data/ext/boost/preprocessor/stringize.hpp +33 -0
- data/ext/boost/preprocessor/tuple/eat.hpp +57 -0
- data/ext/boost/preprocessor/tuple/elem.hpp +385 -0
- data/ext/boost/preprocessor/tuple/rem.hpp +72 -0
- data/ext/boost/preprocessor/tuple/to_list.hpp +62 -0
- data/ext/boost/range/as_literal.hpp +131 -0
- data/ext/boost/range/begin.hpp +132 -0
- data/ext/boost/range/config.hpp +54 -0
- data/ext/boost/range/const_iterator.hpp +64 -0
- data/ext/boost/range/detail/common.hpp +117 -0
- data/ext/boost/range/detail/implementation_help.hpp +99 -0
- data/ext/boost/range/detail/sfinae.hpp +77 -0
- data/ext/boost/range/detail/str_types.hpp +38 -0
- data/ext/boost/range/difference_type.hpp +29 -0
- data/ext/boost/range/distance.hpp +34 -0
- data/ext/boost/range/empty.hpp +34 -0
- data/ext/boost/range/end.hpp +131 -0
- data/ext/boost/range/functions.hpp +27 -0
- data/ext/boost/range/iterator.hpp +72 -0
- data/ext/boost/range/iterator_range.hpp +643 -0
- data/ext/boost/range/mutable_iterator.hpp +64 -0
- data/ext/boost/range/rbegin.hpp +65 -0
- data/ext/boost/range/rend.hpp +65 -0
- data/ext/boost/range/reverse_iterator.hpp +40 -0
- data/ext/boost/range/size.hpp +36 -0
- data/ext/boost/range/size_type.hpp +78 -0
- data/ext/boost/range/value_type.hpp +34 -0
- data/ext/boost/ref.hpp +178 -0
- data/ext/boost/shared_ptr.hpp +619 -0
- data/ext/boost/src/pthread/exceptions.cpp +146 -0
- data/ext/boost/src/pthread/once.cpp +51 -0
- data/ext/boost/src/pthread/thread.cpp +709 -0
- data/ext/boost/src/pthread/timeconv.inl +130 -0
- data/ext/boost/src/tss_null.cpp +34 -0
- data/ext/boost/src/win32/exceptions.cpp +124 -0
- data/ext/boost/src/win32/thread.cpp +629 -0
- data/ext/boost/src/win32/timeconv.inl +130 -0
- data/ext/boost/src/win32/tss_dll.cpp +72 -0
- data/ext/boost/src/win32/tss_pe.cpp +269 -0
- data/ext/boost/static_assert.hpp +122 -0
- data/ext/boost/thread.hpp +21 -0
- data/ext/boost/thread/condition.hpp +16 -0
- data/ext/boost/thread/condition_variable.hpp +21 -0
- data/ext/boost/thread/detail/config.hpp +94 -0
- data/ext/boost/thread/detail/move.hpp +33 -0
- data/ext/boost/thread/detail/platform.hpp +71 -0
- data/ext/boost/thread/exceptions.hpp +109 -0
- data/ext/boost/thread/locks.hpp +589 -0
- data/ext/boost/thread/mutex.hpp +21 -0
- data/ext/boost/thread/once.hpp +29 -0
- data/ext/boost/thread/pthread/condition_variable.hpp +184 -0
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +66 -0
- data/ext/boost/thread/pthread/mutex.hpp +211 -0
- data/ext/boost/thread/pthread/once.hpp +85 -0
- data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +50 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +249 -0
- data/ext/boost/thread/pthread/thread.hpp +339 -0
- data/ext/boost/thread/pthread/thread_data.hpp +102 -0
- data/ext/boost/thread/pthread/timespec.hpp +28 -0
- data/ext/boost/thread/pthread/tss.hpp +103 -0
- data/ext/boost/thread/recursive_mutex.hpp +21 -0
- data/ext/boost/thread/thread.hpp +22 -0
- data/ext/boost/thread/thread_time.hpp +46 -0
- data/ext/boost/thread/tss.hpp +18 -0
- data/ext/boost/thread/xtime.hpp +88 -0
- data/ext/boost/throw_exception.hpp +46 -0
- data/ext/boost/token_functions.hpp +621 -0
- data/ext/boost/token_iterator.hpp +128 -0
- data/ext/boost/tokenizer.hpp +98 -0
- data/ext/boost/type.hpp +18 -0
- data/ext/boost/type_traits/add_const.hpp +47 -0
- data/ext/boost/type_traits/add_pointer.hpp +72 -0
- data/ext/boost/type_traits/add_reference.hpp +89 -0
- data/ext/boost/type_traits/alignment_of.hpp +100 -0
- data/ext/boost/type_traits/broken_compiler_spec.hpp +117 -0
- data/ext/boost/type_traits/composite_traits.hpp +29 -0
- data/ext/boost/type_traits/config.hpp +76 -0
- data/ext/boost/type_traits/conversion_traits.hpp +17 -0
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +173 -0
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +27 -0
- data/ext/boost/type_traits/detail/cv_traits_impl.hpp +97 -0
- data/ext/boost/type_traits/detail/false_result.hpp +28 -0
- data/ext/boost/type_traits/detail/ice_and.hpp +35 -0
- data/ext/boost/type_traits/detail/ice_eq.hpp +36 -0
- data/ext/boost/type_traits/detail/ice_not.hpp +31 -0
- data/ext/boost/type_traits/detail/ice_or.hpp +34 -0
- data/ext/boost/type_traits/detail/is_function_ptr_helper.hpp +220 -0
- data/ext/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +817 -0
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +58 -0
- data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +16 -0
- data/ext/boost/type_traits/detail/template_arity_spec.hpp +31 -0
- data/ext/boost/type_traits/detail/type_trait_def.hpp +61 -0
- data/ext/boost/type_traits/detail/type_trait_undef.hpp +19 -0
- data/ext/boost/type_traits/detail/yes_no_type.hpp +26 -0
- data/ext/boost/type_traits/function_traits.hpp +236 -0
- data/ext/boost/type_traits/has_nothrow_copy.hpp +39 -0
- data/ext/boost/type_traits/has_trivial_copy.hpp +49 -0
- data/ext/boost/type_traits/ice.hpp +20 -0
- data/ext/boost/type_traits/integral_constant.hpp +53 -0
- data/ext/boost/type_traits/intrinsics.hpp +153 -0
- data/ext/boost/type_traits/is_abstract.hpp +144 -0
- data/ext/boost/type_traits/is_arithmetic.hpp +43 -0
- data/ext/boost/type_traits/is_array.hpp +90 -0
- data/ext/boost/type_traits/is_class.hpp +128 -0
- data/ext/boost/type_traits/is_const.hpp +142 -0
- data/ext/boost/type_traits/is_convertible.hpp +418 -0
- data/ext/boost/type_traits/is_enum.hpp +180 -0
- data/ext/boost/type_traits/is_float.hpp +27 -0
- data/ext/boost/type_traits/is_function.hpp +95 -0
- data/ext/boost/type_traits/is_integral.hpp +73 -0
- data/ext/boost/type_traits/is_member_function_pointer.hpp +134 -0
- data/ext/boost/type_traits/is_member_pointer.hpp +114 -0
- data/ext/boost/type_traits/is_pod.hpp +135 -0
- data/ext/boost/type_traits/is_pointer.hpp +160 -0
- data/ext/boost/type_traits/is_reference.hpp +116 -0
- data/ext/boost/type_traits/is_same.hpp +103 -0
- data/ext/boost/type_traits/is_scalar.hpp +55 -0
- data/ext/boost/type_traits/is_union.hpp +49 -0
- data/ext/boost/type_traits/is_void.hpp +33 -0
- data/ext/boost/type_traits/is_volatile.hpp +131 -0
- data/ext/boost/type_traits/remove_const.hpp +78 -0
- data/ext/boost/type_traits/remove_cv.hpp +61 -0
- data/ext/boost/type_traits/remove_pointer.hpp +43 -0
- data/ext/boost/type_traits/remove_reference.hpp +50 -0
- data/ext/boost/type_traits/type_with_alignment.hpp +288 -0
- data/ext/boost/utility.hpp +19 -0
- data/ext/boost/utility/addressof.hpp +58 -0
- data/ext/boost/utility/base_from_member.hpp +87 -0
- data/ext/boost/utility/compare_pointees.hpp +68 -0
- data/ext/boost/utility/enable_if.hpp +119 -0
- data/ext/boost/visit_each.hpp +29 -0
- data/ext/boost/weak_ptr.hpp +188 -0
- data/ext/common/Application.h +511 -0
- data/ext/common/ApplicationPool.h +205 -0
- data/ext/common/ApplicationPoolServer.h +794 -0
- data/ext/common/ApplicationPoolServerExecutable.cpp +743 -0
- data/ext/common/ApplicationPoolStatusReporter.h +336 -0
- data/ext/common/Base64.cpp +143 -0
- data/ext/common/Base64.h +57 -0
- data/ext/common/CachedFileStat.cpp +62 -0
- data/ext/common/CachedFileStat.h +51 -0
- data/ext/common/CachedFileStat.hpp +243 -0
- data/ext/common/DummySpawnManager.h +108 -0
- data/ext/common/Exceptions.h +258 -0
- data/ext/common/FileChangeChecker.h +209 -0
- data/ext/common/Logging.cpp +65 -0
- data/ext/common/Logging.h +123 -0
- data/ext/common/MessageChannel.h +615 -0
- data/ext/common/PoolOptions.h +355 -0
- data/ext/common/SpawnManager.h +561 -0
- data/ext/common/StandardApplicationPool.h +821 -0
- data/ext/common/StaticString.h +148 -0
- data/ext/common/StringListCreator.h +83 -0
- data/ext/common/SystemTime.cpp +33 -0
- data/ext/common/SystemTime.h +88 -0
- data/ext/common/Timer.h +90 -0
- data/ext/common/Utils.cpp +681 -0
- data/ext/common/Utils.h +497 -0
- data/ext/common/Version.h +31 -0
- data/ext/nginx/Configuration.c +1098 -0
- data/ext/nginx/Configuration.h +71 -0
- data/ext/nginx/ContentHandler.c +1225 -0
- data/ext/nginx/ContentHandler.h +64 -0
- data/ext/nginx/HelperServer.cpp +850 -0
- data/ext/nginx/HttpStatusExtractor.h +350 -0
- data/ext/nginx/ScgiRequestParser.h +317 -0
- data/ext/nginx/StaticContentHandler.c +257 -0
- data/ext/nginx/StaticContentHandler.h +37 -0
- data/ext/nginx/config +45 -0
- data/ext/nginx/ngx_http_passenger_module.c +653 -0
- data/ext/nginx/ngx_http_passenger_module.h +72 -0
- data/ext/oxt/backtrace.cpp +177 -0
- data/ext/oxt/backtrace.hpp +135 -0
- data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
- data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
- data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
- data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
- data/ext/oxt/macros.hpp +58 -0
- data/ext/oxt/spin_lock.hpp +55 -0
- data/ext/oxt/system_calls.cpp +351 -0
- data/ext/oxt/system_calls.hpp +244 -0
- data/ext/oxt/thread.cpp +32 -0
- data/ext/oxt/thread.hpp +335 -0
- data/ext/oxt/tracable_exception.cpp +87 -0
- data/ext/oxt/tracable_exception.hpp +35 -0
- data/ext/phusion_passenger/extconf.rb +36 -0
- data/ext/phusion_passenger/native_support.c +308 -0
- data/lib/jeweler_spec.rb +86 -0
- data/lib/phusion_passenger/abstract_installer.rb +196 -0
- data/lib/phusion_passenger/abstract_request_handler.rb +475 -0
- data/lib/phusion_passenger/abstract_server.rb +369 -0
- data/lib/phusion_passenger/abstract_server_collection.rb +306 -0
- data/lib/phusion_passenger/admin_tools.rb +48 -0
- data/lib/phusion_passenger/admin_tools/control_process.rb +150 -0
- data/lib/phusion_passenger/application.rb +113 -0
- data/lib/phusion_passenger/console_text_template.rb +66 -0
- data/lib/phusion_passenger/constants.rb +31 -0
- data/lib/phusion_passenger/dependencies.rb +425 -0
- data/lib/phusion_passenger/events.rb +50 -0
- data/lib/phusion_passenger/exceptions.rb +103 -0
- data/lib/phusion_passenger/html_template.rb +109 -0
- data/lib/phusion_passenger/message_channel.rb +229 -0
- data/lib/phusion_passenger/packaging.rb +39 -0
- data/lib/phusion_passenger/platform_info.rb +550 -0
- data/lib/phusion_passenger/rack/application_spawner.rb +146 -0
- data/lib/phusion_passenger/rack/request_handler.rb +122 -0
- data/lib/phusion_passenger/railz/application_spawner.rb +412 -0
- data/lib/phusion_passenger/railz/cgi_fixed.rb +68 -0
- data/lib/phusion_passenger/railz/framework_spawner.rb +334 -0
- data/lib/phusion_passenger/railz/request_handler.rb +73 -0
- data/lib/phusion_passenger/simple_benchmarking.rb +52 -0
- data/lib/phusion_passenger/spawn_manager.rb +372 -0
- data/lib/phusion_passenger/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +9 -0
- data/lib/phusion_passenger/templates/apache2/config_snippets.txt.erb +13 -0
- data/lib/phusion_passenger/templates/apache2/deployment_example.txt.erb +23 -0
- data/lib/phusion_passenger/templates/apache2/no_write_permission_to_passenger_root.txt.erb +9 -0
- data/lib/phusion_passenger/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
- data/lib/phusion_passenger/templates/apache2/run_installer_as_root.txt.erb +8 -0
- data/lib/phusion_passenger/templates/apache2/welcome.txt.erb +15 -0
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +14 -0
- data/lib/phusion_passenger/templates/app_init_error.html.erb +46 -0
- data/lib/phusion_passenger/templates/database_error.html.erb +24 -0
- data/lib/phusion_passenger/templates/error_layout.css +97 -0
- data/lib/phusion_passenger/templates/error_layout.html.erb +39 -0
- data/lib/phusion_passenger/templates/framework_init_error.html.erb +10 -0
- data/lib/phusion_passenger/templates/general_error.html.erb +8 -0
- data/lib/phusion_passenger/templates/invalid_app_root.html.erb +9 -0
- data/lib/phusion_passenger/templates/load_error.html.erb +6 -0
- data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
- data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
- data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
- data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
- data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
- data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
- data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
- data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
- data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
- data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
- data/lib/phusion_passenger/templates/version_not_found.html.erb +6 -0
- data/lib/phusion_passenger/utils.rb +611 -0
- data/lib/phusion_passenger/utils/rewindable_input.rb +116 -0
- data/lib/phusion_passenger/wsgi/application_spawner.rb +104 -0
- data/lib/phusion_passenger/wsgi/request_handler.py +199 -0
- data/man/passenger-config.1 +29 -0
- data/man/passenger-make-enterprisey.8 +23 -0
- data/man/passenger-memory-stats.8 +33 -0
- data/man/passenger-status.8 +43 -0
- data/man/passenger-stress-test.1 +43 -0
- data/misc/copy_boost_headers.rb +125 -0
- data/misc/find_owner_pipe_leaks.rb +128 -0
- data/misc/rake/cplusplus.rb +57 -0
- data/misc/rake/extensions.rb +182 -0
- data/misc/rake/gempackagetask.rb +99 -0
- data/misc/rake/packagetask.rb +186 -0
- data/misc/rake/rdoctask.rb +209 -0
- data/misc/render_error_pages.rb +116 -0
- data/test/ApplicationPoolServerTest.cpp +114 -0
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +33 -0
- data/test/ApplicationPoolTest.cpp +599 -0
- data/test/Base64Test.cpp +48 -0
- data/test/CachedFileStatTest.cpp +402 -0
- data/test/CxxTestMain.cpp +143 -0
- data/test/FileChangeCheckerTest.cpp +331 -0
- data/test/HttpStatusExtractorTest.cpp +198 -0
- data/test/MessageChannelTest.cpp +312 -0
- data/test/PoolOptionsTest.cpp +117 -0
- data/test/ScgiRequestParserTest.cpp +337 -0
- data/test/SpawnManagerTest.cpp +64 -0
- data/test/StandardApplicationPoolTest.cpp +27 -0
- data/test/StaticStringTest.cpp +51 -0
- data/test/SystemTimeTest.cpp +37 -0
- data/test/UtilsTest.cpp +257 -0
- data/test/config.yml.example +30 -0
- data/test/integration_tests/apache2_tests.rb +595 -0
- data/test/integration_tests/hello_world_rack_spec.rb +36 -0
- data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
- data/test/integration_tests/mycook_spec.rb +192 -0
- data/test/integration_tests/nginx_tests.rb +151 -0
- data/test/oxt/backtrace_test.cpp +128 -0
- data/test/oxt/oxt_test_main.cpp +25 -0
- data/test/oxt/syscall_interruption_test.cpp +38 -0
- data/test/ruby/abstract_request_handler_spec.rb +85 -0
- data/test/ruby/abstract_server_collection_spec.rb +246 -0
- data/test/ruby/abstract_server_spec.rb +51 -0
- data/test/ruby/application_spec.rb +43 -0
- data/test/ruby/message_channel_spec.rb +170 -0
- data/test/ruby/rack/application_spawner_spec.rb +99 -0
- data/test/ruby/rails/application_spawner_spec.rb +159 -0
- data/test/ruby/rails/framework_spawner_spec.rb +133 -0
- data/test/ruby/rails/minimal_spawner_spec.rb +93 -0
- data/test/ruby/rails/spawner_error_handling_spec.rb +107 -0
- data/test/ruby/rails/spawner_privilege_lowering_spec.rb +97 -0
- data/test/ruby/spawn_manager_spec.rb +205 -0
- data/test/ruby/spawn_server_spec.rb +26 -0
- data/test/ruby/utils_spec.rb +335 -0
- data/test/ruby/wsgi/application_spawner_spec.rb +54 -0
- data/test/stub/apache2/httpd.conf.erb +81 -0
- data/test/stub/apache2/mime.types +748 -0
- data/test/stub/garbage1.dat +0 -0
- data/test/stub/garbage2.dat +0 -0
- data/test/stub/garbage3.dat +0 -0
- data/test/stub/http_request.yml +23 -0
- data/test/stub/message_channel.rb +9 -0
- data/test/stub/message_channel_2.rb +10 -0
- data/test/stub/message_channel_3.rb +17 -0
- data/test/stub/nginx/koi-utf +109 -0
- data/test/stub/nginx/koi-win +103 -0
- data/test/stub/nginx/mime.types +70 -0
- data/test/stub/nginx/nginx.conf.erb +57 -0
- data/test/stub/nginx/win-utf +126 -0
- data/test/stub/rack/config.ru +4 -0
- data/test/stub/rack/public/rack.jpg +0 -0
- data/test/stub/rails_apps/foobar/app/controllers/application.rb +12 -0
- data/test/stub/rails_apps/foobar/app/controllers/bar_controller_1.rb +5 -0
- data/test/stub/rails_apps/foobar/app/controllers/bar_controller_2.rb +5 -0
- data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +21 -0
- data/test/stub/rails_apps/foobar/app/helpers/application_helper.rb +3 -0
- data/test/stub/rails_apps/foobar/config/boot.rb +108 -0
- data/test/stub/rails_apps/foobar/config/database.yml +19 -0
- data/test/stub/rails_apps/foobar/config/environment.rb +59 -0
- data/test/stub/rails_apps/foobar/config/environments/development.rb +17 -0
- data/test/stub/rails_apps/foobar/config/environments/production.rb +18 -0
- data/test/stub/rails_apps/foobar/config/initializers/inflections.rb +10 -0
- data/test/stub/rails_apps/foobar/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails_apps/foobar/config/routes.rb +35 -0
- data/test/stub/rails_apps/mycook/app/controllers/application.rb +12 -0
- data/test/stub/rails_apps/mycook/app/controllers/recipes_controller.rb +5 -0
- data/test/stub/rails_apps/mycook/app/controllers/uploads_controller.rb +15 -0
- data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +71 -0
- data/test/stub/rails_apps/mycook/app/helpers/application_helper.rb +3 -0
- data/test/stub/rails_apps/mycook/app/views/layouts/default.rhtml +26 -0
- data/test/stub/rails_apps/mycook/app/views/recipes/create.rhtml +13 -0
- data/test/stub/rails_apps/mycook/app/views/recipes/index.rhtml +3 -0
- data/test/stub/rails_apps/mycook/app/views/recipes/new.rhtml +8 -0
- data/test/stub/rails_apps/mycook/app/views/uploads/index.rhtml +1 -0
- data/test/stub/rails_apps/mycook/app/views/uploads/new.html.erb +8 -0
- data/test/stub/rails_apps/mycook/app/views/welcome/cached.rhtml +1 -0
- data/test/stub/rails_apps/mycook/app/views/welcome/index.rhtml +20 -0
- data/test/stub/rails_apps/mycook/config/boot.rb +108 -0
- data/test/stub/rails_apps/mycook/config/database.yml +19 -0
- data/test/stub/rails_apps/mycook/config/environment.rb +61 -0
- data/test/stub/rails_apps/mycook/config/environments/development.rb +18 -0
- data/test/stub/rails_apps/mycook/config/environments/production.rb +19 -0
- data/test/stub/rails_apps/mycook/config/initializers/inflections.rb +10 -0
- data/test/stub/rails_apps/mycook/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails_apps/mycook/config/routes.rb +38 -0
- data/test/stub/rails_apps/mycook/log/useless.txt +1 -0
- data/test/stub/rails_apps/mycook/public/404.html +30 -0
- data/test/stub/rails_apps/mycook/public/422.html +30 -0
- data/test/stub/rails_apps/mycook/public/500.html +30 -0
- data/test/stub/rails_apps/mycook/public/dispatch.cgi +10 -0
- data/test/stub/rails_apps/mycook/public/dispatch.fcgi +24 -0
- data/test/stub/rails_apps/mycook/public/dispatch.rb +10 -0
- data/test/stub/rails_apps/mycook/public/favicon.ico +0 -0
- data/test/stub/rails_apps/mycook/public/images/angrywizard.gif +0 -0
- data/test/stub/rails_apps/mycook/public/images/cookbook.gif +0 -0
- data/test/stub/rails_apps/mycook/public/images/header.png +0 -0
- data/test/stub/rails_apps/mycook/public/images/rails.png +0 -0
- data/test/stub/rails_apps/mycook/public/javascripts/application.js +2 -0
- data/test/stub/rails_apps/mycook/public/javascripts/controls.js +963 -0
- data/test/stub/rails_apps/mycook/public/javascripts/dragdrop.js +972 -0
- data/test/stub/rails_apps/mycook/public/javascripts/effects.js +1120 -0
- data/test/stub/rails_apps/mycook/public/javascripts/prototype.js +4225 -0
- data/test/stub/rails_apps/mycook/public/robots.txt +5 -0
- data/test/stub/rails_apps/mycook/public/uploads.html +26 -0
- data/test/stub/rails_apps/mycook/public/welcome/cached.html +26 -0
- data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
- data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
- data/test/stub/rails_apps/mycook/tmp/cache/useless.txt +1 -0
- data/test/stub/rails_apps/mycook/tmp/pids/useless.txt +1 -0
- data/test/stub/rails_apps/mycook/tmp/sessions/useless.txt +1 -0
- data/test/stub/rails_apps/mycook/tmp/sockets/useless.txt +1 -0
- data/test/stub/spawn_server.rb +20 -0
- data/test/stub/upload_data.txt +494 -0
- data/test/stub/vendor_rails/minimal/README +1 -0
- data/test/stub/vendor_rails/minimal/actionmailer/lib/action_mailer.rb +0 -0
- data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +19 -0
- data/test/stub/vendor_rails/minimal/actionpack/lib/action_pack.rb +0 -0
- data/test/stub/vendor_rails/minimal/actionpack/lib/action_view.rb +0 -0
- data/test/stub/vendor_rails/minimal/activerecord/lib/active_record.rb +7 -0
- data/test/stub/vendor_rails/minimal/activeresource/lib/active_resource.rb +0 -0
- data/test/stub/vendor_rails/minimal/activesupport/lib/active_support.rb +17 -0
- data/test/stub/vendor_rails/minimal/activesupport/lib/active_support/whiny_nil.rb +0 -0
- data/test/stub/vendor_rails/minimal/railties/lib/dispatcher.rb +0 -0
- data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +52 -0
- data/test/stub/vendor_rails/minimal/railties/lib/ruby_version_check.rb +1 -0
- data/test/stub/wsgi/passenger_wsgi.py +3 -0
- data/test/stub/wsgi/public/wsgi-snake.jpg +0 -0
- data/test/stub/zsfa/header.png +0 -0
- data/test/stub/zsfa/index.html +14 -0
- data/test/stub/zsfa/zsfa.png +0 -0
- data/test/support/Support.cpp +84 -0
- data/test/support/Support.h +118 -0
- data/test/support/apache2_controller.rb +250 -0
- data/test/support/config.rb +38 -0
- data/test/support/multipart.rb +62 -0
- data/test/support/nginx_controller.rb +98 -0
- data/test/support/run_rspec_tests.rb +10 -0
- data/test/support/test_helper.rb +207 -0
- data/test/support/tut.h +1234 -0
- data/test/support/tut_reporter.h +256 -0
- data/test/support/valgrind.h +2539 -0
- metadata +1078 -0
@@ -0,0 +1,184 @@
|
|
1
|
+
// Copyright Alexander Nasonov & Paul A. Bristow 2006.
|
2
|
+
|
3
|
+
// Use, modification and distribution are subject to the
|
4
|
+
// Boost Software License, Version 1.0.
|
5
|
+
// (See accompanying file LICENSE_1_0.txt
|
6
|
+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
|
7
|
+
|
8
|
+
#ifndef BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
|
9
|
+
#define BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
|
10
|
+
|
11
|
+
#include <climits>
|
12
|
+
#include <ios>
|
13
|
+
#include <limits>
|
14
|
+
|
15
|
+
#include <boost/config.hpp>
|
16
|
+
#include <boost/integer_traits.hpp>
|
17
|
+
|
18
|
+
#ifndef BOOST_NO_IS_ABSTRACT
|
19
|
+
// Fix for SF:1358600 - lexical_cast & pure virtual functions & VC 8 STL
|
20
|
+
#include <boost/mpl/if.hpp>
|
21
|
+
#include <boost/type_traits/is_abstract.hpp>
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || \
|
25
|
+
(defined(BOOST_MSVC) && (BOOST_MSVC<1310))
|
26
|
+
|
27
|
+
#define BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#ifdef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
31
|
+
#include <boost/assert.hpp>
|
32
|
+
#else
|
33
|
+
#include <boost/static_assert.hpp>
|
34
|
+
#endif
|
35
|
+
|
36
|
+
namespace boost { namespace detail {
|
37
|
+
|
38
|
+
class lcast_abstract_stub {};
|
39
|
+
|
40
|
+
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
41
|
+
// Calculate an argument to pass to std::ios_base::precision from
|
42
|
+
// lexical_cast. See alternative implementation for broken standard
|
43
|
+
// libraries in lcast_get_precision below. Keep them in sync, please.
|
44
|
+
template<class T>
|
45
|
+
struct lcast_precision
|
46
|
+
{
|
47
|
+
#ifdef BOOST_NO_IS_ABSTRACT
|
48
|
+
typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
|
49
|
+
#else
|
50
|
+
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
51
|
+
boost::is_abstract<T>
|
52
|
+
, std::numeric_limits<lcast_abstract_stub>
|
53
|
+
, std::numeric_limits<T>
|
54
|
+
>::type limits;
|
55
|
+
#endif
|
56
|
+
|
57
|
+
BOOST_STATIC_CONSTANT(bool, use_default_precision =
|
58
|
+
!limits::is_specialized || limits::is_exact
|
59
|
+
);
|
60
|
+
|
61
|
+
BOOST_STATIC_CONSTANT(bool, is_specialized_bin =
|
62
|
+
!use_default_precision &&
|
63
|
+
limits::radix == 2 && limits::digits > 0
|
64
|
+
);
|
65
|
+
|
66
|
+
BOOST_STATIC_CONSTANT(bool, is_specialized_dec =
|
67
|
+
!use_default_precision &&
|
68
|
+
limits::radix == 10 && limits::digits10 > 0
|
69
|
+
);
|
70
|
+
|
71
|
+
BOOST_STATIC_CONSTANT(std::streamsize, streamsize_max =
|
72
|
+
boost::integer_traits<std::streamsize>::const_max
|
73
|
+
);
|
74
|
+
|
75
|
+
BOOST_STATIC_CONSTANT(unsigned int, precision_dec = limits::digits10 + 1U);
|
76
|
+
|
77
|
+
BOOST_STATIC_ASSERT(!is_specialized_dec ||
|
78
|
+
precision_dec <= streamsize_max + 0UL
|
79
|
+
);
|
80
|
+
|
81
|
+
BOOST_STATIC_CONSTANT(unsigned long, precision_bin =
|
82
|
+
2UL + limits::digits * 30103UL / 100000UL
|
83
|
+
);
|
84
|
+
|
85
|
+
BOOST_STATIC_ASSERT(!is_specialized_bin ||
|
86
|
+
(limits::digits + 0UL < ULONG_MAX / 30103UL &&
|
87
|
+
precision_bin > limits::digits10 + 0UL &&
|
88
|
+
precision_bin <= streamsize_max + 0UL)
|
89
|
+
);
|
90
|
+
|
91
|
+
BOOST_STATIC_CONSTANT(std::streamsize, value =
|
92
|
+
is_specialized_bin ? precision_bin
|
93
|
+
: is_specialized_dec ? precision_dec : 6
|
94
|
+
);
|
95
|
+
};
|
96
|
+
#endif
|
97
|
+
|
98
|
+
template<class T>
|
99
|
+
inline std::streamsize lcast_get_precision(T* = 0)
|
100
|
+
{
|
101
|
+
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
102
|
+
return lcast_precision<T>::value;
|
103
|
+
#else // Follow lcast_precision algorithm at run-time:
|
104
|
+
|
105
|
+
#ifdef BOOST_NO_IS_ABSTRACT
|
106
|
+
typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
|
107
|
+
#else
|
108
|
+
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
109
|
+
boost::is_abstract<T>
|
110
|
+
, std::numeric_limits<lcast_abstract_stub>
|
111
|
+
, std::numeric_limits<T>
|
112
|
+
>::type limits;
|
113
|
+
#endif
|
114
|
+
|
115
|
+
bool const use_default_precision =
|
116
|
+
!limits::is_specialized || limits::is_exact;
|
117
|
+
|
118
|
+
if(!use_default_precision)
|
119
|
+
{ // Includes all built-in floating-point types, float, double ...
|
120
|
+
// and UDT types for which digits (significand bits) is defined (not zero)
|
121
|
+
|
122
|
+
bool const is_specialized_bin =
|
123
|
+
limits::radix == 2 && limits::digits > 0;
|
124
|
+
bool const is_specialized_dec =
|
125
|
+
limits::radix == 10 && limits::digits10 > 0;
|
126
|
+
std::streamsize const streamsize_max =
|
127
|
+
(boost::integer_traits<std::streamsize>::max)();
|
128
|
+
|
129
|
+
if(is_specialized_bin)
|
130
|
+
{ // Floating-point types with
|
131
|
+
// limits::digits defined by the specialization.
|
132
|
+
|
133
|
+
unsigned long const digits = limits::digits;
|
134
|
+
unsigned long const precision = 2UL + digits * 30103UL / 100000UL;
|
135
|
+
// unsigned long is selected because it is at least 32-bits
|
136
|
+
// and thus ULONG_MAX / 30103UL is big enough for all types.
|
137
|
+
BOOST_ASSERT(
|
138
|
+
digits < ULONG_MAX / 30103UL &&
|
139
|
+
precision > limits::digits10 + 0UL &&
|
140
|
+
precision <= streamsize_max + 0UL
|
141
|
+
);
|
142
|
+
return precision;
|
143
|
+
}
|
144
|
+
else if(is_specialized_dec)
|
145
|
+
{ // Decimal Floating-point type, most likely a User Defined Type
|
146
|
+
// rather than a real floating-point hardware type.
|
147
|
+
unsigned int const precision = limits::digits10 + 1U;
|
148
|
+
BOOST_ASSERT(precision <= streamsize_max + 0UL);
|
149
|
+
return precision;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
// Integral type (for which precision has no effect)
|
154
|
+
// or type T for which limits is NOT specialized,
|
155
|
+
// so assume stream precision remains the default 6 decimal digits.
|
156
|
+
// Warning: if your User-defined Floating-point type T is NOT specialized,
|
157
|
+
// then you may lose accuracy by only using 6 decimal digits.
|
158
|
+
// To avoid this, you need to specialize T with either
|
159
|
+
// radix == 2 and digits == the number of significand bits,
|
160
|
+
// OR
|
161
|
+
// radix = 10 and digits10 == the number of decimal digits.
|
162
|
+
|
163
|
+
return 6;
|
164
|
+
#endif
|
165
|
+
}
|
166
|
+
|
167
|
+
template<class T>
|
168
|
+
inline void lcast_set_precision(std::ios_base& stream, T*)
|
169
|
+
{
|
170
|
+
stream.precision(lcast_get_precision<T>());
|
171
|
+
}
|
172
|
+
|
173
|
+
template<class Source, class Target>
|
174
|
+
inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
|
175
|
+
{
|
176
|
+
std::streamsize const s = lcast_get_precision((Source*)0);
|
177
|
+
std::streamsize const t = lcast_get_precision((Target*)0);
|
178
|
+
stream.precision(s > t ? s : t);
|
179
|
+
}
|
180
|
+
|
181
|
+
}}
|
182
|
+
|
183
|
+
#endif // BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
|
184
|
+
|
@@ -0,0 +1,449 @@
|
|
1
|
+
// Copyright 2001 John Maddock
|
2
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompany-
|
3
|
+
// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
4
|
+
|
5
|
+
/*
|
6
|
+
* Copyright (c) 1997
|
7
|
+
* Silicon Graphics Computer Systems, Inc.
|
8
|
+
*
|
9
|
+
* Permission to use, copy, modify, distribute and sell this software
|
10
|
+
* and its documentation for any purpose is hereby granted without fee,
|
11
|
+
* provided that the above copyright notice appear in all copies and
|
12
|
+
* that both that copyright notice and this permission notice appear
|
13
|
+
* in supporting documentation. Silicon Graphics makes no
|
14
|
+
* representations about the suitability of this software for any
|
15
|
+
* purpose. It is provided "as is" without express or implied warranty.
|
16
|
+
*/
|
17
|
+
|
18
|
+
/* NOTE: This is not portable code. Parts of numeric_limits<> are
|
19
|
+
* inherently machine-dependent, and this file is written for the MIPS
|
20
|
+
* architecture and the SGI MIPSpro C++ compiler. Parts of it (in
|
21
|
+
* particular, some of the characteristics of floating-point types)
|
22
|
+
* are almost certainly incorrect for any other platform.
|
23
|
+
*/
|
24
|
+
|
25
|
+
/* The above comment is almost certainly out of date. This file works
|
26
|
+
* on systems other than SGI MIPSpro C++ now.
|
27
|
+
*/
|
28
|
+
|
29
|
+
/*
|
30
|
+
* Revision history:
|
31
|
+
* 21 Sep 2001:
|
32
|
+
* Only include <cwchar> if BOOST_NO_CWCHAR is defined. (Darin Adler)
|
33
|
+
* 10 Aug 2001:
|
34
|
+
* Added MIPS (big endian) to the big endian family. (Jens Maurer)
|
35
|
+
* 13 Apr 2001:
|
36
|
+
* Added powerpc to the big endian family. (Jeremy Siek)
|
37
|
+
* 5 Apr 2001:
|
38
|
+
* Added sparc (big endian) processor support (John Maddock).
|
39
|
+
* Initial sub:
|
40
|
+
* Modified by Jens Maurer for gcc 2.95 on x86.
|
41
|
+
*/
|
42
|
+
|
43
|
+
#ifndef BOOST_SGI_CPP_LIMITS
|
44
|
+
#define BOOST_SGI_CPP_LIMITS
|
45
|
+
|
46
|
+
#include <climits>
|
47
|
+
#include <cfloat>
|
48
|
+
#include <boost/config.hpp>
|
49
|
+
#include <boost/detail/endian.hpp>
|
50
|
+
|
51
|
+
#ifndef BOOST_NO_CWCHAR
|
52
|
+
#include <cwchar> // for WCHAR_MIN and WCHAR_MAX
|
53
|
+
#endif
|
54
|
+
|
55
|
+
namespace std {
|
56
|
+
|
57
|
+
enum float_round_style {
|
58
|
+
round_indeterminate = -1,
|
59
|
+
round_toward_zero = 0,
|
60
|
+
round_to_nearest = 1,
|
61
|
+
round_toward_infinity = 2,
|
62
|
+
round_toward_neg_infinity = 3
|
63
|
+
};
|
64
|
+
|
65
|
+
enum float_denorm_style {
|
66
|
+
denorm_indeterminate = -1,
|
67
|
+
denorm_absent = 0,
|
68
|
+
denorm_present = 1
|
69
|
+
};
|
70
|
+
|
71
|
+
// The C++ standard (section 18.2.1) requires that some of the members of
|
72
|
+
// numeric_limits be static const data members that are given constant-
|
73
|
+
// initializers within the class declaration. On compilers where the
|
74
|
+
// BOOST_NO_INCLASS_MEMBER_INITIALIZATION macro is defined, it is impossible to write
|
75
|
+
// a standard-conforming numeric_limits class.
|
76
|
+
//
|
77
|
+
// There are two possible workarounds: either initialize the data
|
78
|
+
// members outside the class, or change them from data members to
|
79
|
+
// enums. Neither workaround is satisfactory: the former makes it
|
80
|
+
// impossible to use the data members in constant-expressions, and the
|
81
|
+
// latter means they have the wrong type and that it is impossible to
|
82
|
+
// take their addresses. We choose the former workaround.
|
83
|
+
|
84
|
+
#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
85
|
+
# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
|
86
|
+
enum { __mem_name = __mem_value }
|
87
|
+
#else /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
|
88
|
+
# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
|
89
|
+
static const __mem_type __mem_name = __mem_value
|
90
|
+
#endif /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
|
91
|
+
|
92
|
+
// Base class for all specializations of numeric_limits.
|
93
|
+
template <class __number>
|
94
|
+
class _Numeric_limits_base {
|
95
|
+
public:
|
96
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, false);
|
97
|
+
|
98
|
+
static __number min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); }
|
99
|
+
static __number max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); }
|
100
|
+
|
101
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, 0);
|
102
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, 0);
|
103
|
+
|
104
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, false);
|
105
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, false);
|
106
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, false);
|
107
|
+
|
108
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 0);
|
109
|
+
|
110
|
+
static __number epsilon() throw() { return __number(); }
|
111
|
+
static __number round_error() throw() { return __number(); }
|
112
|
+
|
113
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, 0);
|
114
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, 0);
|
115
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, 0);
|
116
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, 0);
|
117
|
+
|
118
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, false);
|
119
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, false);
|
120
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, false);
|
121
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
|
122
|
+
has_denorm,
|
123
|
+
denorm_absent);
|
124
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
|
125
|
+
|
126
|
+
static __number infinity() throw() { return __number(); }
|
127
|
+
static __number quiet_NaN() throw() { return __number(); }
|
128
|
+
static __number signaling_NaN() throw() { return __number(); }
|
129
|
+
static __number denorm_min() throw() { return __number(); }
|
130
|
+
|
131
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, false);
|
132
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, false);
|
133
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, false);
|
134
|
+
|
135
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false);
|
136
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
|
137
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style,
|
138
|
+
round_style,
|
139
|
+
round_toward_zero);
|
140
|
+
};
|
141
|
+
|
142
|
+
// Base class for integers.
|
143
|
+
|
144
|
+
template <class _Int,
|
145
|
+
_Int __imin,
|
146
|
+
_Int __imax,
|
147
|
+
int __idigits = -1>
|
148
|
+
class _Integer_limits : public _Numeric_limits_base<_Int>
|
149
|
+
{
|
150
|
+
public:
|
151
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
|
152
|
+
|
153
|
+
static _Int min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imin; }
|
154
|
+
static _Int max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imax; }
|
155
|
+
|
156
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int,
|
157
|
+
digits,
|
158
|
+
(__idigits < 0) ? (int)(sizeof(_Int) * CHAR_BIT)
|
159
|
+
- (__imin == 0 ? 0 : 1)
|
160
|
+
: __idigits);
|
161
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, (digits * 301) / 1000);
|
162
|
+
// log 2 = 0.301029995664...
|
163
|
+
|
164
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, __imin != 0);
|
165
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, true);
|
166
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, true);
|
167
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
|
168
|
+
|
169
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
|
170
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, true);
|
171
|
+
};
|
172
|
+
|
173
|
+
#if defined(BOOST_BIG_ENDIAN)
|
174
|
+
|
175
|
+
template<class Number, unsigned int Word>
|
176
|
+
struct float_helper{
|
177
|
+
static Number get_word() throw() {
|
178
|
+
// sizeof(long double) == 16
|
179
|
+
const unsigned int _S_word[4] = { Word, 0, 0, 0 };
|
180
|
+
return *reinterpret_cast<const Number*>(&_S_word);
|
181
|
+
}
|
182
|
+
};
|
183
|
+
|
184
|
+
#else
|
185
|
+
|
186
|
+
template<class Number, unsigned int Word>
|
187
|
+
struct float_helper{
|
188
|
+
static Number get_word() throw() {
|
189
|
+
// sizeof(long double) == 12, but only 10 bytes significant
|
190
|
+
const unsigned int _S_word[4] = { 0, 0, 0, Word };
|
191
|
+
return *reinterpret_cast<const Number*>(
|
192
|
+
reinterpret_cast<const char *>(&_S_word)+16-
|
193
|
+
(sizeof(Number) == 12 ? 10 : sizeof(Number)));
|
194
|
+
}
|
195
|
+
};
|
196
|
+
|
197
|
+
#endif
|
198
|
+
|
199
|
+
// Base class for floating-point numbers.
|
200
|
+
template <class __number,
|
201
|
+
int __Digits, int __Digits10,
|
202
|
+
int __MinExp, int __MaxExp,
|
203
|
+
int __MinExp10, int __MaxExp10,
|
204
|
+
unsigned int __InfinityWord,
|
205
|
+
unsigned int __QNaNWord, unsigned int __SNaNWord,
|
206
|
+
bool __IsIEC559,
|
207
|
+
float_round_style __RoundStyle>
|
208
|
+
class _Floating_limits : public _Numeric_limits_base<__number>
|
209
|
+
{
|
210
|
+
public:
|
211
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
|
212
|
+
|
213
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, __Digits);
|
214
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, __Digits10);
|
215
|
+
|
216
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, true);
|
217
|
+
|
218
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
|
219
|
+
|
220
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, __MinExp);
|
221
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, __MaxExp);
|
222
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, __MinExp10);
|
223
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, __MaxExp10);
|
224
|
+
|
225
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, true);
|
226
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, true);
|
227
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, true);
|
228
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
|
229
|
+
has_denorm,
|
230
|
+
denorm_indeterminate);
|
231
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
|
232
|
+
|
233
|
+
|
234
|
+
static __number infinity() throw() {
|
235
|
+
return float_helper<__number, __InfinityWord>::get_word();
|
236
|
+
}
|
237
|
+
static __number quiet_NaN() throw() {
|
238
|
+
return float_helper<__number,__QNaNWord>::get_word();
|
239
|
+
}
|
240
|
+
static __number signaling_NaN() throw() {
|
241
|
+
return float_helper<__number,__SNaNWord>::get_word();
|
242
|
+
}
|
243
|
+
|
244
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, __IsIEC559);
|
245
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
|
246
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false /* was: true */ );
|
247
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
|
248
|
+
|
249
|
+
BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, round_style, __RoundStyle);
|
250
|
+
};
|
251
|
+
|
252
|
+
// Class numeric_limits
|
253
|
+
|
254
|
+
// The unspecialized class.
|
255
|
+
|
256
|
+
template<class T>
|
257
|
+
class numeric_limits : public _Numeric_limits_base<T> {};
|
258
|
+
|
259
|
+
// Specializations for all built-in integral types.
|
260
|
+
|
261
|
+
template<>
|
262
|
+
class numeric_limits<bool>
|
263
|
+
: public _Integer_limits<bool, false, true, 0>
|
264
|
+
{};
|
265
|
+
|
266
|
+
template<>
|
267
|
+
class numeric_limits<char>
|
268
|
+
: public _Integer_limits<char, CHAR_MIN, CHAR_MAX>
|
269
|
+
{};
|
270
|
+
|
271
|
+
template<>
|
272
|
+
class numeric_limits<signed char>
|
273
|
+
: public _Integer_limits<signed char, SCHAR_MIN, SCHAR_MAX>
|
274
|
+
{};
|
275
|
+
|
276
|
+
template<>
|
277
|
+
class numeric_limits<unsigned char>
|
278
|
+
: public _Integer_limits<unsigned char, 0, UCHAR_MAX>
|
279
|
+
{};
|
280
|
+
|
281
|
+
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
282
|
+
template<>
|
283
|
+
class numeric_limits<wchar_t>
|
284
|
+
#if !defined(WCHAR_MAX) || !defined(WCHAR_MIN)
|
285
|
+
#if defined(_WIN32) || defined(__CYGWIN__)
|
286
|
+
: public _Integer_limits<wchar_t, 0, USHRT_MAX>
|
287
|
+
#elif defined(__hppa)
|
288
|
+
// wchar_t has "unsigned int" as the underlying type
|
289
|
+
: public _Integer_limits<wchar_t, 0, UINT_MAX>
|
290
|
+
#else
|
291
|
+
// assume that wchar_t has "int" as the underlying type
|
292
|
+
: public _Integer_limits<wchar_t, INT_MIN, INT_MAX>
|
293
|
+
#endif
|
294
|
+
#else
|
295
|
+
// we have WCHAR_MIN and WCHAR_MAX defined, so use it
|
296
|
+
: public _Integer_limits<wchar_t, WCHAR_MIN, WCHAR_MAX>
|
297
|
+
#endif
|
298
|
+
{};
|
299
|
+
#endif
|
300
|
+
|
301
|
+
template<>
|
302
|
+
class numeric_limits<short>
|
303
|
+
: public _Integer_limits<short, SHRT_MIN, SHRT_MAX>
|
304
|
+
{};
|
305
|
+
|
306
|
+
template<>
|
307
|
+
class numeric_limits<unsigned short>
|
308
|
+
: public _Integer_limits<unsigned short, 0, USHRT_MAX>
|
309
|
+
{};
|
310
|
+
|
311
|
+
template<>
|
312
|
+
class numeric_limits<int>
|
313
|
+
: public _Integer_limits<int, INT_MIN, INT_MAX>
|
314
|
+
{};
|
315
|
+
|
316
|
+
template<>
|
317
|
+
class numeric_limits<unsigned int>
|
318
|
+
: public _Integer_limits<unsigned int, 0, UINT_MAX>
|
319
|
+
{};
|
320
|
+
|
321
|
+
template<>
|
322
|
+
class numeric_limits<long>
|
323
|
+
: public _Integer_limits<long, LONG_MIN, LONG_MAX>
|
324
|
+
{};
|
325
|
+
|
326
|
+
template<>
|
327
|
+
class numeric_limits<unsigned long>
|
328
|
+
: public _Integer_limits<unsigned long, 0, ULONG_MAX>
|
329
|
+
{};
|
330
|
+
|
331
|
+
#ifdef __GNUC__
|
332
|
+
|
333
|
+
// Some compilers have long long, but don't define the
|
334
|
+
// LONGLONG_MIN and LONGLONG_MAX macros in limits.h. This
|
335
|
+
// assumes that long long is 64 bits.
|
336
|
+
#if !defined(LONGLONG_MAX) && !defined(ULONGLONG_MAX)
|
337
|
+
|
338
|
+
# define ULONGLONG_MAX 0xffffffffffffffffLLU
|
339
|
+
# define LONGLONG_MAX 0x7fffffffffffffffLL
|
340
|
+
|
341
|
+
#endif
|
342
|
+
|
343
|
+
#if !defined(LONGLONG_MIN)
|
344
|
+
# define LONGLONG_MIN (-LONGLONG_MAX - 1)
|
345
|
+
#endif
|
346
|
+
|
347
|
+
|
348
|
+
#if !defined(ULONGLONG_MIN)
|
349
|
+
# define ULONGLONG_MIN 0
|
350
|
+
#endif
|
351
|
+
|
352
|
+
#endif /* __GNUC__ */
|
353
|
+
|
354
|
+
// Specializations for all built-in floating-point type.
|
355
|
+
|
356
|
+
template<> class numeric_limits<float>
|
357
|
+
: public _Floating_limits<float,
|
358
|
+
FLT_MANT_DIG, // Binary digits of precision
|
359
|
+
FLT_DIG, // Decimal digits of precision
|
360
|
+
FLT_MIN_EXP, // Minimum exponent
|
361
|
+
FLT_MAX_EXP, // Maximum exponent
|
362
|
+
FLT_MIN_10_EXP, // Minimum base 10 exponent
|
363
|
+
FLT_MAX_10_EXP, // Maximum base 10 exponent
|
364
|
+
#if defined(BOOST_BIG_ENDIAN)
|
365
|
+
0x7f80 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
|
366
|
+
0x7f81 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
|
367
|
+
0x7fc1 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
|
368
|
+
#else
|
369
|
+
0x7f800000u, // Last word of +infinity
|
370
|
+
0x7f810000u, // Last word of quiet NaN
|
371
|
+
0x7fc10000u, // Last word of signaling NaN
|
372
|
+
#endif
|
373
|
+
true, // conforms to iec559
|
374
|
+
round_to_nearest>
|
375
|
+
{
|
376
|
+
public:
|
377
|
+
static float min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MIN; }
|
378
|
+
static float denorm_min() throw() { return FLT_MIN; }
|
379
|
+
static float max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MAX; }
|
380
|
+
static float epsilon() throw() { return FLT_EPSILON; }
|
381
|
+
static float round_error() throw() { return 0.5f; } // Units: ulps.
|
382
|
+
};
|
383
|
+
|
384
|
+
template<> class numeric_limits<double>
|
385
|
+
: public _Floating_limits<double,
|
386
|
+
DBL_MANT_DIG, // Binary digits of precision
|
387
|
+
DBL_DIG, // Decimal digits of precision
|
388
|
+
DBL_MIN_EXP, // Minimum exponent
|
389
|
+
DBL_MAX_EXP, // Maximum exponent
|
390
|
+
DBL_MIN_10_EXP, // Minimum base 10 exponent
|
391
|
+
DBL_MAX_10_EXP, // Maximum base 10 exponent
|
392
|
+
#if defined(BOOST_BIG_ENDIAN)
|
393
|
+
0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
|
394
|
+
0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
|
395
|
+
0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
|
396
|
+
#else
|
397
|
+
0x7ff00000u, // Last word of +infinity
|
398
|
+
0x7ff10000u, // Last word of quiet NaN
|
399
|
+
0x7ff90000u, // Last word of signaling NaN
|
400
|
+
#endif
|
401
|
+
true, // conforms to iec559
|
402
|
+
round_to_nearest>
|
403
|
+
{
|
404
|
+
public:
|
405
|
+
static double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MIN; }
|
406
|
+
static double denorm_min() throw() { return DBL_MIN; }
|
407
|
+
static double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MAX; }
|
408
|
+
static double epsilon() throw() { return DBL_EPSILON; }
|
409
|
+
static double round_error() throw() { return 0.5; } // Units: ulps.
|
410
|
+
};
|
411
|
+
|
412
|
+
template<> class numeric_limits<long double>
|
413
|
+
: public _Floating_limits<long double,
|
414
|
+
LDBL_MANT_DIG, // Binary digits of precision
|
415
|
+
LDBL_DIG, // Decimal digits of precision
|
416
|
+
LDBL_MIN_EXP, // Minimum exponent
|
417
|
+
LDBL_MAX_EXP, // Maximum exponent
|
418
|
+
LDBL_MIN_10_EXP,// Minimum base 10 exponent
|
419
|
+
LDBL_MAX_10_EXP,// Maximum base 10 exponent
|
420
|
+
#if defined(BOOST_BIG_ENDIAN)
|
421
|
+
0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
|
422
|
+
0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
|
423
|
+
0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
|
424
|
+
#else
|
425
|
+
0x7fff8000u, // Last word of +infinity
|
426
|
+
0x7fffc000u, // Last word of quiet NaN
|
427
|
+
0x7fff9000u, // Last word of signaling NaN
|
428
|
+
#endif
|
429
|
+
false, // Doesn't conform to iec559
|
430
|
+
round_to_nearest>
|
431
|
+
{
|
432
|
+
public:
|
433
|
+
static long double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MIN; }
|
434
|
+
static long double denorm_min() throw() { return LDBL_MIN; }
|
435
|
+
static long double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MAX; }
|
436
|
+
static long double epsilon() throw() { return LDBL_EPSILON; }
|
437
|
+
static long double round_error() throw() { return 4; } // Units: ulps.
|
438
|
+
};
|
439
|
+
|
440
|
+
} // namespace std
|
441
|
+
|
442
|
+
#endif /* BOOST_SGI_CPP_LIMITS */
|
443
|
+
|
444
|
+
// Local Variables:
|
445
|
+
// mode:C++
|
446
|
+
// End:
|
447
|
+
|
448
|
+
|
449
|
+
|