1N/A# basic C types
1N/Aint T_IV
1N/Aunsigned T_UV
1N/Aunsigned int T_UV
1N/Along T_IV
1N/Aunsigned long T_UV
1N/Ashort T_IV
1N/Aunsigned short T_UV
1N/Achar T_CHAR
1N/Aunsigned char T_U_CHAR
1N/Achar * T_PV
1N/Aunsigned char * T_PV
1N/Aconst char * T_PV
1N/Acaddr_t T_PV
1N/Awchar_t * T_PV
1N/Awchar_t T_IV
1N/A# bool_t is defined in <rpc/rpc.h>
1N/Abool_t T_IV
1N/Asize_t T_UV
1N/Assize_t T_IV
1N/Atime_t T_NV
1N/Aunsigned long * T_OPAQUEPTR
1N/Achar ** T_PACKEDARRAY
1N/Avoid * T_PTR
1N/ATime_t * T_PV
1N/ASV * T_SV
1N/ASVREF T_SVREF
1N/AAV * T_AVREF
1N/AHV * T_HVREF
1N/ACV * T_CVREF
1N/A
1N/AIV T_IV
1N/AUV T_UV
1N/ANV T_NV
1N/AI32 T_IV
1N/AI16 T_IV
1N/AI8 T_IV
1N/ASTRLEN T_UV
1N/AU32 T_U_LONG
1N/AU16 T_U_SHORT
1N/AU8 T_UV
1N/AResult T_U_CHAR
1N/ABoolean T_BOOL
1N/Afloat T_FLOAT
1N/Adouble T_DOUBLE
1N/ASysRet T_SYSRET
1N/ASysRetLong T_SYSRET
1N/AFILE * T_STDIO
1N/APerlIO * T_INOUT
1N/AFileHandle T_PTROBJ
1N/AInputStream T_IN
1N/AInOutStream T_INOUT
1N/AOutputStream T_OUT
1N/Abool T_BOOL
1N/A
1N/A#############################################################################
1N/AINPUT
1N/AT_SV
1N/A $var = $arg
1N/AT_SVREF
1N/A if (SvROK($arg))
1N/A $var = (SV*)SvRV($arg);
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not a reference\")
1N/AT_AVREF
1N/A if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
1N/A $var = (AV*)SvRV($arg);
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not an array reference\")
1N/AT_HVREF
1N/A if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVHV)
1N/A $var = (HV*)SvRV($arg);
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not a hash reference\")
1N/AT_CVREF
1N/A if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVCV)
1N/A $var = (CV*)SvRV($arg);
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not a code reference\")
1N/AT_SYSRET
1N/A $var NOT IMPLEMENTED
1N/AT_UV
1N/A $var = ($type)SvUV($arg)
1N/AT_IV
1N/A $var = ($type)SvIV($arg)
1N/AT_INT
1N/A $var = (int)SvIV($arg)
1N/AT_ENUM
1N/A $var = ($type)SvIV($arg)
1N/AT_BOOL
1N/A $var = (bool)SvTRUE($arg)
1N/AT_U_INT
1N/A $var = (unsigned int)SvUV($arg)
1N/AT_SHORT
1N/A $var = (short)SvIV($arg)
1N/AT_U_SHORT
1N/A $var = (unsigned short)SvUV($arg)
1N/AT_LONG
1N/A $var = (long)SvIV($arg)
1N/AT_U_LONG
1N/A $var = (unsigned long)SvUV($arg)
1N/AT_CHAR
1N/A $var = (char)*SvPV_nolen($arg)
1N/AT_U_CHAR
1N/A $var = (unsigned char)SvUV($arg)
1N/AT_FLOAT
1N/A $var = (float)SvNV($arg)
1N/AT_NV
1N/A $var = ($type)SvNV($arg)
1N/AT_DOUBLE
1N/A $var = (double)SvNV($arg)
1N/AT_PV
1N/A $var = ($type)SvPV_nolen($arg)
1N/AT_PTR
1N/A $var = INT2PTR($type,SvIV($arg))
1N/AT_PTRREF
1N/A if (SvROK($arg)) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A $var = INT2PTR($type,tmp);
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not a reference\")
1N/AT_REF_IV_REF
1N/A if (sv_isa($arg, \"${ntype}\")) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A $var = *INT2PTR($type *, tmp);
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
1N/AT_REF_IV_PTR
1N/A if (sv_isa($arg, \"${ntype}\")) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A $var = INT2PTR($type, tmp);
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
1N/AT_PTROBJ
1N/A if (sv_derived_from($arg, \"${ntype}\")) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A $var = INT2PTR($type,tmp);
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
1N/AT_PTRDESC
1N/A if (sv_isa($arg, \"${ntype}\")) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A ${type}_desc = (\U${type}_DESC\E*) tmp;
1N/A $var = ${type}_desc->ptr;
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
1N/AT_REFREF
1N/A if (SvROK($arg)) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A $var = *INT2PTR($type,tmp);
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not a reference\")
1N/AT_REFOBJ
1N/A if (sv_isa($arg, \"${ntype}\")) {
1N/A IV tmp = SvIV((SV*)SvRV($arg));
1N/A $var = *INT2PTR($type,tmp);
1N/A }
1N/A else
1N/A Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
1N/AT_OPAQUE
1N/A $var = *($type *)SvPV_nolen($arg)
1N/AT_OPAQUEPTR
1N/A $var = ($type)SvPV_nolen($arg)
1N/AT_PACKED
1N/A $var = XS_unpack_$ntype($arg)
1N/AT_PACKEDARRAY
1N/A $var = XS_unpack_$ntype($arg)
1N/AT_CALLBACK
1N/A $var = make_perl_cb_$type($arg)
1N/AT_ARRAY
1N/A U32 ix_$var = $argoff;
1N/A $var = $ntype(items -= $argoff);
1N/A while (items--) {
1N/A DO_ARRAY_ELEM;
1N/A ix_$var++;
1N/A }
1N/A /* this is the number of elements in the array */
1N/A ix_$var -= $argoff
1N/AT_STDIO
1N/A $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
1N/AT_IN
1N/A $var = IoIFP(sv_2io($arg))
1N/AT_INOUT
1N/A $var = IoIFP(sv_2io($arg))
1N/AT_OUT
1N/A $var = IoOFP(sv_2io($arg))
1N/A#############################################################################
1N/AOUTPUT
1N/AT_SV
1N/A $arg = $var;
1N/AT_SVREF
1N/A $arg = newRV((SV*)$var);
1N/AT_AVREF
1N/A $arg = newRV((SV*)$var);
1N/AT_HVREF
1N/A $arg = newRV((SV*)$var);
1N/AT_CVREF
1N/A $arg = newRV((SV*)$var);
1N/AT_IV
1N/A sv_setiv($arg, (IV)$var);
1N/AT_UV
1N/A sv_setuv($arg, (UV)$var);
1N/AT_INT
1N/A sv_setiv($arg, (IV)$var);
1N/AT_SYSRET
1N/A if ($var != -1) {
1N/A if ($var == 0)
1N/A sv_setpvn($arg, "0 but true", 10);
1N/A else
1N/A sv_setiv($arg, (IV)$var);
1N/A }
1N/AT_ENUM
1N/A sv_setiv($arg, (IV)$var);
1N/AT_BOOL
1N/A $arg = boolSV($var);
1N/AT_U_INT
1N/A sv_setuv($arg, (UV)$var);
1N/AT_SHORT
1N/A sv_setiv($arg, (IV)$var);
1N/AT_U_SHORT
1N/A sv_setuv($arg, (UV)$var);
1N/AT_LONG
1N/A sv_setiv($arg, (IV)$var);
1N/AT_U_LONG
1N/A sv_setuv($arg, (UV)$var);
1N/AT_CHAR
1N/A sv_setpvn($arg, (char *)&$var, 1);
1N/AT_U_CHAR
1N/A sv_setuv($arg, (UV)$var);
1N/AT_FLOAT
1N/A sv_setnv($arg, (double)$var);
1N/AT_NV
1N/A sv_setnv($arg, (NV)$var);
1N/AT_DOUBLE
1N/A sv_setnv($arg, (double)$var);
1N/AT_PV
1N/A sv_setpv((SV*)$arg, $var);
1N/AT_PTR
1N/A sv_setiv($arg, PTR2IV($var));
1N/AT_PTRREF
1N/A sv_setref_pv($arg, Nullch, (void*)$var);
1N/AT_REF_IV_REF
1N/A sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
1N/AT_REF_IV_PTR
1N/A sv_setref_pv($arg, \"${ntype}\", (void*)$var);
1N/AT_PTROBJ
1N/A sv_setref_pv($arg, \"${ntype}\", (void*)$var);
1N/AT_PTRDESC
1N/A sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
1N/AT_REFREF
1N/A NOT_IMPLEMENTED
1N/AT_REFOBJ
1N/A NOT IMPLEMENTED
1N/AT_OPAQUE
1N/A sv_setpvn($arg, (char *)&$var, sizeof($var));
1N/AT_OPAQUEPTR
1N/A sv_setpvn($arg, (char *)$var, sizeof(*$var));
1N/AT_PACKED
1N/A XS_pack_$ntype($arg, $var);
1N/AT_PACKEDARRAY
1N/A XS_pack_$ntype($arg, $var, count_$ntype);
1N/AT_DATAUNIT
1N/A sv_setpvn($arg, $var.chp(), $var.size());
1N/AT_CALLBACK
1N/A sv_setpvn($arg, $var.context.value().chp(),
1N/A $var.context.value().size());
1N/AT_ARRAY
1N/A {
1N/A U32 ix_$var;
1N/A EXTEND(SP,size_$var);
1N/A for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
1N/A ST(ix_$var) = sv_newmortal();
1N/A DO_ARRAY_ELEM
1N/A }
1N/A }
1N/AT_STDIO
1N/A {
1N/A GV *gv = newGVgen("$Package");
1N/A PerlIO *fp = PerlIO_importFILE($var,0);
1N/A if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
1N/A sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
1N/A else
1N/A $arg = &PL_sv_undef;
1N/A }
1N/AT_IN
1N/A {
1N/A GV *gv = newGVgen("$Package");
1N/A if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
1N/A sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
1N/A else
1N/A $arg = &PL_sv_undef;
1N/A }
1N/AT_INOUT
1N/A {
1N/A GV *gv = newGVgen("$Package");
1N/A if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
1N/A sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
1N/A else
1N/A $arg = &PL_sv_undef;
1N/A }
1N/AT_OUT
1N/A {
1N/A GV *gv = newGVgen("$Package");
1N/A if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
1N/A sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
1N/A else
1N/A $arg = &PL_sv_undef;
1N/A }