ffi_pl_string T_FFI_PL_STRING ffi_pl_type* T_FFI_PL_TYPE ffi_pl_function* T_FFI_PL_FUNCTION ffi_pl_closure* T_FFI_PL_CLOSURE_DATA ffi_pl_arguments* T_FFI_PL_ARGUMENTS OUTPUT T_FFI_PL_STRING $var != NULL ? sv_setpv((SV*)$arg, $var) : sv_setsv((SV*)$arg, &PL_sv_undef); T_FFI_PL_TYPE sv_setref_pv($arg, \"FFI::Platypus::Type\", (void *) $var); T_FFI_PL_FUNCTION sv_setref_pv($arg, \"FFI::Platypus::Function::Function\", (void *) $var); T_FFI_PL_CLOSURE_DATA sv_setref_pv($arg, \"FFI::Platypus::ClosureData\", (void *) $var); INPUT T_FFI_PL_STRING $var = SvOK($arg) ? ($type)SvPV_nolen($arg) : NULL; T_FFI_PL_TYPE if(sv_isobject($arg) && sv_derived_from($arg, \"FFI::Platypus::Type\")) $var = INT2PTR($type, SvIV((SV *) SvRV($arg))); else Perl_croak(aTHX_ \"$var is not of type FFI::Platypus::Type\"); T_FFI_PL_FUNCTION if(sv_isobject($arg) && sv_derived_from($arg, \"FFI::Platypus::Function::Function\")) $var = INT2PTR($type, SvIV((SV *) SvRV($arg))); else Perl_croak(aTHX_ \"$var is not of type FFI::Platypus::Function::Function\"); T_FFI_PL_CLOSURE_DATA if(sv_isobject($arg) && sv_derived_from($arg, \"FFI::Platypus::ClosureData\")) $var = INT2PTR($type, SvIV((SV *) SvRV($arg))); else Perl_croak(aTHX_ \"$var is not of type FFI::Platypus::ClosureData\"); T_FFI_PL_ARGUMENTS if(sv_isobject($arg) && sv_derived_from($arg, \"FFI::Platypus::API::ARGV\")) $var = INT2PTR($type, SvIV((SV *) SvRV($arg))); else Perl_croak(aTHX_ \"$var is not of type FFI::Platypus::API::ARGV\");