14 #############################################################################
17 U32 ix_$var = $argoff;
19 /* allocate taglist struct, +2 as tags lists end in a TAG_DONE by tradition */
20 /* if by some chance someone adds something after the TAG_DONE it will just*/
21 /* result in harmless empty space */
22 $var = $ntype((items -= $argoff) +2);
25 int __index = (ix_$var - $argoff)/3;
26 $var\[__index\].ti_Tag = (ULONG)SvUV(ST(ix_$var));
29 /* the last is a tag_done and usualy has no followers so check for > 1 */
30 if(items > 1 && ($var\[__index\].ti_Tag != TAG_DONE))
32 _tag_type = (ULONG)SvUV(ST(ix_$var));
37 $var\[__index\].ti_Data = (ULONG)INT2PTR(APTR,SvIV(ST(ix_$var)));
40 $var\[__index\].ti_Data = (WORD)SvIV(ST(ix_$var));
43 $var\[__index\].ti_Data = (LONG)SvIV(ST(ix_$var));
46 $var\[__index\].ti_Data = (UWORD)SvUV(ST(ix_$var));
49 $var\[__index\].ti_Data = (ULONG)SvUV(ST(ix_$var));
53 $var\[__index\].ti_Data = (ULONG)(STRPTR)SvPV_nolen(ST(ix_$var));
56 Perl_croak(aTHX_ \"Unknown TAGTYPE \%d\",_tag_type);
64 /* Allocate variable type according to preceding var tagtype */
68 $var.tr_aptr = INT2PTR(APTR,SvIV($arg));
71 $var.tr_word = (WORD)SvIV($arg);
74 $var.tr_long = (LONG)SvIV($arg);
76 $var.tr_uword = (UWORD)SvUV($arg);
79 $var.tr_ulong = (ULONG)SvUV($arg);
83 $var.tr_strptr = (STRPTR)SvPV_nolen($arg);
86 Perl_croak(aTHX_ \"Unknown TAGTYPE \%d\",tagtype);
89 ####################################################################################
92 /* Allocate variable type according to preceding var tagtype */
96 sv_setiv($arg, PTR2IV($var.tr_aptr));
99 sv_setiv($arg, (IV)$var.tr_word);
102 sv_setiv($arg, (IV)$var.tr_long);
105 sv_setuv($arg, (UV)$var.tr_uword);
108 sv_setuv($arg, (UV)$var.tr_ulong);
112 sv_setpv((SV*)$arg, $var.tr_strptr);
115 Perl_croak(aTHX_ \"Unknown TAGTYPE \%d\",tagtype);