SYN SYN
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / typemap
index 430c28a..9961f2d 100644 (file)
@@ -1,12 +1,11 @@
-# $Header$ 
 # basic C types
 int                    T_IV
-unsigned               T_IV
-unsigned int           T_IV
+unsigned               T_UV
+unsigned int           T_UV
 long                   T_IV
-unsigned long          T_IV
+unsigned long          T_UV
 short                  T_IV
-unsigned short         T_IV
+unsigned short         T_UV
 char                   T_CHAR
 unsigned char          T_U_CHAR
 char *                 T_PV
@@ -29,12 +28,13 @@ HV *                        T_HVREF
 CV *                   T_CVREF
 
 IV                     T_IV
+UV                     T_UV
 I32                    T_IV
 I16                    T_IV
 I8                     T_IV
 U32                    T_U_LONG
 U16                    T_U_SHORT
-U8                     T_IV
+U8                     T_UV
 Result                 T_U_CHAR
 Boolean                        T_IV
 double                 T_DOUBLE
@@ -73,6 +73,8 @@ T_CVREF
            croak(\"$var is not of type ${ntype}\")
 T_SYSRET
        $var NOT IMPLEMENTED
+T_UV
+       $var = ($type)SvUV($arg)
 T_IV
        $var = ($type)SvIV($arg)
 T_INT
@@ -82,19 +84,19 @@ T_ENUM
 T_BOOL
        $var = (int)SvIV($arg)
 T_U_INT
-       $var = (unsigned int)SvIV($arg)
+       $var = (unsigned int)SvUV($arg)
 T_SHORT
        $var = (short)SvIV($arg)
 T_U_SHORT
-       $var = (unsigned short)SvIV($arg)
+       $var = (unsigned short)SvUV($arg)
 T_LONG
        $var = (long)SvIV($arg)
 T_U_LONG
-       $var = (unsigned long)SvIV($arg)
+       $var = (unsigned long)SvUV($arg)
 T_CHAR
-       $var = (char)*SvPV($arg,na)
+       $var = (char)*SvPV($arg,PL_na)
 T_U_CHAR
-       $var = (unsigned char)SvIV($arg)
+       $var = (unsigned char)SvUV($arg)
 T_FLOAT
        $var = (float)SvNV($arg)
 T_NV
@@ -102,13 +104,13 @@ T_NV
 T_DOUBLE
        $var = (double)SvNV($arg)
 T_PV
-       $var = ($type)SvPV($arg,na)
+       $var = ($type)SvPV($arg,PL_na)
 T_PTR
-       $var = ($type)SvIV($arg)
+       $var = INT2PTR($type,SvIV($arg))
 T_PTRREF
        if (SvROK($arg)) {
            IV tmp = SvIV((SV*)SvRV($arg));
-           $var = ($type) tmp;
+           $var = INT2PTR($type,tmp);
        }
        else
            croak(\"$var is not a reference\")
@@ -129,7 +131,7 @@ T_REF_IV_PTR
 T_PTROBJ
        if (sv_derived_from($arg, \"${ntype}\")) {
            IV tmp = SvIV((SV*)SvRV($arg));
-           $var = ($type) tmp;
+           $var = INT2PTR($type,tmp);
        }
        else
            croak(\"$var is not of type ${ntype}\")
@@ -144,21 +146,21 @@ T_PTRDESC
 T_REFREF
        if (SvROK($arg)) {
            IV tmp = SvIV((SV*)SvRV($arg));
-           $var = *($type) tmp;
+           $var = *INT2PTR($type,tmp);
        }
        else
            croak(\"$var is not a reference\")
 T_REFOBJ
        if (sv_isa($arg, \"${ntype}\")) {
            IV tmp = SvIV((SV*)SvRV($arg));
-           $var = *($type) tmp;
+           $var = *INT2PTR($type,tmp);
        }
        else
            croak(\"$var is not of type ${ntype}\")
 T_OPAQUE
        $var NOT IMPLEMENTED
 T_OPAQUEPTR
-       $var = ($type)SvPV($arg,na)
+       $var = ($type)SvPV($arg,PL_na)
 T_PACKED
        $var = XS_unpack_$ntype($arg)
 T_PACKEDARRAY
@@ -190,44 +192,46 @@ T_HVREF
 T_CVREF
        $arg = newRV((SV*)$var);
 T_IV
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setiv($arg, (IV)$var);
+T_UV
+       sv_setuv($arg, (UV)$var);
 T_INT
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setiv($arg, (IV)$var);
 T_SYSRET
        if ($var != -1) {
            if ($var == 0)
-               SvSetMagicPVN($arg, "0 but true", 10);
+               sv_setpvn($arg, "0 but true", 10);
            else
-               SvSetMagicIV($arg, (IV)$var);
+               sv_setiv($arg, (IV)$var);
        }
 T_ENUM
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setiv($arg, (IV)$var);
 T_BOOL
        $arg = boolSV($var);
 T_U_INT
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setuv($arg, (UV)$var);
 T_SHORT
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setiv($arg, (IV)$var);
 T_U_SHORT
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setuv($arg, (UV)$var);
 T_LONG
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setiv($arg, (IV)$var);
 T_U_LONG
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setuv($arg, (UV)$var);
 T_CHAR
-       SvSetMagicPVN($arg, (char *)&$var, 1);
+       sv_setpvn($arg, (char *)&$var, 1);
 T_U_CHAR
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setuv($arg, (UV)$var);
 T_FLOAT
-       SvSetMagicNV($arg, (double)$var);
+       sv_setnv($arg, (double)$var);
 T_NV
-       SvSetMagicNV($arg, (double)$var);
+       sv_setnv($arg, (NV)$var);
 T_DOUBLE
-       SvSetMagicNV($arg, (double)$var);
+       sv_setnv($arg, (double)$var);
 T_PV
-       SvSetMagicPV((SV*)$arg, $var);
+       sv_setpv((SV*)$arg, $var);
 T_PTR
-       SvSetMagicIV($arg, (IV)$var);
+       sv_setiv($arg, PTR2IV($var));
 T_PTRREF
        sv_setref_pv($arg, Nullch, (void*)$var);
 T_REF_IV_REF
@@ -244,17 +248,17 @@ T_REFREF
 T_REFOBJ
        NOT IMPLEMENTED
 T_OPAQUE
-       SvSetMagicPVN($arg, (char *)&$var, sizeof($var));
+       sv_setpvn($arg, (char *)&$var, sizeof($var));
 T_OPAQUEPTR
-       SvSetMagicPVN($arg, (char *)$var, sizeof(*$var)), XFree((char *)$var);
+       sv_setpvn($arg, (char *)$var, sizeof(*$var));
 T_PACKED
        XS_pack_$ntype($arg, $var);
 T_PACKEDARRAY
        XS_pack_$ntype($arg, $var, count_$ntype);
 T_DATAUNIT     
-       SvSetMagicPVN($arg, $var.chp(), $var.size());
+       sv_setpvn($arg, $var.chp(), $var.size());
 T_CALLBACK
-       SvSetMagicPVN($arg, $var.context.value().chp(),
+       sv_setpvn($arg, $var.context.value().chp(),
                $var.context.value().size());
 T_ARRAY
        ST_EXTEND($var.size);
@@ -262,28 +266,28 @@ T_ARRAY
                ST(ix_$var) = sv_newmortal();
        DO_ARRAY_ELEM
        }
-       sp += $var.size - 1;
+       SP += $var.size - 1;
 T_IN
        {
            GV *gv = newGVgen("$Package");
            if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
-               SvSetMagicSV($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
            else
-               $arg = &sv_undef;
+               $arg = &PL_sv_undef;
        }
 T_INOUT
        {
            GV *gv = newGVgen("$Package");
            if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
-               SvSetMagicSV($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
            else
-               $arg = &sv_undef;
+               $arg = &PL_sv_undef;
        }
 T_OUT
        {
            GV *gv = newGVgen("$Package");
            if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
-               SvSetMagicSV($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
            else
-               $arg = &sv_undef;
+               $arg = &PL_sv_undef;
        }