home *** CD-ROM | disk | FTP | other *** search
- #
- # /*
- # * *********** WARNING **************
- # * This file generated by ModPerl::WrapXS/0.01
- # * Any changes made here will be lost
- # * ***********************************
- # * 01: lib/ModPerl/Code.pm:701
- # * 02: O:\147xampp\sources\mod_perl-1.99_16\blib\lib/ModPerl/WrapXS.pm:712
- # * 03: O:\147xampp\sources\mod_perl-1.99_16\blib\lib/ModPerl/WrapXS.pm:1103
- # * 04: Makefile.PL:335
- # * 05: Makefile.PL:283
- # * 06: Makefile.PL:51
- # */
- #
-
- package ModPerl::MethodLookup;
-
- use strict;
- use warnings;
-
- my $methods = {
- 'BINMODE' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'CLEAR' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'CLOSE' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'DELETE' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'DESTROY' => [
- [
- 'APR::ThreadMutex',
- 'APR::ThreadMutex'
- ],
- [
- 'Apache::SubRequest',
- 'Apache::SubRequest'
- ],
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'EXISTS' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'FETCH' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'FILENO' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'FIRSTKEY' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'GETC' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'LOG_MARK' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'MODIFY_CODE_ATTRIBUTES' => [
- [
- 'Apache::Filter',
- undef
- ]
- ],
- 'NEXTKEY' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'OPEN' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'PRINT' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'PRINTF' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'READ' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'STORE' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'TIEHANDLE' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'UNTIE' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'WRITE' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'aborted' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'add' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'add_config' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'add_input_filter' => [
- [
- 'Apache::Filter',
- 'Apache::Connection'
- ],
- [
- 'Apache::Filter',
- 'Apache::RequestRec'
- ]
- ],
- 'add_output_filter' => [
- [
- 'Apache::Filter',
- 'Apache::Connection'
- ],
- [
- 'Apache::Filter',
- 'Apache::RequestRec'
- ]
- ],
- 'add_version_component' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ]
- ],
- 'addrs' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'alert' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'allow_methods' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'allow_options' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'allow_overrides' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'allowed' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'allowed_methods' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'allowed_xmethods' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'ap_auth_type' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'args' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'args_how' => [
- [
- 'Apache::Command',
- 'Apache::Command'
- ]
- ],
- 'as_hash' => [
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'as_string' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'assbackwards' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'atime' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'auth_name' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'auth_type' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'base_server' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'bind' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'bucket_alloc' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'bytes_sent' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'c' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'check_cmd_context' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ]
- ],
- 'cleanup' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'cleanup_for_exec' => [
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'cleanup_register' => [
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'clear' => [
- [
- 'APR::Table',
- 'APR::Table'
- ],
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'client_socket' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'close' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'cmd' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ]
- ],
- 'cmds' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'compress' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'concat' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'conftree' => [
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'conn_config' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'connect' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'connection' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'construct_server' => [
- [
- 'Apache::URI',
- 'Apache::RequestRec'
- ]
- ],
- 'construct_url' => [
- [
- 'Apache::URI',
- 'Apache::RequestRec'
- ]
- ],
- 'content_encoding' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'content_languages' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'content_type' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'context' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ]
- ],
- 'copy' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'crit' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'csize' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'ctime' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'ctx' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'current_callback' => [
- [
- 'ModPerl::Util',
- 'Apache'
- ]
- ],
- 'custom_response' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'data' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'debug' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'decode' => [
- [
- 'APR::Base64',
- undef
- ]
- ],
- 'default_type' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'delete' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'destroy' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ],
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ],
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'device' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'die' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'dir_config' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'directive' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ],
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'discard_request_body' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'do' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'document_root' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'emerg' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'encode' => [
- [
- 'APR::Base64',
- undef
- ]
- ],
- 'encode_len' => [
- [
- 'APR::Base64',
- 'APR::Base64'
- ]
- ],
- 'eos_create' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'equal' => [
- [
- 'APR::SockAddr',
- 'APR::SockAddr'
- ]
- ],
- 'err_headers_out' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'errmsg' => [
- [
- 'Apache::Command',
- 'Apache::Command'
- ]
- ],
- 'error' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'error_fname' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'error_log2stderr' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ]
- ],
- 'escape_path' => [
- [
- 'Apache::Util',
- 'Apache::Util'
- ]
- ],
- 'exists_config_define' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerUtil'
- ]
- ],
- 'exit' => [
- [
- 'ModPerl::Util',
- 'ModPerl::Util'
- ]
- ],
- 'fflush' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'filename' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'filepath_name_get' => [
- [
- 'APR::Util',
- 'APR::Util'
- ]
- ],
- 'filetype' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'filter_flush' => [
- [
- 'Apache::Filter',
- 'APR::Brigade'
- ]
- ],
- 'find_linked_module' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'finfo' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'first' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'first_child' => [
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'flatten' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'flush_create' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'fname' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'format' => [
- [
- 'APR::UUID',
- undef
- ]
- ],
- 'format_size' => [
- [
- 'APR::String',
- 'APR::String'
- ]
- ],
- 'fragment' => [
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'frec' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'get' => [
- [
- 'APR::Table',
- undef
- ]
- ],
- 'get_basic_auth_pw' => [
- [
- 'Apache::Access',
- undef
- ]
- ],
- 'get_brigade' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'get_client_block' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'get_config' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'get_handlers' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'get_limit_req_body' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'get_remote_host' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'get_remote_logname' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'get_server_name' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'get_server_port' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'get_status_line' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestUtil'
- ]
- ],
- 'group' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'handler' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'header_only' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'headers_in' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'headers_out' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'hostinfo' => [
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'hostname' => [
- [
- 'APR::URI',
- 'APR::URI'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'ht_time' => [
- [
- 'Apache::Util',
- 'Apache::Util'
- ]
- ],
- 'id' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'info' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ],
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'inode' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'input_filters' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'insert_after' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'insert_before' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'insert_head' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'insert_tail' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'internal_fast_redirect' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'internal_redirect' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'internal_redirect_handler' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'invoke_handler' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'ip_get' => [
- [
- 'APR::SockAddr',
- 'APR::SockAddr'
- ]
- ],
- 'is_ancestor' => [
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'is_empty' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'is_eos' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'is_flush' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'is_initial_req' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'is_perl_option_enabled' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'is_virtual' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'keep_alive' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'keep_alive_max' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'keep_alive_timeout' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'keepalive' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'keepalives' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'last' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'length' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ],
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'limit_req_fields' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'limit_req_fieldsize' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'limit_req_line' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'line_num' => [
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'listen' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'loaded' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'local_addr' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'local_host' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'local_ip' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'location' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'location_merge' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'lock' => [
- [
- 'APR::ThreadMutex',
- 'APR::ThreadMutex'
- ]
- ],
- 'log' => [
- [
- 'Apache::Log',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::Log',
- 'Apache::RequestRec'
- ]
- ],
- 'log_error' => [
- [
- 'Apache::Log',
- undef
- ],
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'log_pid' => [
- [
- 'Apache::Log',
- 'Apache::Log'
- ]
- ],
- 'log_rerror' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'log_serror' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'loglevel' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'lookup' => [
- [
- 'Apache::Directive',
- undef
- ]
- ],
- 'lookup_defaults' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'lookup_dirent' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'lookup_file' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'lookup_method_uri' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'lookup_uri' => [
- [
- 'Apache::SubRequest',
- 'Apache::RequestRec'
- ]
- ],
- 'main' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'make' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'make_etag' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'meets_conditions' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'merge' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'method' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'method_is_limited' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ]
- ],
- 'method_number' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'method_register' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ]
- ],
- 'minor_version' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'module_config' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'module_index' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'mtime' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'name' => [
- [
- 'Apache::FilterRec',
- 'Apache::FilterRec'
- ],
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ],
- [
- 'APR::BucketType',
- 'APR::BucketType'
- ],
- [
- 'Apache::Module',
- 'Apache::Module'
- ],
- [
- 'Apache::Command',
- 'Apache::Command'
- ]
- ],
- 'names' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'new' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ],
- [
- 'APR::UUID',
- 'APR::UUID'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ],
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ],
- [
- 'APR::ThreadMutex',
- 'APR::ThreadMutex'
- ],
- [
- 'APR::IpSubnet',
- 'APR::IpSubnet'
- ],
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'next' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::Module',
- 'Apache::Module'
- ],
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ],
- [
- 'Apache::Command',
- 'Apache::Command'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ],
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'nlink' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'no_cache' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'no_local_copy' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'note_auth_failure' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'note_basic_auth_failure' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'note_digest_auth_failure' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'notes' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'notice' => [
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'opt_get' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'opt_set' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'output_filters' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'overlap' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'overlay' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'override' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ]
- ],
- 'parent' => [
- [
- 'Apache::Directive',
- 'Apache::Directive'
- ]
- ],
- 'parent_get' => [
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'parse' => [
- [
- 'APR::UUID',
- 'APR::UUID'
- ],
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'parse_http' => [
- [
- 'APR::Date',
- 'APR::Date'
- ]
- ],
- 'parse_rfc' => [
- [
- 'APR::Date',
- 'APR::Date'
- ]
- ],
- 'parse_uri' => [
- [
- 'Apache::URI',
- 'Apache::RequestRec'
- ]
- ],
- 'parsed_uri' => [
- [
- 'Apache::URI',
- 'Apache::RequestRec'
- ]
- ],
- 'pass_brigade' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'password' => [
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'password_get' => [
- [
- 'APR::Util',
- 'APR::Util'
- ]
- ],
- 'password_validate' => [
- [
- 'APR::Util',
- 'APR::Util'
- ]
- ],
- 'path' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ],
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ],
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'path_info' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'pconf' => [
- [
- 'Apache::Process',
- 'Apache::Process'
- ]
- ],
- 'per_dir_config' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'pnotes' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'pool' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ],
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ],
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ],
- [
- 'Apache::Process',
- 'Apache::Process'
- ],
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'pool_get' => [
- [
- 'APR::ThreadMutex',
- 'APR::ThreadMutex'
- ]
- ],
- 'port' => [
- [
- 'APR::SockAddr',
- 'APR::SockAddr'
- ],
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ],
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'port_of_scheme' => [
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'prev' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'print' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'printf' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'process' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'protection' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'proto_input_filters' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'proto_num' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'proto_output_filters' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'protocol' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'proxyreq' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'psignature' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'push_handlers' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'puts' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'query' => [
- [
- 'APR::URI',
- 'APR::URI'
- ],
- [
- 'Apache::MPM',
- 'Apache::MPM'
- ]
- ],
- 'r' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'rationalize_mtime' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'read' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ],
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ],
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'recv' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'recvfrom' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'remote_addr' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'remote_host' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'remote_ip' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'remove' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ],
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'remove_loaded_module' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'req_override' => [
- [
- 'Apache::Command',
- 'Apache::Command'
- ]
- ],
- 'request' => [
- [
- 'Apache::RequestUtil',
- 'Apache'
- ]
- ],
- 'request_config' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'request_time' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'requires' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'rflush' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'run' => [
- [
- 'Apache::SubRequest',
- 'Apache::SubRequest'
- ]
- ],
- 'run_access_checker' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_auth_checker' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_check_user_id' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_fixups' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_handler' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_header_parser' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_log_transaction' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_map_to_storage' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_post_read_request' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_translate_name' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'run_type_checker' => [
- [
- 'Apache::HookRun',
- 'Apache::RequestRec'
- ]
- ],
- 'satisfies' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'sbh' => [
- [
- 'Apache::Connection',
- 'Apache::Connection'
- ]
- ],
- 'scheme' => [
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'seen_eos' => [
- [
- 'Apache::Filter',
- 'Apache::Filter'
- ]
- ],
- 'send' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'send_cgi_header' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'send_error_response' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'send_mmap' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'sendfile' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'sendto' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'server' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ],
- [
- 'Apache::ServerUtil',
- 'Apache'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'server_admin' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'server_hostname' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'server_root_relative' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerUtil'
- ]
- ],
- 'set' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'set_basic_credentials' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'set_content_length' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'set_etag' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'set_handlers' => [
- [
- 'Apache::ServerUtil',
- 'Apache::ServerRec'
- ],
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'set_keepalive' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'set_last_modified' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'setup_client_block' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'short_name' => [
- [
- 'Apache::Process',
- 'Apache::Process'
- ]
- ],
- 'should_client_block' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ],
- 'size' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'slurp_filename' => [
- [
- 'Apache::RequestUtil',
- 'Apache::RequestRec'
- ]
- ],
- 'some_auth_required' => [
- [
- 'Apache::Access',
- 'Apache::RequestRec'
- ]
- ],
- 'spawn_proc_prog' => [
- [
- 'Apache::SubProcess',
- undef
- ]
- ],
- 'special_list_call' => [
- [
- 'ModPerl::Global',
- 'ModPerl::Global'
- ]
- ],
- 'special_list_clear' => [
- [
- 'ModPerl::Global',
- 'ModPerl::Global'
- ]
- ],
- 'special_list_register' => [
- [
- 'ModPerl::Global',
- 'ModPerl::Global'
- ]
- ],
- 'split' => [
- [
- 'APR::Brigade',
- 'APR::Brigade'
- ]
- ],
- 'start' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'stat' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'status' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'status_line' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'strerror' => [
- [
- 'APR::Error',
- 'APR::Error'
- ]
- ],
- 'subprocess_env' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'tag' => [
- [
- 'APR::Pool',
- 'APR::Pool'
- ]
- ],
- 'temp_pool' => [
- [
- 'Apache::CmdParms',
- 'Apache::CmdParms'
- ]
- ],
- 'test' => [
- [
- 'APR::IpSubnet',
- 'APR::IpSubnet'
- ]
- ],
- 'the_request' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'thread_current' => [
- [
- 'APR::OS',
- 'APR::OS'
- ]
- ],
- 'timeout' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'timeout_get' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'timeout_set' => [
- [
- 'APR::Socket',
- 'APR::Socket'
- ]
- ],
- 'top_module' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'trylock' => [
- [
- 'APR::ThreadMutex',
- 'APR::ThreadMutex'
- ]
- ],
- 'type' => [
- [
- 'APR::Bucket',
- 'APR::Bucket'
- ]
- ],
- 'unescape_url' => [
- [
- 'Apache::URI',
- 'Apache::URI'
- ]
- ],
- 'unlock' => [
- [
- 'APR::ThreadMutex',
- 'APR::ThreadMutex'
- ]
- ],
- 'unparse' => [
- [
- 'APR::URI',
- 'APR::URI'
- ]
- ],
- 'unparsed_uri' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'unset' => [
- [
- 'APR::Table',
- 'APR::Table'
- ]
- ],
- 'untaint' => [
- [
- 'ModPerl::Util',
- 'ModPerl::Util'
- ]
- ],
- 'update_mtime' => [
- [
- 'Apache::Response',
- 'Apache::RequestRec'
- ]
- ],
- 'uri' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'used_path_info' => [
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'user' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ],
- [
- 'APR::URI',
- 'APR::URI'
- ],
- [
- 'Apache::RequestRec',
- 'Apache::RequestRec'
- ]
- ],
- 'valid' => [
- [
- 'APR::Finfo',
- 'APR::Finfo'
- ]
- ],
- 'version' => [
- [
- 'Apache::Module',
- 'Apache::Module'
- ]
- ],
- 'warn' => [
- [
- 'Apache::Log',
- undef
- ],
- [
- 'Apache::Log',
- undef
- ],
- [
- 'Apache::Log',
- undef
- ]
- ],
- 'wild_names' => [
- [
- 'Apache::ServerRec',
- 'Apache::ServerRec'
- ]
- ],
- 'write' => [
- [
- 'Apache::RequestIO',
- 'Apache::RequestRec'
- ]
- ]
- };
-
-
- use base qw(Exporter);
-
- our @EXPORT = qw(print_method print_module print_object);
-
- use constant MODULE => 0;
- use constant OBJECT => 1;
-
- my $modules;
- my $objects;
-
- sub _get_modules {
- for my $method (sort keys %$methods) {
- for my $item ( @{ $methods->{$method} }) {
- push @{ $modules->{$item->[MODULE]} }, [$method, $item->[OBJECT]];
- }
- }
- }
-
- sub _get_objects {
- for my $method (sort keys %$methods) {
- for my $item ( @{ $methods->{$method} }) {
- next unless defined $item->[OBJECT];
- push @{ $objects->{$item->[OBJECT]} }, [$method, $item->[MODULE]];
- }
- }
- }
-
- # if there is only one replacement method in 2.0 API we can
- # automatically lookup it, up however if there are more than one
- # (e.g. new()), we need to use a fully qualified value here
- # of course the same if the package is not a mod_perl one.
- #
- # the first field represents the replacement method or undef if none
- # exists, the second field is for extra comments (e.g. when there is
- # no replacement method)
- my $methods_compat = {
- # Apache::
- gensym => ['Symbol::gensym',
- 'or use "open my $fh, $file"'],
- module => ['Apache::Module::loaded',
- ''],
- define => ['exists_config_define',
- ''],
- httpd_conf => ['add_config',
- ''],
- SERVER_VERSION => ['get_server_version',
- ''],
- can_stack_handlers=> [undef,
- 'there is no more need for that method in mp2'],
-
- # Apache::RequestRec
- soft_timeout => [undef,
- 'there is no more need for that method in mp2'],
- hard_timeout => [undef,
- 'there is no more need for that method in mp2'],
- kill_timeout => [undef,
- 'there is no more need for that method in mp2'],
- reset_timeout => [undef,
- 'there is no more need for that method in mp2'],
- cleanup_for_exec => [undef,
- 'there is no more need for that method in mp2'],
- send_http_header => ['content_type',
- ''],
- header_in => ['headers_in',
- 'this method works in mod_perl 1.0 too'],
- header_out => ['headers_out',
- 'this method works in mod_perl 1.0 too'],
- err_header_out => ['err_headers_out',
- 'this method works in mod_perl 1.0 too'],
- register_cleanup => ['cleanup_register',
- ''],
- post_connection => ['cleanup_register',
- ''],
- content => [undef, # XXX: Apache::Request::what?
- 'use CGI.pm or Apache::Request instead'],
- clear_rgy_endav => ['special_list_clear',
- ''],
- stash_rgy_endav => [undef,
- ''],
- run_rgy_endav => ['special_list_call',
- 'this method is no longer needed'],
- seqno => [undef,
- 'internal to mod_perl 1.0'],
- chdir_file => [undef, # XXX: to be resolved
- 'temporary unavailable till the issue with chdir' .
- ' in the threaded env is resolved'],
- log_reason => ['log_error',
- 'not in the Apache 2.0 API'],
- READLINE => [undef, # XXX: to be resolved
- ''],
- send_fd_length => [undef,
- 'not in the Apache 2.0 API'],
- send_fd => ['sendfile',
- 'requires an offset argument'],
- is_main => ['main',
- 'not in the Apache 2.0 API'],
- cgi_var => ['subprocess_env',
- 'subprocess_env can be used with mod_perl 1.0'],
- cgi_env => ['subprocess_env',
- 'subprocess_env can be used with mod_perl 1.0'],
- each_byterange => [undef,
- 'now handled internally by ap_byterange_filter'],
- set_byterange => [undef,
- 'now handled internally by ap_byterange_filter'],
-
- # Apache::File
- open => [undef,
- ''],
- close => [undef, # XXX: also defined in APR::Socket
- ''],
- tmpfile => [undef,
- 'not in the Apache 2.0 API, ' .
- 'use File::Temp instead'],
-
- # Apache::Util
- size_string => ['format_size',
- ''],
- escape_uri => ['unescape_path',
- ''],
- unescape_uri => ['unescape_url',
- ''],
- escape_html => [undef, # XXX: will be ap_escape_html
- 'ap_escape_html now requires a pool object'],
- parsedate => ['parse_http',
- ''],
- validate_password => ['password_validate',
- ''],
-
- # Apache::Table
- #new => ['make',
- # ''], # XXX: there are other 'new' methods
-
- # Apache::Connection
- auth_type => ['ap_auth_type',
- 'now resides in the request object'],
- };
-
- sub avail_methods_compat {
- return keys %$methods_compat;
- }
-
- sub avail_methods {
- return keys %$methods;
- }
-
- sub avail_modules {
- my %modules = ();
- for my $method (keys %$methods) {
- for my $item ( @{ $methods->{$method} }) {
- $modules{$item->[MODULE]}++;
- }
- }
- return keys %modules;
- }
-
- sub preload_all_modules {
- _get_modules() unless $modules;
- eval "require $_" for keys %$modules;
- }
-
- sub _print_func {
- my $func = shift;
- my @args = @_ ? @_ : @ARGV;
- no strict 'refs';
- print( ($func->($_))[0]) for @args;
- }
-
- sub print_module { _print_func('lookup_module', @_) }
- sub print_object { _print_func('lookup_object', @_) }
-
- sub print_method {
- my @args = @_ ? @_ : @ARGV;
- while (@args) {
- my $method = shift @args;
- my $object = (@args &&
- (ref($args[0]) || $args[0] =~ /^(Apache|ModPerl|APR)/))
- ? shift @args
- : undef;
- print( (lookup_method($method, $object))[0]);
- }
- }
-
- sub sep { return '-' x (shift() + 20) . "\n" }
-
- # what modules contain the passed method.
- # an optional object or a reference to it can be passed to help
- # resolve situations where there is more than one module containing
- # the same method. Inheritance is supported.
- sub lookup_method {
- my ($method, $object) = @_;
-
- unless (defined $method) {
- my $hint = "No 'method' argument was passed\n";
- return ($hint);
- }
-
- # strip the package name for the fully qualified method
- $method =~ s/.+:://;
-
- if (exists $methods_compat->{$method}) {
- my ($replacement, $comment) = @{$methods_compat->{$method}};
- my $hint = "'$method' is not a part of the mod_perl 2.0 API\n";
- $comment = length $comment ? " $comment\n" : "";
-
- # some removed methods have no replacement
- return $hint . "$comment" unless defined $replacement;
-
- $hint .= "use '$replacement' instead. $comment";
-
- # if fully qualified don't look up its container
- return $hint if $replacement =~ /::/;
-
- my ($modules_hint, @modules) = lookup_method($replacement, $object);
- return $hint . $modules_hint;
- }
- elsif (!exists $methods->{$method}) {
- my $hint = "Don't know anything about method '$method'\n";
- return ($hint);
- }
-
- my @items = @{ $methods->{$method} };
- if (@items == 1) {
- my $module = $items[0]->[MODULE];
- my $hint = "To use method '$method' add:\n" . "\tuse $module ();\n";
- # we should really check that the method matches the object if
- # any was passed, but it may not always work
- return ($hint, $module);
- }
- else {
- if (defined $object) {
- my $class = ref $object || $object;
- for my $item (@items) {
- # real class or inheritance
- if ($class eq $item->[OBJECT] or
- (ref($object) && $object->isa($item->[OBJECT]))) {
- my $module = $item->[MODULE];
- my $hint = "To use method '$method' add:\n" .
- "\tuse $module ();\n";
- return ($hint, $module);
- }
- }
- # fall-through
- local $" = ", ";
- my @modules = map $_->[MODULE], @items;
- my $hint = "Several modules (@modules) contain method '$method' " .
- "but none of them matches class '$class';\n";
- return ($hint);
-
- }
- else {
- my %modules = map { $_->[MODULE] => 1 } @items;
- # remove dups if any (e.g. $s->add_input_filter and
- # $r->add_input_filter are loaded by the same Apache::Filter)
- my @modules = keys %modules;
- my $hint;
- if (@modules == 1) {
- $hint = "To use method '$method' add:\n\tuse $modules[0] ();\n";
- return ($hint, $modules[0]);
- }
- else {
- $hint = "There is more than one class with method '$method'\n" .
- "try one of:\n" . join '', map {"\tuse $_ ();\n"} @modules;
- return ($hint, @modules);
- }
- }
- }
- }
-
- # what methods are contained in the passed module name
- sub lookup_module {
- my ($module) = shift;
-
- unless (defined $module) {
- my $hint = "no 'module' argument was passed\n";
- return ($hint);
- }
-
- _get_modules() unless $modules;
-
- unless (exists $modules->{$module}) {
- my $hint = "don't know anything about module '$module'\n";
- return ($hint);
- }
-
- my @methods;
- my $max_len = 6;
- for ( @{ $modules->{$module} } ) {
- $max_len = length $_->[0] if length $_->[0] > $max_len;
- push @methods, $_->[0];
- }
-
- my $format = "%-${max_len}s %s\n";
- my $banner = sprintf($format, "Method", "Invoked on object type");
- my $hint = join '',
- ("\nModule '$module' contains the following XS methods:\n\n",
- $banner, sep(length($banner)),
- map( { sprintf $format, $_->[0], $_->[1]||'???'}
- @{ $modules->{$module} }),
- sep(length($banner)));
-
- return ($hint, @methods);
- }
-
- # what methods can be invoked on the passed object (or its reference)
- sub lookup_object {
- my ($object) = shift;
-
- unless (defined $object) {
- my $hint = "no 'object' argument was passed\n";
- return ($hint);
- }
-
- _get_objects() unless $objects;
-
- # a real object was passed?
- $object = ref $object || $object;
-
- unless (exists $objects->{$object}) {
- my $hint = "don't know anything about objects of type '$object'\n";
- return ($hint);
- }
-
- my @methods;
- my $max_len = 6;
- for ( @{ $objects->{$object} } ) {
- $max_len = length $_->[0] if length $_->[0] > $max_len;
- push @methods, $_->[0];
- }
-
- my $format = "%-${max_len}s %s\n";
- my $banner = sprintf($format, "Method", "Module");
- my $hint = join '',
- ("\nObjects of type '$object' can invoke the following XS methods:\n\n",
- $banner, sep(length($banner)),
- map({ sprintf $format, $_->[0], $_->[1]} @{ $objects->{$object} }),
- sep(length($banner)));
-
- return ($hint, @methods);
-
- }
-
- 1;
-
- =head1 NAME
-
- ModPerl::MethodLookup -- Lookup mod_perl modules, objects and methods
-
- =head1 Synopsis
-
- use ModPerl::MethodLookup;
-
- # return all module names containing XS method 'print'
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method('print');
-
- # return only module names containing method 'print' which
- # expects the first argument to be of type 'Apache::Filter'
- # (here $filter is an Apache::Filter object)
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method('print', $filter);
- # or
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method('print', 'Apache::Filter');
-
- # what XS methods defined by module 'Apache::Filter'
- my($hint, @methods) =
- ModPerl::MethodLookup::lookup_module('Apache::Filter');
-
- # what XS methods can be invoked on the object $r (or a ref)
- my($hint, @methods) =
- ModPerl::MethodLookup::lookup_object($r);
- # or
- my($hint, @methods) =
- ModPerl::MethodLookup::lookup_object('Apache::RequestRec');
-
- # preload all mp2 modules in startup.pl
- ModPerl::MethodLookup::preload_all_modules();
-
- # command line shortcuts
- % perl -MApache2 -MModPerl::MethodLookup -e print_module \
- Apache::RequestRec Apache::Filter
- % perl -MApache2 -MModPerl::MethodLookup -e print_object Apache
- % perl -MApache2 -MModPerl::MethodLookup -e print_method \
- get_server_built request
- % perl -MApache2 -MModPerl::MethodLookup -e print_method read
- % perl -MApache2 -MModPerl::MethodLookup -e print_method read APR::Bucket
-
-
-
-
- =head1 Description
-
- mod_perl 2.0 provides many methods, which reside in various
- modules. One has to load each of the modules before using the desired
- methods. C<ModPerl::MethodLookup> provides the Perl API for finding
- module names which contain methods in question and other helper
- functions, to find out out what methods defined by some module, what
- methods can be called on a given object, etc.
-
-
-
-
- =head1 API
-
-
-
-
- =head2 C<lookup_method()>
-
- Find modules (packages) containing a certain method
-
- ($hint, @modules) = lookup_method($method_name);
- ($hint, @modules) = lookup_method($method_name, $object);
- ($hint, @modules) = lookup_method($method_name, $class));
-
- =over 4
-
- =item arg1: C<$method_name> ( string )
-
- the method name to look up
-
- =item opt arg2: C<$object> or C<$class>
-
- a blessed object or the name of the class it's blessed into. If there
- is more than one match, this extra information is used to return only
- modules containing methods operating on the objects of the same kind.
-
- If a sub-classed object is passed it'll be handled correctly, by
- checking its super-class(es). This usage is useful when the
- C<L<AUTOLOAD|/C_AUTOLOAD_>> is used to find a not yet loaded module
- which include the called method.
-
- =item ret1: C<$hint>
-
- a string containing a human readable lookup result, suggesting which
- modules should be loaded, ready for copy-n-paste or explaining the
- failure if the lookup didn't succeed.
-
- =item ret2: C<@modules>
-
- an array of modules which have matched the query, i.e. the names of
- the modules which contain the requested method.
-
- =item since: 1.99_12
-
- =back
-
- Examples:
-
- Return all module names containing XS method I<print>:
-
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method('print');
-
- Return only module names containing method I<print> which expects the
- first argument to be of type C<Apache::Filter>:
-
- my $filter = bless {}, 'Apache::Filter';
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method('print', $filter);
-
- or:
-
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method('print', 'Apache::Filter');
-
-
-
-
-
-
-
-
- =head2 C<lookup_module()>
-
- Find methods contained in a certain module (package)
-
- ($hint, @methods) = lookup_module($module_name);
-
- =over 4
-
- =item arg1: C<$module_name> ( string )
-
- the module name
-
- =item ret1: C<$hint>
-
- a string containing a human readable lookup result, suggesting, which
- methods the module C<$module_name> implements, or explaining the
- failure if the lookup failed.
-
- =item ret2: C<@methods>
-
- an array of methods which have matched the query, i.e. the names of
- the methods defined in the requested module.
-
- =item since: 1.99_12
-
- =back
-
- Example:
-
- What XS methods defined by module C<Apache::Filter>:
-
- my($hint, @methods) =
- ModPerl::MethodLookup::lookup_module('Apache::Filter');
-
-
-
-
-
-
-
- =head2 C<lookup_object()>
-
- ($hint, @methods) = lookup_object($object);
- ($hint, @methods) = lookup_object($class);
-
- =over 4
-
- =item arg1: C<$object> or C<$class>
-
- an object or a name of a class an object is blessed into
-
- If a sub-classed object is passed it'll be handled correctly, by
- including methods provided by its super-class(es).
-
- =item ret1: C<$hint>
-
- a string containing a human readable lookup result, suggesting, which
- methods the given object can invoke (including module names that need
- to be loaded to use those methods), or explaining the failure if the
- lookup failed.
-
- =item ret2: C<@methods>
-
- an array of methods which have matched the query, i.e. the names of
- the methods that can be invoked on the given object (or its class
- name).
-
- =item since: 1.99_12
-
- =back
-
- META: As of this writing this function may miss some of the
- functions/methods that can be invoked on the given object. Currently
- we can't programmatically deduct the objects they are invoked on,
- because these methods are written in pure XS and manipulate the
- arguments stack themselves. Currently these are mainly XS functions,
- not methods, which of course aren't invoked on objects. There are also
- logging function wrappers (C<Apache::Log>).
-
- Examples:
-
- What XS methods can be invoked on the object C<$r>:
-
- my($hint, @methods) =
- ModPerl::MethodLookup::lookup_object($r);
-
- or C<$r>'s class -- C<Apache::RequestRec>:
-
- my($hint, @methods) =
- ModPerl::MethodLookup::lookup_object('Apache::RequestRec');
-
-
-
-
-
- =head2 C<preload_all_modules()>
-
- The function C<preload_all_modules()> preloads all mod_perl 2.0
- modules, which implement their API in XS. This is similar to the
- mod_perl 1.0 behavior which has most of its methods loaded at the
- startup.
-
- CPAN modules developers should make sure their distribution loads each
- of the used mod_perl 2.0 modules explicitly, and not use this
- function, as it takes the fine control away from the users. One should
- avoid doing this the production server (unless all modules are used
- indeed) in order to save memory.
-
- =over
-
- =item since: 1.99_12
-
- =back
-
-
-
-
-
-
-
- =head2 C<print_method()>
-
- C<print_method()> is a convenience wrapper for
- C<L<lookup_method()|/C_lookup_method___>>, mainly designed to be used
- from the command line. For example to print all the modules which
- define method I<read> execute:
-
- % perl -MApache2 -MModPerl::MethodLookup -e print_method read
-
- Since this will return more than one module, we can narrow the query
- to only those methods which expect the first argument to be blessed
- into class C<APR::Bucket>:
-
- % perl -MApache2 -MModPerl::MethodLookup -e print_method read APR::Bucket
-
- You can pass more than one method and it'll perform a lookup on each
- of the methods. For example to lookup methods C<get_server_built> and
- C<request> you can do:
-
- % perl -MApache2 -MModPerl::MethodLookup -e print_method \
- get_server_built request
-
- The function C<print_method()> is exported by default.
-
- =over
-
- =item since: 1.99_12
-
- =back
-
-
-
-
- =head2 C<print_module()>
-
- C<print_module()> is a convenience wrapper for
- C<L<lookup_module()|/C_lookup_module___>>, mainly designed to be used
- from the command line. For example to print all the methods defined in
- the module C<Apache::RequestRec>, followed by methods defined in the
- module C<Apache::Filter> you can run:
-
- % perl -MApache2 -MModPerl::MethodLookup -e print_module \
- Apache::RequestRec Apache::Filter
-
- The function C<print_module()> is exported by default.
-
- =over
-
- =item since: 1.99_12
-
- =back
-
-
-
-
-
- =head2 C<print_object()>
-
- C<print_object()> is a convenience wrapper for
- C<L<lookup_object()|/C_lookup_object___>>, mainly designed to be used
- from the command line. For example to print all the methods that can
- be invoked on object blessed into a class C<Apache::RequestRec> run:
-
- % perl -MApache2 -MModPerl::MethodLookup -e print_object \
- Apache::RequestRec
-
- Similar to C<L<print_object()|/C_print_object___>>, more than one
- class can be passed to this function.
-
- The function C<print_object()> is exported by default.
-
- =over
-
- =item since: 1.99_12
-
- =back
-
-
-
-
-
-
-
- =head1 Applications
-
-
-
-
-
- =head2 C<AUTOLOAD>
-
- When Perl fails to locate a method it checks whether the package the
- object belongs to has an C<AUTOLOAD> function defined and if so, calls
- it with the same arguments as the missing method while setting a
- global variable C<$AUTOLOAD> (in that package) to the name of the
- originally called method. We can use this facility to lookup the
- modules to be loaded when such a failure occurs. Though since we have
- many packages to take care of we will use a special
- C<UNIVERSAL::AUTOLOAD> function which Perl calls if can't find the
- C<AUTOLOAD> function in the given package.
-
- In that function you can query C<ModPerl::MethodLookup>, require() the
- module that includes the called method and call that method again
- using the goto() trick:
-
- use ModPerl::MethodLookup;
- sub UNIVERSAL::AUTOLOAD {
- my($hint, @modules) =
- ModPerl::MethodLookup::lookup_method($UNIVERSAL::AUTOLOAD, @_);
- if (@modules) {
- eval "require $_" for @modules;
- goto &$UNIVERSAL::AUTOLOAD;
- }
- else {
- die $hint;
- }
- }
-
- However we don't endorse this approach. It's a better approach to
- always abort the execution which printing the C<$hint>and use fix the
- code to load the missing module. Moreover installing
- C<UNIVERSAL::AUTOLOAD> may cause a lot of problems, since once it's
- installed Perl will call it every time some method is missing
- (e.g. undefined C<DESTROY> methods). The following approach seems to
- somewhat work for me. It installs C<UNIVERSAL::AUTOLOAD> only when the
- the child process starts.
-
- httpd.conf:
- -----------
- PerlChildInitHandler ModPerl::MethodLookupAuto
-
- startup.pl:
- -----------
- {
- package ModPerl::MethodLookupAuto;
- use ModPerl::MethodLookup;
-
- use Carp;
- sub handler {
-
- *UNIVERSAL::AUTOLOAD = sub {
- my $method = $AUTOLOAD;
- return if $method =~ /DESTROY/; # exclude DESTROY resolving
-
- my ($hint, @modules) =
- ModPerl::MethodLookup::lookup_method($method, @_);
- $hint ||= "Can't find method $AUTOLOAD";
- croak $hint;
- };
- return 0;
- }
- }
-
- This example doesn't load the modules for you. It'll print to STDERR
- what module should be loaded, when a method from the not-yet-loaded
- module is called.
-
- A similar technique is used by
- C<L<Apache::porting|docs::2.0::api::Apache::porting>>.
-
-
- META: there is a better version of AUTOLOAD discussed on the dev
- list. Replace the current one with it. (search the archive for
- EazyLife)
-
-
-
-
-
- =head2 Command Line Lookups
-
- When a method is used and mod_perl has reported a failure to find it,
- it's often useful to use the command line query to figure out which
- module needs to be loaded. For example if when executing:
-
- $r->construct_url();
-
- mod_perl complains:
-
- Can't locate object method "construct_url" via package
- "Apache::RequestRec" at ...
-
- you can ask C<ModPerl::MethodLookup> for help:
-
- % perl -MApache2 -MModPerl::MethodLookup -e print_method construct_url
- To use method 'construct_url' add:
- use Apache::URI ();
-
- and after copy-n-pasting the use statement in our code, the problem
- goes away.
-
- One can create a handy alias for this technique. For example, C-style
- shell users can do:
-
- % alias lookup "perl -MApache2 -MModPerl::MethodLookup -e print_method"
-
- For Bash-style shell users:
-
- % alias lookup="perl -MApache2 -MModPerl::MethodLookup -e print_method"
-
- Now the lookup is even easier:
-
- % lookup construct_url
- to use method 'construct_url' add:
- use Apache::URI;
-
- Similar aliases can be provided for
- C<L<print_object()|/C_print_object___>> and
- C<L<print_module()|/C_print_module___>>.
-
-
-
-
-
- =head1 Todo
-
- These methods aren't yet picked by this module (the extract from the
- map file):
-
- modperl_filter_attributes | MODIFY_CODE_ATTRIBUTES
- modperl_spawn_proc_prog | spawn_proc_prog
- apr_ipsubnet_create | new
-
- Please report to L<the mod_perl development mailing
- list|maillist::dev> if you find any other missing methods. But remember that
- as of this moment the module reports only XS functions. In the future
- we may add support for pure perl functions/methods as well.
-
-
-
-
-
-
-
-
- =head1 See Also
-
- =over
-
- =item *
-
- L<the mod_perl 1.0 backward compatibility
- document|docs::2.0::user::porting::compat/>
-
- =item *
-
- L<porting Perl modules|docs::2.0::user::porting::porting>
-
- =item *
-
- L<porting XS modules|docs::2.0::devel::porting::porting>
-
- =item *
-
- C<L<Apache::porting|docs::2.0::api::Apache::porting>>
-
- =back
-
-
-
-
-
- =head1 Copyright
-
- mod_perl 2.0 and its core modules are copyrighted under
- The Apache Software License, Version 2.0.
-
-
-
-
- =head1 Authors
-
- L<The mod_perl development team and numerous
- contributors|about::contributors::people>.
-
- =cut
-