# mod_perl 1.99_17's typemap, plus our Apache::SSLLookup

Apache::SSLLookup           T_APACHEOBJ
APR::ArrayHeader            T_PTROBJ
APR::Brigade                T_PTROBJ
APR::Bucket                 T_PTROBJ
APR::BucketAlloc            T_PTROBJ
APR::BucketType             T_PTROBJ
APR::ExplodedTime           T_PTROBJ
APR::Finfo                  T_PTROBJ
APR::Getopt                 T_PTROBJ
APR::GetoptOption           T_PTROBJ
APR::Hash                   T_PTROBJ
APR::HashIndex              T_PTROBJ
APR::InAddr                 T_PTROBJ
APR::IpSubnet               T_PTROBJ
APR::MD5                    T_PTROBJ
APR::Mmap                   T_PTROBJ
APR::Pool                   T_POOLOBJ
APR::Process                T_PTROBJ
APR::SHA1                   T_PTROBJ
APR::SockAddr               T_PTROBJ
APR::SockInfo               T_PTROBJ
APR::Socket                 T_PTROBJ
APR::Table                  T_HASHOBJ
APR::TableEntry             T_PTROBJ
APR::ThreadMutex            T_PTROBJ
APR::URI                    T_PTROBJ
APR::UUID                   T_PTROBJ
Apache::CmdParms            T_PTROBJ
Apache::Command             T_PTROBJ
Apache::ConfVector          T_PTROBJ
Apache::ConfigFile          T_PTROBJ
Apache::Connection          T_PTROBJ
Apache::Directive           T_PTROBJ
Apache::Filter              T_PTROBJ
Apache::FilterRec           T_PTROBJ
Apache::FilterType          T_PTROBJ
Apache::MethodList          T_PTROBJ
Apache::Module              T_PTROBJ
Apache::OutputFilter        T_PTROBJ
Apache::PipedLog            T_PTROBJ
Apache::Process             T_PTROBJ
Apache::RequestRec          T_APACHEOBJ
Apache::ServerAddr          T_PTROBJ
Apache::ServerRec           T_PTROBJ
Apache::SubRequest          T_PTROBJ
I32                         T_IV
I32 *                       T_IV
SV *                        T_SV
U32                         T_UV
U32 *                       T_UV
ap_conn_keepalive_e         T_IV
ap_input_mode_t             T_IV
ap_input_mode_t *           T_IV
ap_mgmt_type_e              T_IV
ap_scoreboard_e             T_IV
apr_byte_t                  T_CHAR
apr_byte_t *                T_CHAR
apr_dev_t                   T_NV
apr_dev_t *                 T_NV
apr_fileperms_t             T_IV
apr_fileperms_t *           T_IV
apr_filetype_e              T_IV
apr_gid_t                   T_IV
apr_gid_t *                 T_IV
apr_ino_t                   T_IV
apr_ino_t *                 T_IV
apr_int16_t                 T_IV
apr_int16_t *               T_IV
apr_int32_t                 T_IV
apr_int32_t *               T_IV
apr_int64_t                 T_NV
apr_int64_t *               T_NV
apr_interval_time_t         T_NV
apr_interval_time_t *       T_NV
apr_lockmech_e              T_IV
apr_locktype_e              T_IV
apr_off_t                   T_IV
apr_off_t *                 T_IV
apr_port_t                  T_IV
apr_port_t *                T_IV
apr_read_type_e             T_IV
apr_size_t                  T_UV
apr_size_t *                T_UV
apr_socklen_t               T_IV
apr_socklen_t *             T_IV
apr_ssize_t                 T_IV
apr_ssize_t *               T_IV
apr_status_t                T_IV
apr_status_t *              T_IV
apr_time_t                  T_APR_TIME
apr_time_t *                T_NV
apr_uid_t                   T_IV
apr_uid_t *                 T_IV
apr_uint16_t                T_IV
apr_uint16_t *              T_IV
apr_uint32_t                T_IV
apr_uint32_t *              T_IV
apr_uint64_t                T_NV
apr_uint64_t *              T_NV
char                        T_CHAR
char *                      T_PV
char const *                T_PV
const ap_input_mode_t *     T_IV
const apr_byte_t *          T_CHAR
const apr_dev_t *           T_NV
const apr_fileperms_t *     T_IV
const apr_gid_t *           T_IV
const apr_ino_t *           T_IV
const apr_int16_t *         T_IV
const apr_int32_t *         T_IV
const apr_int64_t *         T_NV
const apr_interval_time_t * T_NV
const apr_off_t *           T_IV
const apr_port_t *          T_IV
const apr_size_t *          T_UV
const apr_socklen_t *       T_IV
const apr_ssize_t *         T_IV
const apr_status_t *        T_IV
const apr_time_t *          T_NV
const apr_uid_t *           T_IV
const apr_uint16_t *        T_IV
const apr_uint32_t *        T_IV
const apr_uint64_t *        T_NV
const char                  T_CHAR
const char *                T_PV
const gid_t *               T_IV
const pid_t *               T_IV
const size_t *              T_IV
const time_t *              T_NV
const uid_t *               T_IV
const unsigned char         T_U_CHAR
const unsigned char *       T_PV
const void *                T_PTR
double                      T_NV
enum cmd_how                T_IV
gid_t                       T_IV
gid_t *                     T_IV
int                         T_IV
int *                       T_PTR
long                        T_IV
long int                    T_IV
pid_t                       T_IV
pid_t *                     T_IV
signed int                  T_IV
size_t                      T_IV
time_t                      T_NV
time_t *                    T_NV
uid_t                       T_IV
uid_t *                     T_IV
unsigned                    T_UV
unsigned char               T_U_CHAR
unsigned char *             T_PV
unsigned int                T_UV
unsigned long               T_UV
void                        T_VOID
void *                      T_PTR
TYPEMAP
void *			T_VPTR
char_len *              T_CHAR_LEN
const char_len *        T_CONST_CHAR_LEN

######################################################################
OUTPUT
T_POOLOBJ
        sv_setref_pv($arg, \"${ntype}\", (void*)$var);

T_APACHEOBJ
	sv_setref_pv($arg, \"${ntype}\", (void*)$var);

T_HASHOBJ
	$arg = modperl_hash_tie(aTHX_ \"${ntype}\", $arg, $var);

T_VPTR
	sv_setiv($arg, PTR2IV($var));

T_APR_TIME
	sv_setnv($arg, (NV)(apr_time_sec($var)));

T_UVOBJ
	modperl_perl_sv_setref_uv(aTHX_ $arg, \"${ntype}\", (UV)$var);

######################################################################
INPUT
T_PTROBJ
	if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
	    IV tmp = SvIV((SV*)SvRV($arg));
	    $var = INT2PTR($type,tmp);
	}
	else {
	    Perl_croak(aTHX_ SvROK($arg) ?
                       \"$var is not of type ${ntype}\" :
                       \"$var is not a blessed reference\");
        }

T_POOLOBJ
	if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
	    IV tmp = SvIV((SV*)SvRV($arg));
            if (tmp == 0) {
                Perl_croak(aTHX_ \"invalid pool object (already destroyed?)\");
            }
	    $var = INT2PTR($type,tmp);
	}
	else {
	    Perl_croak(aTHX_ SvROK($arg) ?
                       \"$var is not of type ${ntype}\" :
                       \"$var is not a blessed reference\");
        }

T_UVOBJ
	if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
	    UV tmp = SvUV((SV*)SvRV($arg));
	    $var = ($type)tmp;
	}
	else {
	    Perl_croak(aTHX_ SvROK($arg) ?
                       \"$var is not of type ${ntype}\" :
                       \"$var is not a blessed reference\");
        }

T_APACHEOBJ
	$var = modperl_xs_sv2request_rec(aTHX_ $arg, \"$ntype\", cv)

T_HASHOBJ
	$var = modperl_hash_tied_object(aTHX_ \"${ntype}\", $arg)

T_APACHEREF
	$var = modperl_xs_sv2request_rec(aTHX_ $arg, \"$ntype\", cv)

T_VPTR
	$var = INT2PTR($type,SvIV(SvROK($arg) ? SvRV($arg) : $arg))

T_APR_TIME
	$var = (apr_time_t)(apr_time_from_sec(SvNV($arg)))

T_CHAR_LEN
        $var = (char *)SvPV($arg, ${var}_len)

T_CONST_CHAR_LEN
        $var = (const char *)SvPV($arg, ${var}_len)
