| APR::Pool T_POOLOBJ |
| APR::BucketAlloc T_PTROBJ |
| APR::Request::Apache2 T_APREQ_HANDLE_APACHE2 |
| APR::Request::Cookie T_APREQ_COOKIE |
| APR::Request::Param::Table T_APREQ_TABLE |
| APR::Brigade T_PTROBJ |
| APR::Table T_HASHOBJ |
| APR::Request::CGI T_APREQ_HANDLE_CGI |
| APR::Request::Param T_APREQ_PARAM |
| APR::Request::Error T_APREQ_ERROR |
| Apache2::RequestRec T_APACHEOBJ |
| APR::Request::Cookie::Table T_HASHOBJ |
| APR::Request T_APREQ_HANDLE |
| APR::Request::Parser T_PTROBJ |
| APR::Request::Hook T_PTROBJ |
| apr_status_t T_IV |
| const void * T_PTR |
| const char * T_PV |
| apreq_xs_subclass_t T_SUBCLASS |
| const apr_size_t T_UV |
| apr_size_t T_UV |
| unsigned char T_UV |
| apreq_parser_function_t T_APREQ_PARSER_FUNCTION |
| apreq_hook_function_t T_APREQ_HOOK_FUNCTION |
| |
| INPUT |
| T_APREQ_HANDLE |
| $var = apreq_xs_sv2handle(aTHX_ $arg) |
| |
| T_HASHOBJ |
| if (sv_derived_from($arg, \"${ntype}\")) { |
| if (SVt_PVHV == SvTYPE(SvRV($arg))) { |
| SV *hv = SvRV($arg); |
| MAGIC *mg; |
| if (SvMAGICAL(hv)) { |
| if ((mg = mg_find(hv, PERL_MAGIC_tied))) { |
| $var = INT2PTR(void *, MgObjIV(mg)); |
| } |
| else { |
| Perl_warn(aTHX_ \"Not a tied hash: (magic=%c)\", mg); |
| $var = NULL; |
| } |
| } |
| else { |
| Perl_warn(aTHX_ \"SV is not tied\"); |
| $var = NULL; |
| } |
| } |
| else { |
| $var = INT2PTR(void *, SvObjIV($arg)); |
| } |
| } |
| else { |
| Perl_croak(aTHX_ |
| \"argument is not a blessed reference \" |
| \"(expecting an %s derived object)\", \"${ntype}\"); |
| } |
| |
| |
| T_APREQ_ERROR |
| $var = (HV *)SvRV($arg) |
| |
| T_APREQ_HANDLE_APACHE2 |
| $var = apreq_xs_sv2handle(aTHX_ $arg) |
| |
| T_APREQ_COOKIE |
| $var = apreq_xs_sv2cookie(aTHX_ $arg) |
| |
| T_SUBCLASS |
| if (SvROK($arg) || !sv_derived_from($arg, \"$Package\")) |
| Perl_croak(aTHX_ \"Usage: argument is not a subclass of $Package\"); |
| $var = SvPV_nolen($arg) |
| |
| |
| T_APREQ_HANDLE_CGI |
| $var = apreq_xs_sv2handle(aTHX_ $arg) |
| |
| T_APREQ_PARAM |
| $var = apreq_xs_sv2param(aTHX_ $arg) |
| |
| T_APREQ_TABLE |
| if (sv_derived_from($arg, \"${ntype}\")) { |
| if (SVt_PVHV == SvTYPE(SvRV($arg))) { |
| SV *hv = SvRV($arg); |
| MAGIC *mg; |
| if (SvMAGICAL(hv)) { |
| if ((mg = mg_find(hv, PERL_MAGIC_tied))) { |
| $var = INT2PTR(void *,MgObjIV(mg)); |
| } |
| else { |
| Perl_warn(aTHX_ \"Not a tied hash: (magic=%c)\", mg); |
| $var = NULL; |
| } |
| } |
| else { |
| Perl_warn(aTHX_ \"SV is not tied\"); |
| $var = NULL; |
| } |
| } |
| else { |
| $var = INT2PTR(void *, SvObjIV($arg)); |
| } |
| } |
| else { |
| Perl_croak(aTHX_ |
| \"argument is not a blessed reference \" |
| \"(expecting an %s derived object)\", \"${ntype}\"); |
| } |
| |
| T_APREQ_PARSER_FUNCTION |
| $var = INT2PTR(apreq_parser_function_t, SvObjIV($arg)) |
| |
| T_APREQ_HOOK_FUNCTION |
| $var = INT2PTR(apreq_hook_function_t, SvObjIV($arg)) |
| |
| OUTPUT |
| T_APREQ_HANDLE |
| $arg = apreq_xs_handle2sv(aTHX_ $var, class, parent); |
| |
| T_APREQ_TABLE |
| $arg = apreq_xs_table2sv(aTHX_ $var, \"${ntype}\", parent, PARAM_CLASS, sizeof(PARAM_CLASS)-1); |
| |
| T_HASHOBJ |
| { |
| SV *hv = (SV*)newHV(); |
| SV *rsv = $arg; |
| sv_setref_pv(rsv, \"${ntype}\", $var); |
| sv_magic(hv, rsv, PERL_MAGIC_tied, Nullch, 0); |
| $arg = SvREFCNT_inc(sv_bless(sv_2mortal(newRV_noinc(hv)), |
| gv_stashpv(\"${ntype}\", TRUE))); |
| } |
| |
| |
| T_APREQ_ERROR |
| $arg = sv_bless(newRV_noinc((SV*)$var), gv_stashpvn(\"${ntype}\", sizeof(\"${ntype}\") - 1, FALSE); |
| |
| T_APREQ_HANDLE_APACHE2 |
| $arg = apreq_xs_handle2sv(aTHX_ $var, class, SvRV(ST(1))); |
| SvMAGIC(SvRV($arg))->mg_ptr = (void *)r; |
| |
| |
| T_APREQ_COOKIE |
| $arg = apreq_xs_cookie2sv(aTHX_ $var, class, parent); |
| |
| T_APREQ_HANDLE_CGI |
| $arg = apreq_xs_handle2sv(aTHX_ $var, class, SvRV(ST(1))); |
| |
| T_APREQ_PARAM |
| $arg = apreq_xs_param2sv(aTHX_ $var, class, parent); |
| |
| T_APREQ_PARSER_FUNCTION |
| $arg = sv_setref_pv(newSV(0), class, $var); |
| |
| T_APREQ_HOOK_FUNCTION |
| $arg = sv_setref_pv(newSV(0), class, $var); |