TYPEMAP

PaError T_IV
PaDeviceIndex T_IV
PaHostApiIndex T_IV
PaTime T_NV
PaSampleFormat T_UV
PaStreamFlags T_UV
PaStreamCallbackFlags T_UV
PaHostApiTypeId T_IV
PaTime T_NV

# note: T_INDEXOBJ_SPECIAL maps a straight int to a perl object
Audio_PortAudio_HostAPI T_INDEXOBJ_SPECIAL
Audio_PortAudio_Device  T_INDEXOBJ_SPECIAL
Audio_PortAudio_Stream  T_PTROBJ_SPECIAL

INPUT

T_PTROBJ_SPECIAL
    if (sv_isobject($arg) && sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")) {
	IV tmp = SvIV((SV*)SvRV($arg));
        $var = ($type) tmp;
    }
    else
	croak(\"$var is not an object of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")


T_INDEXOBJ_SPECIAL
    if (sv_isobject($arg) && sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")) {
	    $var = SvIV((SV*)SvRV($arg));
    }
    else
    	croak(\"$var is not an object of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")



OUTPUT
T_PTROBJ_SPECIAL
    sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
    (void*)$var);


OUTPUT
T_INDEXOBJ_SPECIAL
    sv_setref_iv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
    $var);


