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