passenger 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- data/DEVELOPERS.TXT +9 -6
- data/NEWS +50 -0
- data/Rakefile +2 -1
- data/bin/passenger-install-apache2-module +4 -4
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-make-enterprisey +1 -1
- data/build/agents.rb +26 -19
- data/build/apache2.rb +49 -46
- data/build/basics.rb +37 -13
- data/build/common_library.rb +134 -64
- data/build/config.rb +18 -11
- data/build/cplusplus_support.rb +4 -0
- data/build/cxx_tests.rb +26 -12
- data/build/documentation.rb +18 -11
- data/build/integration_tests.rb +18 -11
- data/build/misc.rb +18 -11
- data/build/nginx.rb +27 -19
- data/build/oxt_tests.rb +18 -11
- data/build/packaging.rb +45 -37
- data/build/rpm.rb +98 -0
- data/build/ruby_extension.rb +19 -13
- data/build/ruby_tests.rb +19 -12
- data/build/test_basics.rb +23 -11
- data/debian/README.Debian +15 -0
- data/debian/changelog +185 -0
- data/debian/control +47 -19
- data/debian/copyright +20 -0
- data/debian/libapache2-mod-passenger.install +1 -0
- data/debian/libapache2-mod-passenger.postinst +36 -0
- data/debian/libapache2-mod-passenger.prerm +15 -0
- data/debian/passenger-common.install +4 -0
- data/debian/passenger.conf +4 -0
- data/debian/passenger.load +1 -0
- data/debian/rules +37 -0
- data/debian/watch +3 -0
- data/{misc → dev}/copy_boost_headers.rb +3 -0
- data/{misc → dev}/find_owner_pipe_leaks.rb +0 -0
- data/{misc → dev}/render_error_pages.rb +0 -0
- data/doc/Users guide Apache.html +39 -1
- data/doc/Users guide Apache.txt +40 -0
- data/doc/Users guide Nginx.html +1 -1
- data/doc/Users guide Standalone.html +1 -1
- data/doc/cxxapi/Constants_8h_source.html +1 -1
- data/doc/cxxapi/DirectoryMapper_8h_source.html +6 -22
- data/doc/cxxapi/EventedClient_8h_source.html +572 -468
- data/doc/cxxapi/Exceptions_8h_source.html +142 -129
- data/doc/cxxapi/FileDescriptor_8h_source.html +263 -199
- data/doc/cxxapi/MessageChannel_8h_source.html +686 -770
- data/doc/cxxapi/MessageServer_8h_source.html +1 -1
- data/doc/cxxapi/PoolOptions_8h_source.html +79 -78
- data/doc/cxxapi/ResourceLocator_8h_source.html +105 -55
- data/doc/cxxapi/SafeLibev_8h_source.html +180 -0
- data/doc/cxxapi/ServerInstanceDir_8h_source.html +114 -110
- data/doc/cxxapi/Session_8h_source.html +1 -1
- data/doc/cxxapi/SpawnManager_8h_source.html +208 -208
- data/doc/cxxapi/StaticString_8h_source.html +258 -183
- data/doc/cxxapi/Utils_8h_source.html +71 -54
- data/doc/cxxapi/annotated.html +3 -0
- data/doc/cxxapi/classAgentWatcher.html +2 -2
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +0 -1
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +0 -27
- data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +5 -0
- data/doc/cxxapi/classPassenger_1_1EventedClient.html +102 -7
- data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +2 -1
- data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +34 -8
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair.html +52 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +0 -3
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +0 -120
- data/doc/cxxapi/classPassenger_1_1SafeLibev-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1SafeLibev.html +51 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +22 -0
- data/doc/cxxapi/classes.html +14 -14
- data/doc/cxxapi/files.html +2 -0
- data/doc/cxxapi/functions_0x63.html +6 -3
- data/doc/cxxapi/functions_0x64.html +9 -2
- data/doc/cxxapi/functions_0x67.html +6 -9
- data/doc/cxxapi/functions_0x69.html +3 -0
- data/doc/cxxapi/functions_0x77.html +8 -8
- data/doc/cxxapi/functions_eval.html +6 -0
- data/doc/cxxapi/functions_func.html +18 -17
- data/doc/cxxapi/functions_vars.html +8 -0
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/hierarchy.html +3 -0
- data/doc/cxxapi/inherit__graph__14.map +1 -1
- data/doc/cxxapi/inherit__graph__14.md5 +1 -1
- data/doc/cxxapi/inherit__graph__14.png +0 -0
- data/doc/cxxapi/inherit__graph__15.map +1 -3
- data/doc/cxxapi/inherit__graph__15.md5 +1 -1
- data/doc/cxxapi/inherit__graph__15.png +0 -0
- data/doc/cxxapi/inherit__graph__16.map +3 -1
- data/doc/cxxapi/inherit__graph__16.md5 +1 -1
- data/doc/cxxapi/inherit__graph__16.png +0 -0
- data/doc/cxxapi/inherit__graph__17.map +1 -1
- data/doc/cxxapi/inherit__graph__17.md5 +1 -1
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.map +1 -2
- data/doc/cxxapi/inherit__graph__18.md5 +1 -1
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.map +2 -1
- data/doc/cxxapi/inherit__graph__19.md5 +1 -1
- data/doc/cxxapi/inherit__graph__19.png +0 -0
- data/doc/cxxapi/inherit__graph__20.map +1 -1
- data/doc/cxxapi/inherit__graph__20.md5 +1 -1
- data/doc/cxxapi/inherit__graph__20.png +0 -0
- data/doc/cxxapi/inherit__graph__21.map +1 -1
- data/doc/cxxapi/inherit__graph__21.md5 +1 -1
- data/doc/cxxapi/inherit__graph__21.png +0 -0
- data/doc/cxxapi/inherit__graph__22.map +1 -1
- data/doc/cxxapi/inherit__graph__22.md5 +1 -1
- data/doc/cxxapi/inherit__graph__22.png +0 -0
- data/doc/cxxapi/inherit__graph__23.map +1 -1
- data/doc/cxxapi/inherit__graph__23.md5 +1 -1
- data/doc/cxxapi/inherit__graph__23.png +0 -0
- data/doc/cxxapi/inherit__graph__24.map +1 -1
- data/doc/cxxapi/inherit__graph__24.md5 +1 -1
- data/doc/cxxapi/inherit__graph__24.png +0 -0
- data/doc/cxxapi/inherit__graph__25.map +1 -1
- data/doc/cxxapi/inherit__graph__25.md5 +1 -1
- data/doc/cxxapi/inherit__graph__25.png +0 -0
- data/doc/cxxapi/inherit__graph__26.map +1 -1
- data/doc/cxxapi/inherit__graph__26.md5 +1 -1
- data/doc/cxxapi/inherit__graph__26.png +0 -0
- data/doc/cxxapi/inherit__graph__27.map +1 -1
- data/doc/cxxapi/inherit__graph__27.md5 +1 -1
- data/doc/cxxapi/inherit__graph__27.png +0 -0
- data/doc/cxxapi/inherit__graph__28.map +1 -2
- data/doc/cxxapi/inherit__graph__28.md5 +1 -1
- data/doc/cxxapi/inherit__graph__28.png +0 -0
- data/doc/cxxapi/inherit__graph__29.map +1 -1
- data/doc/cxxapi/inherit__graph__29.md5 +1 -1
- data/doc/cxxapi/inherit__graph__29.png +0 -0
- data/doc/cxxapi/inherit__graph__30.map +1 -1
- data/doc/cxxapi/inherit__graph__30.md5 +1 -1
- data/doc/cxxapi/inherit__graph__30.png +0 -0
- data/doc/cxxapi/inherit__graph__31.map +2 -1
- data/doc/cxxapi/inherit__graph__31.md5 +1 -1
- data/doc/cxxapi/inherit__graph__31.png +0 -0
- data/doc/cxxapi/inherit__graph__32.map +1 -3
- data/doc/cxxapi/inherit__graph__32.md5 +1 -1
- data/doc/cxxapi/inherit__graph__32.png +0 -0
- data/doc/cxxapi/inherit__graph__33.map +1 -1
- data/doc/cxxapi/inherit__graph__33.md5 +1 -1
- data/doc/cxxapi/inherit__graph__33.png +0 -0
- data/doc/cxxapi/inherit__graph__34.map +1 -1
- data/doc/cxxapi/inherit__graph__34.md5 +1 -1
- data/doc/cxxapi/inherit__graph__34.png +0 -0
- data/doc/cxxapi/inherit__graph__35.map +3 -1
- data/doc/cxxapi/inherit__graph__35.md5 +1 -1
- data/doc/cxxapi/inherit__graph__35.png +0 -0
- data/doc/cxxapi/inherit__graph__36.map +1 -1
- data/doc/cxxapi/inherit__graph__36.md5 +1 -1
- data/doc/cxxapi/inherit__graph__36.png +0 -0
- data/doc/cxxapi/inherit__graph__37.map +1 -1
- data/doc/cxxapi/inherit__graph__37.md5 +1 -1
- data/doc/cxxapi/inherit__graph__37.png +0 -0
- data/doc/cxxapi/inherit__graph__38.map +3 -1
- data/doc/cxxapi/inherit__graph__38.md5 +1 -1
- data/doc/cxxapi/inherit__graph__38.png +0 -0
- data/doc/cxxapi/inherit__graph__39.map +3 -1
- data/doc/cxxapi/inherit__graph__39.md5 +1 -1
- data/doc/cxxapi/inherit__graph__39.png +0 -0
- data/doc/cxxapi/inherits.html +33 -24
- data/doc/cxxapi/namespacePassenger.html +52 -0
- data/doc/cxxapi/namespacemembers.html +6 -0
- data/doc/cxxapi/namespacemembers_func.html +6 -0
- data/doc/cxxapi/tree.html +8 -0
- data/ext/apache2/Configuration.cpp +30 -8
- data/ext/apache2/Configuration.hpp +15 -14
- data/ext/apache2/DirectoryMapper.h +0 -16
- data/ext/apache2/Hooks.cpp +30 -29
- data/ext/boost/algorithm/string/detail/case_conv.hpp +6 -6
- data/ext/boost/algorithm/string/detail/find_format.hpp +14 -4
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +13 -3
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +11 -0
- data/ext/boost/algorithm/string/erase.hpp +2 -2
- data/ext/boost/bind/placeholders.hpp +2 -2
- data/ext/boost/concept/detail/backward_compatibility.hpp +16 -0
- data/ext/boost/concept/detail/general.hpp +15 -6
- data/ext/boost/concept/detail/has_constraints.hpp +5 -3
- data/ext/boost/concept/usage.hpp +5 -4
- data/ext/boost/concept_check.hpp +10 -1
- data/ext/boost/config/abi/borland_prefix.hpp +1 -1
- data/ext/boost/config/auto_link.hpp +68 -21
- data/ext/boost/config/compiler/borland.hpp +11 -3
- data/ext/boost/config/compiler/clang.hpp +62 -0
- data/ext/boost/config/compiler/codegear.hpp +21 -7
- data/ext/boost/config/compiler/common_edg.hpp +4 -2
- data/ext/boost/config/compiler/digitalmars.hpp +1 -1
- data/ext/boost/config/compiler/gcc.hpp +46 -7
- data/ext/boost/config/compiler/gcc_xml.hpp +25 -0
- data/ext/boost/config/compiler/intel.hpp +23 -0
- data/ext/boost/config/compiler/kai.hpp +1 -1
- data/ext/boost/config/compiler/metrowerks.hpp +1 -1
- data/ext/boost/config/compiler/nvcc.hpp +86 -0
- data/ext/boost/config/compiler/pgi.hpp +18 -3
- data/ext/boost/config/compiler/sunpro_cc.hpp +19 -5
- data/ext/boost/config/compiler/vacpp.hpp +8 -0
- data/ext/boost/config/compiler/visualc.hpp +27 -11
- data/ext/boost/config/platform/cygwin.hpp +0 -3
- data/ext/boost/config/platform/symbian.hpp +94 -0
- data/ext/boost/config/platform/win32.hpp +8 -1
- data/ext/boost/config/select_compiler_config.hpp +10 -0
- data/ext/boost/config/select_platform_config.hpp +4 -0
- data/ext/boost/config/stdlib/dinkumware.hpp +11 -1
- data/ext/boost/config/stdlib/libcomo.hpp +1 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +1 -0
- data/ext/boost/config/stdlib/modena.hpp +1 -0
- data/ext/boost/config/stdlib/msl.hpp +1 -0
- data/ext/boost/config/stdlib/roguewave.hpp +1 -0
- data/ext/boost/config/stdlib/sgi.hpp +1 -0
- data/ext/boost/config/stdlib/stlport.hpp +1 -0
- data/ext/boost/config/stdlib/vacpp.hpp +1 -0
- data/ext/boost/config/suffix.hpp +40 -2
- data/ext/boost/cstdint.hpp +36 -7
- data/ext/boost/date_time/gregorian/conversion.hpp +4 -2
- data/ext/boost/date_time/microsec_time_clock.hpp +7 -7
- data/ext/boost/date_time/posix_time/conversion.hpp +4 -2
- data/ext/boost/date_time/time_facet.hpp +43 -4
- data/ext/boost/detail/endian.hpp +5 -2
- data/ext/boost/detail/lcast_precision.hpp +2 -2
- data/ext/boost/detail/sp_typeinfo.hpp +1 -1
- data/ext/boost/detail/workaround.hpp +5 -0
- data/ext/boost/exception/detail/error_info_impl.hpp +3 -3
- data/ext/boost/exception/detail/exception_ptr.hpp +76 -135
- data/ext/boost/exception/detail/is_output_streamable.hpp +15 -2
- data/ext/boost/exception/detail/type_info.hpp +9 -5
- data/ext/boost/exception/diagnostic_information.hpp +5 -3
- data/ext/boost/exception/exception.hpp +60 -46
- data/ext/boost/exception/info.hpp +47 -14
- data/ext/boost/function/function_base.hpp +4 -4
- data/ext/boost/integer.hpp +4 -0
- data/ext/boost/integer_fwd.hpp +9 -3
- data/ext/boost/iterator/iterator_concepts.hpp +284 -0
- data/ext/boost/iterator/transform_iterator.hpp +0 -1
- data/ext/boost/make_shared.hpp +17 -0
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +4 -3
- data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +2 -6
- data/ext/boost/mpl/aux_/template_arity.hpp +4 -4
- data/ext/boost/mpl/eval_if.hpp +3 -3
- data/ext/boost/mpl/has_xxx.hpp +369 -3
- data/ext/boost/optional/optional.hpp +3 -1
- data/ext/boost/optional/optional_fwd.hpp +1 -1
- data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
- data/ext/boost/range/algorithm/equal.hpp +188 -0
- data/ext/boost/range/as_literal.hpp +15 -15
- data/ext/boost/range/concepts.hpp +331 -0
- data/ext/boost/range/const_iterator.hpp +7 -4
- data/ext/boost/range/detail/extract_optional_type.hpp +52 -0
- data/ext/boost/range/detail/implementation_help.hpp +7 -7
- data/ext/boost/range/detail/misc_concept.hpp +33 -0
- data/ext/boost/range/iterator.hpp +32 -32
- data/ext/boost/range/iterator_range.hpp +8 -651
- data/ext/boost/range/iterator_range_core.hpp +542 -0
- data/ext/boost/range/iterator_range_io.hpp +93 -0
- data/ext/boost/range/mutable_iterator.hpp +7 -4
- data/ext/boost/range/size.hpp +1 -1
- data/ext/boost/range/size_type.hpp +2 -1
- data/ext/boost/shared_array.hpp +19 -0
- data/ext/boost/smart_ptr/detail/sp_convertible.hpp +2 -2
- data/ext/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/ext/boost/smart_ptr/make_shared.hpp +508 -0
- data/ext/boost/smart_ptr/shared_array.hpp +147 -0
- data/ext/boost/src/pthread/thread.cpp +16 -21
- data/ext/boost/src/pthread/timeconv.inl +7 -4
- data/ext/boost/thread/barrier.hpp +2 -1
- data/ext/boost/thread/detail/config.hpp +7 -1
- data/ext/boost/thread/detail/platform.hpp +1 -1
- data/ext/boost/thread/detail/thread.hpp +62 -18
- data/ext/boost/thread/detail/thread_group.hpp +5 -2
- data/ext/boost/thread/detail/tss_hooks.hpp +8 -25
- data/ext/boost/thread/future.hpp +45 -34
- data/ext/boost/thread/locks.hpp +184 -55
- data/ext/boost/thread/pthread/condition_variable.hpp +7 -7
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +4 -2
- data/ext/boost/thread/pthread/mutex.hpp +29 -17
- data/ext/boost/thread/pthread/once.hpp +5 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +97 -18
- data/ext/boost/thread/pthread/shared_mutex.hpp +1 -1
- data/ext/boost/thread/pthread/thread_heap_alloc.hpp +1 -1
- data/ext/boost/thread/tss.hpp +2 -0
- data/ext/boost/throw_exception.hpp +21 -5
- data/ext/boost/token_functions.hpp +111 -91
- data/ext/boost/type_traits/add_reference.hpp +19 -1
- data/ext/boost/type_traits/function_traits.hpp +2 -2
- data/ext/boost/type_traits/is_const.hpp +24 -5
- data/ext/boost/type_traits/is_convertible.hpp +1 -1
- data/ext/boost/type_traits/is_function.hpp +3 -0
- data/ext/boost/type_traits/is_lvalue_reference.hpp +118 -0
- data/ext/boost/type_traits/is_reference.hpp +8 -81
- data/ext/boost/type_traits/is_rvalue_reference.hpp +29 -0
- data/ext/boost/type_traits/is_same.hpp +2 -2
- data/ext/boost/type_traits/is_volatile.hpp +26 -7
- data/ext/boost/type_traits/remove_const.hpp +12 -0
- data/ext/boost/type_traits/remove_cv.hpp +23 -1
- data/ext/boost/type_traits/remove_reference.hpp +21 -1
- data/ext/boost/type_traits/type_with_alignment.hpp +10 -10
- data/ext/boost/units/detail/utility.hpp +104 -0
- data/ext/boost/utility/compare_pointees.hpp +1 -1
- data/ext/common/AgentsStarter.hpp +151 -161
- data/ext/common/ApplicationPool/Pool.h +16 -4
- data/ext/common/Constants.h +1 -1
- data/ext/common/EventedClient.h +130 -26
- data/ext/common/Exceptions.h +15 -2
- data/ext/common/FileDescriptor.h +76 -12
- data/ext/common/IniFile.h +488 -0
- data/ext/common/LoggingAgent/LoggingServer.h +2 -2
- data/ext/common/LoggingAgent/RemoteSender.h +15 -6
- data/ext/common/MessageChannel.h +17 -101
- data/ext/common/PoolOptions.h +1 -0
- data/ext/common/ResourceLocator.h +78 -28
- data/ext/common/SafeLibev.h +149 -0
- data/ext/common/ServerInstanceDir.h +11 -7
- data/ext/common/Session.h +1 -1
- data/ext/common/SpawnManager.h +14 -14
- data/ext/common/StaticString.h +75 -0
- data/ext/common/Utils.cpp +304 -12
- data/ext/common/Utils.h +17 -0
- data/ext/common/Utils/BufferedIO.h +196 -0
- data/ext/common/Utils/IOUtils.cpp +159 -0
- data/ext/common/Utils/IOUtils.h +118 -1
- data/ext/common/Utils/ProcessMetricsCollector.h +184 -56
- data/ext/common/Utils/StrIntUtils.cpp +45 -11
- data/ext/common/Utils/StrIntUtils.h +8 -5
- data/ext/common/Utils/Timer.h +22 -0
- data/ext/common/Utils/utf8.h +35 -0
- data/ext/common/Utils/utf8/checked.h +324 -0
- data/ext/common/Utils/utf8/core.h +359 -0
- data/ext/common/Utils/utf8/unchecked.h +229 -0
- data/ext/common/Watchdog.cpp +52 -85
- data/ext/libev/config.h +122 -0
- data/ext/nginx/Configuration.c +7 -1
- data/ext/nginx/HelperAgent.cpp +16 -18
- data/ext/nginx/config +6 -4
- data/ext/oxt/system_calls.cpp +10 -0
- data/ext/oxt/system_calls.hpp +2 -0
- data/lib/phusion_passenger.rb +6 -11
- data/lib/phusion_passenger/dependencies.rb +2 -0
- data/lib/phusion_passenger/packaging.rb +5 -5
- data/lib/phusion_passenger/platform_info.rb +88 -0
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +3 -17
- data/lib/phusion_passenger/platform_info/compiler.rb +14 -32
- data/lib/phusion_passenger/platform_info/curl.rb +6 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +107 -0
- data/lib/phusion_passenger/public_api.rb +2 -2
- data/lib/phusion_passenger/rails3_extensions/init.rb +5 -2
- data/lib/phusion_passenger/standalone/command.rb +6 -2
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +2 -2
- data/lib/phusion_passenger/standalone/runtime_installer.rb +17 -5
- data/lib/phusion_passenger/standalone/start_command.rb +12 -12
- data/lib/phusion_passenger/standalone/stop_command.rb +3 -3
- data/lib/phusion_passenger/standalone/utils.rb +6 -2
- data/lib/phusion_passenger/templates/standalone/config.erb +37 -5
- data/lib/phusion_passenger/utils.rb +4 -7
- data/resources/mime.types +73 -0
- data/{misc → resources}/union_station_gateway.crt +0 -0
- data/test/cxx/BufferedIOTest.cpp +364 -0
- data/test/cxx/EventedClientTest.cpp +150 -13
- data/test/cxx/IOUtilsTest.cpp +399 -1
- data/test/cxx/MessageChannelTest.cpp +5 -120
- data/test/cxx/ProcessMetricsCollectorTest.cpp +121 -0
- data/test/cxx/StaticStringTest.cpp +134 -0
- data/test/cxx/UtilsTest.cpp +16 -46
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.cgi +2 -2
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.fcgi +1 -1
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.rb +1 -1
- data/test/stub/rails_apps/3.0/empty/Gemfile.lock +73 -0
- data/test/support/allocate_memory.c +14 -0
- data/test/support/test_helper.rb +3 -0
- metadata +57 -174
- data/bin/passenger-stress-test +0 -345
- data/debian/postinst +0 -24
- data/doc/rdoc/classes/ConditionVariable.html +0 -215
- data/doc/rdoc/classes/Exception.html +0 -120
- data/doc/rdoc/classes/GC.html +0 -113
- data/doc/rdoc/classes/IO.html +0 -221
- data/doc/rdoc/classes/PhusionPassenger.html +0 -397
- data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -180
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -647
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -654
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -619
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -142
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +0 -368
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +0 -231
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +0 -588
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +0 -147
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +0 -279
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +0 -123
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +0 -341
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +0 -294
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +0 -199
- data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -155
- data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +0 -367
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +0 -95
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +0 -351
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +0 -200
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +0 -410
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +0 -156
- data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +0 -115
- data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +0 -202
- data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
- data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +0 -273
- data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
- data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -162
- data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -673
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +0 -415
- data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +0 -134
- data/doc/rdoc/classes/PhusionPassenger/Packaging.html +0 -129
- data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +0 -1809
- data/doc/rdoc/classes/PhusionPassenger/Plugin.html +0 -237
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -312
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -218
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +0 -114
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +0 -256
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +0 -139
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +0 -118
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +0 -135
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -378
- data/doc/rdoc/classes/PhusionPassenger/Standalone.html +0 -111
- data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +0 -252
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +0 -161
- data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +0 -368
- data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +0 -132
- data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +0 -151
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +0 -189
- data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +0 -177
- data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +0 -341
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +0 -203
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +0 -156
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +0 -168
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +0 -86
- data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +0 -135
- data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -1550
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +0 -204
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +0 -171
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +0 -260
- data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
- data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +0 -265
- data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +0 -120
- data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +0 -561
- data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -182
- data/doc/rdoc/classes/Process.html +0 -115
- data/doc/rdoc/classes/Signal.html +0 -139
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -276
- data/doc/rdoc/files/README.html +0 -157
- data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -130
- data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -135
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +0 -141
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +0 -146
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +0 -125
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -147
- data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
- data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +0 -128
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -137
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
- data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -160
- data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +0 -135
- data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +0 -133
- data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +0 -136
- data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +0 -120
- data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +0 -100
- data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -179
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -132
- data/doc/rdoc/fr_class_index.html +0 -138
- data/doc/rdoc/fr_file_index.html +0 -108
- data/doc/rdoc/fr_method_index.html +0 -430
- data/doc/rdoc/index.html +0 -26
- data/doc/rdoc/rdoc-style.css +0 -187
- data/ext/apache2/LICENSE-CNRI.TXT +0 -79
- data/ext/common/Utils/BlockingScalar.h +0 -50
- data/ext/common/Utils/FileHandleGuard.h +0 -81
@@ -52,200 +52,275 @@
|
|
52
52
|
<a name="l00027"></a>00027 <span class="preprocessor"></span>
|
53
53
|
<a name="l00028"></a>00028 <span class="preprocessor">#include <string></span>
|
54
54
|
<a name="l00029"></a>00029 <span class="preprocessor">#include <cstring></span>
|
55
|
-
<a name="l00030"></a>00030 <span class="preprocessor">#include <
|
56
|
-
<a name="l00031"></a>00031
|
57
|
-
<a name="l00032"></a>00032 <span class="
|
55
|
+
<a name="l00030"></a>00030 <span class="preprocessor">#include <cstddef></span>
|
56
|
+
<a name="l00031"></a>00031 <span class="preprocessor">#include <ostream></span>
|
57
|
+
<a name="l00032"></a>00032 <span class="preprocessor">#include <stdexcept></span>
|
58
58
|
<a name="l00033"></a>00033
|
59
|
-
<a name="l00034"></a>00034 <span class="keyword">
|
60
|
-
<a name="l00035"></a>00035
|
61
|
-
<a name="l00036"></a>00036 <span class="
|
62
|
-
<a name="l00037"></a>00037 <span class="comment"
|
63
|
-
<a name="l00038"></a>00038 <span class="comment"
|
64
|
-
<a name="l00039"></a>00039 <span class="comment"> *
|
65
|
-
<a name="l00040"></a>00040 <span class="comment">
|
66
|
-
<a name="l00041"></a>00041 <span class="comment"> *
|
67
|
-
<a name="l00042"></a>00042 <span class="comment">
|
68
|
-
<a name="l00043"></a
|
69
|
-
<a name="l00044"></a>00044 <span class="
|
70
|
-
<a name="l00045"></a>00045
|
71
|
-
<a name="l00046"></a>00046
|
72
|
-
<a name="l00047"></a>00047
|
73
|
-
<a name="l00048"></a>00048
|
74
|
-
<a name="l00049"></a>00049
|
75
|
-
<a name="l00050"></a
|
76
|
-
<a name="l00051"></a>00051 <span class="
|
77
|
-
<a name="l00052"></a>00052
|
78
|
-
<a name="l00053"></a>00053
|
79
|
-
<a name="l00054"></a>00054 <span class="
|
80
|
-
<a name="l00055"></a>00055
|
81
|
-
<a name="l00056"></a>00056
|
82
|
-
<a name="l00057"></a>00057
|
83
|
-
<a name="l00058"></a>00058
|
84
|
-
<a name="l00059"></a>00059 <span class="
|
85
|
-
<a name="l00060"></a>00060
|
86
|
-
<a name="l00061"></a>00061
|
87
|
-
<a name="l00062"></a>00062
|
88
|
-
<a name="l00063"></a>00063
|
89
|
-
<a name="l00064"></a>00064
|
90
|
-
<a name="l00065"></a>00065
|
91
|
-
<a name="l00066"></a>00066
|
92
|
-
<a name="l00067"></a>00067
|
93
|
-
<a name="l00068"></a>00068
|
94
|
-
<a name="l00069"></a>00069
|
95
|
-
<a name="l00070"></a>00070
|
96
|
-
<a name="l00071"></a>00071
|
97
|
-
<a name="l00072"></a>00072
|
98
|
-
<a name="l00073"></a>00073
|
99
|
-
<a name="l00074"></a>00074
|
100
|
-
<a name="l00075"></a>00075
|
101
|
-
<a name="l00076"></a>00076
|
102
|
-
<a name="l00077"></a>00077
|
103
|
-
<a name="l00078"></a>00078
|
104
|
-
<a name="l00079"></a>00079
|
105
|
-
<a name="l00080"></a>00080
|
106
|
-
<a name="l00081"></a>00081
|
107
|
-
<a name="l00082"></a>00082
|
108
|
-
<a name="l00083"></a>00083
|
109
|
-
<a name="l00084"></a>00084
|
110
|
-
<a name="l00085"></a>00085
|
111
|
-
<a name="l00086"></a>00086
|
112
|
-
<a name="l00087"></a>00087
|
113
|
-
<a name="l00088"></a>00088
|
114
|
-
<a name="l00089"></a>00089
|
115
|
-
<a name="l00090"></a>00090
|
116
|
-
<a name="l00091"></a>00091
|
117
|
-
<a name="l00092"></a>00092
|
118
|
-
<a name="l00093"></a>00093
|
119
|
-
<a name="l00094"></a>00094
|
120
|
-
<a name="l00095"></a>00095
|
121
|
-
<a name="l00096"></a>00096
|
122
|
-
<a name="l00097"></a>00097
|
59
|
+
<a name="l00034"></a>00034 <span class="keyword">namespace </span>Passenger {
|
60
|
+
<a name="l00035"></a>00035
|
61
|
+
<a name="l00036"></a>00036 <span class="keyword">using namespace </span>std;
|
62
|
+
<a name="l00037"></a>00037 <span class="comment"></span>
|
63
|
+
<a name="l00038"></a>00038 <span class="comment">/**</span>
|
64
|
+
<a name="l00039"></a>00039 <span class="comment"> * An immutable, static byte buffer. This class will never copy data:</span>
|
65
|
+
<a name="l00040"></a>00040 <span class="comment"> * it just holds a pointer to the data. So a StaticString will become unusable</span>
|
66
|
+
<a name="l00041"></a>00041 <span class="comment"> * once the data it refers to has been freed.</span>
|
67
|
+
<a name="l00042"></a>00042 <span class="comment"> *</span>
|
68
|
+
<a name="l00043"></a>00043 <span class="comment"> * StaticString will never modify the data.</span>
|
69
|
+
<a name="l00044"></a>00044 <span class="comment"> */</span>
|
70
|
+
<a name="l00045"></a><a class="code" href="classPassenger_1_1StaticString.html">00045</a> <span class="keyword">class </span><a class="code" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> {
|
71
|
+
<a name="l00046"></a>00046 <span class="keyword">private</span>:
|
72
|
+
<a name="l00047"></a>00047 <span class="keyword">const</span> <span class="keywordtype">char</span> *content;
|
73
|
+
<a name="l00048"></a>00048 string::size_type len;
|
74
|
+
<a name="l00049"></a>00049
|
75
|
+
<a name="l00050"></a>00050 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *memmem(<span class="keyword">const</span> <span class="keywordtype">char</span> *haystack, string::size_type haystack_len,
|
76
|
+
<a name="l00051"></a>00051 <span class="keyword">const</span> <span class="keywordtype">char</span> *needle, string::size_type needle_len)
|
77
|
+
<a name="l00052"></a>00052 {
|
78
|
+
<a name="l00053"></a>00053 <span class="keywordflow">if</span> (needle_len == 0) {
|
79
|
+
<a name="l00054"></a>00054 <span class="keywordflow">return</span> haystack;
|
80
|
+
<a name="l00055"></a>00055 }
|
81
|
+
<a name="l00056"></a>00056
|
82
|
+
<a name="l00057"></a>00057 <span class="keyword">const</span> <span class="keywordtype">char</span> *last_possible = haystack + haystack_len - needle_len;
|
83
|
+
<a name="l00058"></a>00058 <span class="keywordflow">do</span> {
|
84
|
+
<a name="l00059"></a>00059 <span class="keyword">const</span> <span class="keywordtype">char</span> *result = (<span class="keyword">const</span> <span class="keywordtype">char</span> *) memchr(haystack, needle[0], haystack_len);
|
85
|
+
<a name="l00060"></a>00060 <span class="keywordflow">if</span> (result != NULL) {
|
86
|
+
<a name="l00061"></a>00061 <span class="keywordflow">if</span> (result > last_possible) {
|
87
|
+
<a name="l00062"></a>00062 <span class="keywordflow">return</span> NULL;
|
88
|
+
<a name="l00063"></a>00063 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (memcmp(result, needle, needle_len) == 0) {
|
89
|
+
<a name="l00064"></a>00064 <span class="keywordflow">return</span> result;
|
90
|
+
<a name="l00065"></a>00065 } <span class="keywordflow">else</span> {
|
91
|
+
<a name="l00066"></a>00066 ssize_t new_len = ssize_t(haystack_len) - (result - haystack) - 1;
|
92
|
+
<a name="l00067"></a>00067 <span class="keywordflow">if</span> (new_len <= 0) {
|
93
|
+
<a name="l00068"></a>00068 <span class="keywordflow">return</span> NULL;
|
94
|
+
<a name="l00069"></a>00069 } <span class="keywordflow">else</span> {
|
95
|
+
<a name="l00070"></a>00070 haystack = result + 1;
|
96
|
+
<a name="l00071"></a>00071 haystack_len = new_len;
|
97
|
+
<a name="l00072"></a>00072 }
|
98
|
+
<a name="l00073"></a>00073 }
|
99
|
+
<a name="l00074"></a>00074 } <span class="keywordflow">else</span> {
|
100
|
+
<a name="l00075"></a>00075 <span class="keywordflow">return</span> NULL;
|
101
|
+
<a name="l00076"></a>00076 }
|
102
|
+
<a name="l00077"></a>00077 } <span class="keywordflow">while</span> (<span class="keyword">true</span>);
|
103
|
+
<a name="l00078"></a>00078 }
|
104
|
+
<a name="l00079"></a>00079
|
105
|
+
<a name="l00080"></a>00080 <span class="keyword">public</span>:<span class="comment"></span>
|
106
|
+
<a name="l00081"></a>00081 <span class="comment"> /** A hash function object for StaticString. */</span>
|
107
|
+
<a name="l00082"></a><a class="code" href="structPassenger_1_1StaticString_1_1Hash.html">00082</a> <span class="keyword">struct </span><a class="code" href="structPassenger_1_1StaticString_1_1Hash.html" title="A hash function object for StaticString.">Hash</a> {
|
108
|
+
<a name="l00083"></a>00083 <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> <a class="code" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> &str)<span class="keyword"> const </span>{
|
109
|
+
<a name="l00084"></a>00084 <span class="keywordtype">size_t</span> result = 0;
|
110
|
+
<a name="l00085"></a>00085 <span class="keyword">const</span> <span class="keywordtype">char</span> *data = str.content;
|
111
|
+
<a name="l00086"></a>00086 <span class="keyword">const</span> <span class="keywordtype">char</span> *end = data + str.len;
|
112
|
+
<a name="l00087"></a>00087 <span class="keywordflow">while</span> (data != end) {
|
113
|
+
<a name="l00088"></a>00088 result = result * 33 + *data;
|
114
|
+
<a name="l00089"></a>00089 data++;
|
115
|
+
<a name="l00090"></a>00090 }
|
116
|
+
<a name="l00091"></a>00091 <span class="keywordflow">return</span> result;
|
117
|
+
<a name="l00092"></a>00092 }
|
118
|
+
<a name="l00093"></a>00093 };
|
119
|
+
<a name="l00094"></a>00094
|
120
|
+
<a name="l00095"></a>00095 <a class="code" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a>() {
|
121
|
+
<a name="l00096"></a>00096 content = <span class="stringliteral">""</span>;
|
122
|
+
<a name="l00097"></a>00097 len = 0;
|
123
123
|
<a name="l00098"></a>00098 }
|
124
124
|
<a name="l00099"></a>00099
|
125
|
-
<a name="l00100"></a>00100 <
|
126
|
-
<a name="l00101"></a>00101
|
127
|
-
<a name="l00102"></a>00102
|
128
|
-
<a name="l00103"></a>00103
|
129
|
-
<a name="l00104"></a>00104
|
130
|
-
<a name="l00105"></a>00105
|
131
|
-
<a name="l00106"></a>00106
|
132
|
-
<a name="l00107"></a>00107
|
133
|
-
<a name="l00108"></a>00108
|
134
|
-
<a name="l00109"></a>00109
|
135
|
-
<a name="l00110"></a>00110
|
136
|
-
<a name="l00111"></a>00111
|
137
|
-
<a name="l00112"></a>00112
|
138
|
-
<a name="l00113"></a>00113
|
139
|
-
<a name="l00114"></a>00114
|
140
|
-
<a name="l00115"></a>00115
|
141
|
-
<a name="l00116"></a>00116
|
142
|
-
<a name="l00117"></a>00117
|
125
|
+
<a name="l00100"></a>00100 <a class="code" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a>(<span class="keyword">const</span> <a class="code" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> &b) {
|
126
|
+
<a name="l00101"></a>00101 content = b.content;
|
127
|
+
<a name="l00102"></a>00102 len = b.len;
|
128
|
+
<a name="l00103"></a>00103 }
|
129
|
+
<a name="l00104"></a>00104
|
130
|
+
<a name="l00105"></a>00105 StaticString(<span class="keyword">const</span> <span class="keywordtype">string</span> &s) {
|
131
|
+
<a name="l00106"></a>00106 content = s.data();
|
132
|
+
<a name="l00107"></a>00107 len = s.size();
|
133
|
+
<a name="l00108"></a>00108 }
|
134
|
+
<a name="l00109"></a>00109
|
135
|
+
<a name="l00110"></a>00110 StaticString(<span class="keyword">const</span> <span class="keywordtype">char</span> *data) {
|
136
|
+
<a name="l00111"></a>00111 content = data;
|
137
|
+
<a name="l00112"></a>00112 len = strlen(data);
|
138
|
+
<a name="l00113"></a>00113 }
|
139
|
+
<a name="l00114"></a>00114
|
140
|
+
<a name="l00115"></a>00115 StaticString(<span class="keyword">const</span> <span class="keywordtype">char</span> *data, string::size_type len) {
|
141
|
+
<a name="l00116"></a>00116 content = data;
|
142
|
+
<a name="l00117"></a>00117 this->len = len;
|
143
143
|
<a name="l00118"></a>00118 }
|
144
144
|
<a name="l00119"></a>00119
|
145
|
-
<a name="l00120"></a>00120 <span class="keywordtype">bool</span>
|
146
|
-
<a name="l00121"></a>00121 <span class="keywordflow">return</span> len ==
|
145
|
+
<a name="l00120"></a>00120 <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{
|
146
|
+
<a name="l00121"></a>00121 <span class="keywordflow">return</span> len == 0;
|
147
147
|
<a name="l00122"></a>00122 }
|
148
148
|
<a name="l00123"></a>00123
|
149
|
-
<a name="l00124"></a>00124
|
150
|
-
<a name="l00125"></a>00125 <span class="keywordflow">return</span> len
|
149
|
+
<a name="l00124"></a>00124 string::size_type size()<span class="keyword"> const </span>{
|
150
|
+
<a name="l00125"></a>00125 <span class="keywordflow">return</span> len;
|
151
151
|
<a name="l00126"></a>00126 }
|
152
152
|
<a name="l00127"></a>00127
|
153
|
-
<a name="l00128"></a>00128 <span class="keywordtype">
|
154
|
-
<a name="l00129"></a>00129 <span class="keywordflow">return</span>
|
153
|
+
<a name="l00128"></a>00128 <span class="keywordtype">char</span> operator[](string::size_type i)<span class="keyword"> const </span>{
|
154
|
+
<a name="l00129"></a>00129 <span class="keywordflow">return</span> content[i];
|
155
155
|
<a name="l00130"></a>00130 }
|
156
156
|
<a name="l00131"></a>00131
|
157
|
-
<a name="l00132"></a>00132 <span class="keywordtype">
|
158
|
-
<a name="l00133"></a>00133 <span class="
|
159
|
-
<a name="l00134"></a>00134
|
160
|
-
<a name="l00135"></a>00135
|
161
|
-
<a name="l00136"></a>00136
|
162
|
-
<a name="l00137"></a>00137
|
163
|
-
<a name="l00138"></a>00138
|
164
|
-
<a name="l00139"></a>00139
|
165
|
-
<a name="l00140"></a>00140
|
166
|
-
<a name="l00141"></a>00141
|
167
|
-
<a name="l00142"></a>00142
|
168
|
-
<a name="l00143"></a>00143
|
169
|
-
<a name="l00144"></a>00144
|
170
|
-
<a name="l00145"></a>00145
|
171
|
-
<a name="l00146"></a>00146
|
172
|
-
<a name="l00147"></a>00147
|
173
|
-
<a name="l00148"></a>00148
|
174
|
-
<a name="l00149"></a>00149
|
175
|
-
<a name="l00150"></a>00150
|
176
|
-
<a name="l00151"></a>00151
|
177
|
-
<a name="l00152"></a>00152
|
178
|
-
<a name="l00153"></a>00153 <span class="keywordflow">
|
179
|
-
<a name="l00154"></a>00154
|
180
|
-
<a name="l00155"></a>00155
|
181
|
-
<a name="l00156"></a>00156
|
182
|
-
<a name="l00157"></a>00157
|
183
|
-
<a name="l00158"></a>00158
|
184
|
-
<a name="l00159"></a>00159
|
185
|
-
<a name="l00160"></a>00160
|
186
|
-
<a name="l00161"></a>00161
|
187
|
-
<a name="l00162"></a>00162
|
188
|
-
<a name="l00163"></a>00163
|
189
|
-
<a name="l00164"></a>00164
|
190
|
-
<a name="l00165"></a>00165
|
191
|
-
<a name="l00166"></a>00166
|
192
|
-
<a name="l00167"></a>00167
|
193
|
-
<a name="l00168"></a>00168
|
194
|
-
<a name="l00169"></a>00169
|
195
|
-
<a name="l00170"></a>00170
|
196
|
-
<a name="l00171"></a>00171
|
197
|
-
<a name="l00172"></a>00172
|
198
|
-
<a name="l00173"></a>00173
|
199
|
-
<a name="l00174"></a>00174
|
200
|
-
<a name="l00175"></a>00175
|
201
|
-
<a name="l00176"></a>00176
|
202
|
-
<a name="l00177"></a>00177
|
203
|
-
<a name="l00178"></a>00178
|
204
|
-
<a name="l00179"></a>00179 <span class="keywordflow">
|
205
|
-
<a name="l00180"></a>00180
|
206
|
-
<a name="l00181"></a>00181
|
207
|
-
<a name="l00182"></a>00182
|
208
|
-
<a name="l00183"></a>00183
|
209
|
-
<a name="l00184"></a>00184
|
210
|
-
<a name="l00185"></a>00185
|
211
|
-
<a name="l00186"></a>00186
|
212
|
-
<a name="l00187"></a>00187
|
213
|
-
<a name="l00188"></a>00188 <span class="keyword">
|
214
|
-
<a name="l00189"></a>00189
|
215
|
-
<a name="l00190"></a>00190
|
216
|
-
<a name="l00191"></a>00191
|
217
|
-
<a name="l00192"></a>00192
|
218
|
-
<a name="l00193"></a>00193
|
219
|
-
<a name="l00194"></a>00194
|
220
|
-
<a name="l00195"></a>00195
|
221
|
-
<a name="l00196"></a>00196
|
222
|
-
<a name="l00197"></a>00197
|
223
|
-
<a name="l00198"></a>00198
|
224
|
-
<a name="l00199"></a>00199
|
225
|
-
<a name="l00200"></a>00200
|
226
|
-
<a name="l00201"></a>00201
|
227
|
-
<a name="l00202"></a>00202
|
228
|
-
<a name="l00203"></a>00203 <span class="
|
229
|
-
<a name="l00204"></a>00204
|
230
|
-
<a name="l00205"></a>00205
|
231
|
-
<a name="l00206"></a>00206
|
232
|
-
<a name="l00207"></a>00207 operator==(<span class="keyword">const</span> <span class="keywordtype">char</span> *other
|
233
|
-
<a name="l00208"></a>00208
|
234
|
-
<a name="l00209"></a>00209
|
235
|
-
<a name="l00210"></a>00210
|
236
|
-
<a name="l00211"></a>00211
|
237
|
-
<a name="l00212"></a>00212
|
238
|
-
<a name="l00213"></a>00213
|
239
|
-
<a name="l00214"></a>00214
|
240
|
-
<a name="l00215"></a>00215
|
241
|
-
<a name="l00216"></a>00216 <span class="keyword">
|
242
|
-
<a name="l00217"></a>00217
|
243
|
-
<a name="l00218"></a>00218
|
244
|
-
<a name="l00219"></a>00219
|
245
|
-
<a name="l00220"></a>00220
|
246
|
-
<a name="l00221"></a>00221
|
247
|
-
<a name="l00222"></a>00222
|
248
|
-
<a name="l00223"></a>00223
|
157
|
+
<a name="l00132"></a>00132 <span class="keywordtype">char</span> at(string::size_type i)<span class="keyword"> const </span>{
|
158
|
+
<a name="l00133"></a>00133 <span class="keywordflow">return</span> content[i];
|
159
|
+
<a name="l00134"></a>00134 }
|
160
|
+
<a name="l00135"></a>00135
|
161
|
+
<a name="l00136"></a>00136 <span class="keyword">const</span> <span class="keywordtype">char</span> *c_str()<span class="keyword"> const </span>{
|
162
|
+
<a name="l00137"></a>00137 <span class="keywordflow">return</span> content;
|
163
|
+
<a name="l00138"></a>00138 }
|
164
|
+
<a name="l00139"></a>00139
|
165
|
+
<a name="l00140"></a>00140 <span class="keyword">const</span> <span class="keywordtype">char</span> *data()<span class="keyword"> const </span>{
|
166
|
+
<a name="l00141"></a>00141 <span class="keywordflow">return</span> content;
|
167
|
+
<a name="l00142"></a>00142 }
|
168
|
+
<a name="l00143"></a>00143
|
169
|
+
<a name="l00144"></a>00144 <span class="keywordtype">string</span> toString()<span class="keyword"> const </span>{
|
170
|
+
<a name="l00145"></a>00145 <span class="keywordflow">return</span> string(content, len);
|
171
|
+
<a name="l00146"></a>00146 }
|
172
|
+
<a name="l00147"></a>00147
|
173
|
+
<a name="l00148"></a>00148 <span class="keywordtype">bool</span> equals(<span class="keyword">const</span> StaticString &other)<span class="keyword"> const </span>{
|
174
|
+
<a name="l00149"></a>00149 <span class="keywordflow">return</span> len == other.len && memcmp(content, other.content, len) == 0;
|
175
|
+
<a name="l00150"></a>00150 }
|
176
|
+
<a name="l00151"></a>00151
|
177
|
+
<a name="l00152"></a>00152 <span class="keywordtype">bool</span> equals(<span class="keyword">const</span> <span class="keywordtype">string</span> &other)<span class="keyword"> const </span>{
|
178
|
+
<a name="l00153"></a>00153 <span class="keywordflow">return</span> len == other.size() && memcmp(content, other.data(), len) == 0;
|
179
|
+
<a name="l00154"></a>00154 }
|
180
|
+
<a name="l00155"></a>00155
|
181
|
+
<a name="l00156"></a>00156 string::size_type find(<span class="keywordtype">char</span> c, string::size_type pos = 0)<span class="keyword"> const </span>{
|
182
|
+
<a name="l00157"></a>00157 <span class="keywordflow">if</span> (pos < len) {
|
183
|
+
<a name="l00158"></a>00158 <span class="keyword">const</span> <span class="keywordtype">char</span> *result = (<span class="keyword">const</span> <span class="keywordtype">char</span> *) memchr(content + pos, c, len - pos);
|
184
|
+
<a name="l00159"></a>00159 <span class="keywordflow">if</span> (result == NULL) {
|
185
|
+
<a name="l00160"></a>00160 <span class="keywordflow">return</span> string::npos;
|
186
|
+
<a name="l00161"></a>00161 } <span class="keywordflow">else</span> {
|
187
|
+
<a name="l00162"></a>00162 <span class="keywordflow">return</span> result - content;
|
188
|
+
<a name="l00163"></a>00163 }
|
189
|
+
<a name="l00164"></a>00164 } <span class="keywordflow">else</span> {
|
190
|
+
<a name="l00165"></a>00165 <span class="keywordflow">return</span> string::npos;
|
191
|
+
<a name="l00166"></a>00166 }
|
192
|
+
<a name="l00167"></a>00167 }
|
193
|
+
<a name="l00168"></a>00168
|
194
|
+
<a name="l00169"></a>00169 string::size_type find(<span class="keyword">const</span> StaticString &s, string::size_type pos = 0)<span class="keyword"> const </span>{
|
195
|
+
<a name="l00170"></a>00170 <span class="keywordflow">if</span> (s.empty()) {
|
196
|
+
<a name="l00171"></a>00171 <span class="keywordflow">return</span> 0;
|
197
|
+
<a name="l00172"></a>00172 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pos < len) {
|
198
|
+
<a name="l00173"></a>00173 <span class="keyword">const</span> <span class="keywordtype">char</span> *result = memmem(content + pos, len - pos, s.c_str(), s.size());
|
199
|
+
<a name="l00174"></a>00174 <span class="keywordflow">if</span> (result == NULL) {
|
200
|
+
<a name="l00175"></a>00175 <span class="keywordflow">return</span> string::npos;
|
201
|
+
<a name="l00176"></a>00176 } <span class="keywordflow">else</span> {
|
202
|
+
<a name="l00177"></a>00177 <span class="keywordflow">return</span> result - content;
|
203
|
+
<a name="l00178"></a>00178 }
|
204
|
+
<a name="l00179"></a>00179 } <span class="keywordflow">else</span> {
|
205
|
+
<a name="l00180"></a>00180 <span class="keywordflow">return</span> string::npos;
|
206
|
+
<a name="l00181"></a>00181 }
|
207
|
+
<a name="l00182"></a>00182 }
|
208
|
+
<a name="l00183"></a>00183
|
209
|
+
<a name="l00184"></a>00184 string::size_type find(<span class="keyword">const</span> <span class="keywordtype">char</span> *s, string::size_type pos, string::size_type n)<span class="keyword"> const </span>{
|
210
|
+
<a name="l00185"></a>00185 <span class="keywordflow">return</span> find(StaticString(s, n), pos);
|
211
|
+
<a name="l00186"></a>00186 }
|
212
|
+
<a name="l00187"></a>00187
|
213
|
+
<a name="l00188"></a>00188 StaticString substr(string::size_type pos = 0, string::size_type n = string::npos)<span class="keyword"> const </span>{
|
214
|
+
<a name="l00189"></a>00189 <span class="keywordflow">if</span> (pos > len) {
|
215
|
+
<a name="l00190"></a>00190 <span class="keywordflow">throw</span> out_of_range(<span class="stringliteral">"Argument 'pos' out of range"</span>);
|
216
|
+
<a name="l00191"></a>00191 } <span class="keywordflow">else</span> {
|
217
|
+
<a name="l00192"></a>00192 <span class="keywordflow">if</span> (n > len - pos) {
|
218
|
+
<a name="l00193"></a>00193 n = len - pos;
|
219
|
+
<a name="l00194"></a>00194 }
|
220
|
+
<a name="l00195"></a>00195 <span class="keywordflow">return</span> StaticString(content + pos, n);
|
221
|
+
<a name="l00196"></a>00196 }
|
222
|
+
<a name="l00197"></a>00197 }
|
223
|
+
<a name="l00198"></a>00198
|
224
|
+
<a name="l00199"></a>00199 <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> StaticString &other)<span class="keyword"> const </span>{
|
225
|
+
<a name="l00200"></a>00200 <span class="keywordflow">return</span> len == other.len && memcmp(content, other.content, len) == 0;
|
226
|
+
<a name="l00201"></a>00201 }
|
227
|
+
<a name="l00202"></a>00202
|
228
|
+
<a name="l00203"></a>00203 <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <span class="keywordtype">string</span> &other)<span class="keyword"> const </span>{
|
229
|
+
<a name="l00204"></a>00204 <span class="keywordflow">return</span> len == other.size() && memcmp(content, other.data(), len) == 0;
|
230
|
+
<a name="l00205"></a>00205 }
|
231
|
+
<a name="l00206"></a>00206
|
232
|
+
<a name="l00207"></a>00207 <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <span class="keywordtype">char</span> *other)<span class="keyword"> const </span>{
|
233
|
+
<a name="l00208"></a>00208 <span class="keywordtype">size_t</span> other_len = strlen(other);
|
234
|
+
<a name="l00209"></a>00209 <span class="keywordflow">return</span> len == other_len && memcmp(content, other, other_len) == 0;
|
235
|
+
<a name="l00210"></a>00210 }
|
236
|
+
<a name="l00211"></a>00211
|
237
|
+
<a name="l00212"></a>00212 <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> StaticString &other)<span class="keyword"> const </span>{
|
238
|
+
<a name="l00213"></a>00213 <span class="keywordflow">return</span> len != other.len || memcmp(content, other.content, len) != 0;
|
239
|
+
<a name="l00214"></a>00214 }
|
240
|
+
<a name="l00215"></a>00215
|
241
|
+
<a name="l00216"></a>00216 <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <span class="keywordtype">string</span> &other)<span class="keyword"> const </span>{
|
242
|
+
<a name="l00217"></a>00217 <span class="keywordflow">return</span> len != other.size() || memcmp(content, other.data(), len) != 0;
|
243
|
+
<a name="l00218"></a>00218 }
|
244
|
+
<a name="l00219"></a>00219
|
245
|
+
<a name="l00220"></a>00220 <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <span class="keywordtype">char</span> *other)<span class="keyword"> const </span>{
|
246
|
+
<a name="l00221"></a>00221 <span class="keywordtype">size_t</span> other_len = strlen(other);
|
247
|
+
<a name="l00222"></a>00222 <span class="keywordflow">return</span> len != other_len || memcmp(content, other, other_len) != 0;
|
248
|
+
<a name="l00223"></a>00223 }
|
249
|
+
<a name="l00224"></a>00224
|
250
|
+
<a name="l00225"></a>00225 <span class="keywordtype">bool</span> operator<(<span class="keyword">const</span> StaticString &other)<span class="keyword"> const </span>{
|
251
|
+
<a name="l00226"></a>00226 <span class="keywordtype">size_t</span> size = (len < other.size()) ? len : other.size();
|
252
|
+
<a name="l00227"></a>00227 <span class="keywordtype">int</span> result = memcmp(content, other.data(), size);
|
253
|
+
<a name="l00228"></a>00228 <span class="keywordflow">if</span> (result == 0) {
|
254
|
+
<a name="l00229"></a>00229 <span class="keywordflow">return</span> len < other.size();
|
255
|
+
<a name="l00230"></a>00230 } <span class="keywordflow">else</span> {
|
256
|
+
<a name="l00231"></a>00231 <span class="keywordflow">return</span> result < 0;
|
257
|
+
<a name="l00232"></a>00232 }
|
258
|
+
<a name="l00233"></a>00233 }
|
259
|
+
<a name="l00234"></a>00234
|
260
|
+
<a name="l00235"></a>00235 <span class="keywordtype">bool</span> operator<(<span class="keyword">const</span> <span class="keywordtype">char</span> *other)<span class="keyword"> const </span>{
|
261
|
+
<a name="l00236"></a>00236 <span class="keywordflow">return</span> *<span class="keyword">this</span> < StaticString(other);
|
262
|
+
<a name="l00237"></a>00237 }
|
263
|
+
<a name="l00238"></a>00238
|
264
|
+
<a name="l00239"></a>00239 <span class="keywordtype">string</span> operator+(<span class="keyword">const</span> <span class="keywordtype">char</span> *other)<span class="keyword"> const </span>{
|
265
|
+
<a name="l00240"></a>00240 <span class="keywordflow">return</span> string(content, len) + other;
|
266
|
+
<a name="l00241"></a>00241 }
|
267
|
+
<a name="l00242"></a>00242
|
268
|
+
<a name="l00243"></a>00243 <span class="keywordtype">string</span> operator+(<span class="keyword">const</span> <span class="keywordtype">string</span> &other)<span class="keyword"> const </span>{
|
269
|
+
<a name="l00244"></a>00244 <span class="keywordflow">return</span> string(content, len) + other;
|
270
|
+
<a name="l00245"></a>00245 }
|
271
|
+
<a name="l00246"></a>00246
|
272
|
+
<a name="l00247"></a>00247 <span class="keywordtype">string</span> operator+(<span class="keyword">const</span> StaticString &other)<span class="keyword"> const </span>{
|
273
|
+
<a name="l00248"></a>00248 <span class="keywordtype">string</span> result(content, len);
|
274
|
+
<a name="l00249"></a>00249 result.append(other.data(), other.size());
|
275
|
+
<a name="l00250"></a>00250 <span class="keywordflow">return</span> result;
|
276
|
+
<a name="l00251"></a>00251 }
|
277
|
+
<a name="l00252"></a>00252
|
278
|
+
<a name="l00253"></a>00253 operator string()<span class="keyword"> const </span>{
|
279
|
+
<a name="l00254"></a>00254 <span class="keywordflow">return</span> string(content, len);
|
280
|
+
<a name="l00255"></a>00255 }
|
281
|
+
<a name="l00256"></a>00256 };
|
282
|
+
<a name="l00257"></a>00257
|
283
|
+
<a name="l00258"></a>00258 <span class="keyword">inline</span> <span class="keywordtype">string</span>
|
284
|
+
<a name="l00259"></a>00259 operator+(<span class="keyword">const</span> <span class="keywordtype">char</span> *lhs, <span class="keyword">const</span> StaticString &rhs) {
|
285
|
+
<a name="l00260"></a>00260 <span class="keywordflow">return</span> StaticString(lhs) + rhs;
|
286
|
+
<a name="l00261"></a>00261 }
|
287
|
+
<a name="l00262"></a>00262
|
288
|
+
<a name="l00263"></a>00263 <span class="keyword">inline</span> <span class="keywordtype">string</span>
|
289
|
+
<a name="l00264"></a>00264 operator+(<span class="keyword">const</span> <span class="keywordtype">string</span> &lhs, <span class="keyword">const</span> StaticString &rhs) {
|
290
|
+
<a name="l00265"></a>00265 <span class="keywordtype">string</span> result = lhs;
|
291
|
+
<a name="l00266"></a>00266 result.append(rhs.data(), rhs.size());
|
292
|
+
<a name="l00267"></a>00267 <span class="keywordflow">return</span> result;
|
293
|
+
<a name="l00268"></a>00268 }
|
294
|
+
<a name="l00269"></a>00269
|
295
|
+
<a name="l00270"></a>00270 <span class="keyword">inline</span> ostream &
|
296
|
+
<a name="l00271"></a>00271 operator<<(ostream &os, <span class="keyword">const</span> StaticString &str) {
|
297
|
+
<a name="l00272"></a>00272 os.write(str.data(), str.size());
|
298
|
+
<a name="l00273"></a>00273 <span class="keywordflow">return</span> os;
|
299
|
+
<a name="l00274"></a>00274 }
|
300
|
+
<a name="l00275"></a>00275
|
301
|
+
<a name="l00276"></a>00276 <span class="keyword">inline</span> <span class="keywordtype">bool</span>
|
302
|
+
<a name="l00277"></a>00277 operator==(<span class="keyword">const</span> <span class="keywordtype">string</span> &other, <span class="keyword">const</span> StaticString &str) {
|
303
|
+
<a name="l00278"></a>00278 <span class="keywordflow">return</span> str == other;
|
304
|
+
<a name="l00279"></a>00279 }
|
305
|
+
<a name="l00280"></a>00280
|
306
|
+
<a name="l00281"></a>00281 <span class="keyword">inline</span> <span class="keywordtype">bool</span>
|
307
|
+
<a name="l00282"></a>00282 operator==(<span class="keyword">const</span> <span class="keywordtype">char</span> *other, <span class="keyword">const</span> StaticString &str) {
|
308
|
+
<a name="l00283"></a>00283 <span class="keywordflow">return</span> str == other;
|
309
|
+
<a name="l00284"></a>00284 }
|
310
|
+
<a name="l00285"></a>00285
|
311
|
+
<a name="l00286"></a>00286 <span class="keyword">inline</span> <span class="keywordtype">bool</span>
|
312
|
+
<a name="l00287"></a>00287 operator!=(<span class="keyword">const</span> <span class="keywordtype">string</span> &other, <span class="keyword">const</span> StaticString &str) {
|
313
|
+
<a name="l00288"></a>00288 <span class="keywordflow">return</span> str != other;
|
314
|
+
<a name="l00289"></a>00289 }
|
315
|
+
<a name="l00290"></a>00290
|
316
|
+
<a name="l00291"></a>00291 <span class="keyword">inline</span> <span class="keywordtype">bool</span>
|
317
|
+
<a name="l00292"></a>00292 operator!=(<span class="keyword">const</span> <span class="keywordtype">char</span> *other, <span class="keyword">const</span> StaticString &str) {
|
318
|
+
<a name="l00293"></a>00293 <span class="keywordflow">return</span> str != other;
|
319
|
+
<a name="l00294"></a>00294 }
|
320
|
+
<a name="l00295"></a>00295
|
321
|
+
<a name="l00296"></a>00296 } <span class="comment">// namespace Passenger</span>
|
322
|
+
<a name="l00297"></a>00297
|
323
|
+
<a name="l00298"></a>00298 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_STATIC_STRING_H_ */</span>
|
249
324
|
</pre></div></div>
|
250
325
|
<hr size="1"/><address style="text-align: right;"><small>Generated by
|
251
326
|
<a href="http://www.doxygen.org/index.html">
|