xref: /minix/external/bsd/nvi/dist/perl_api/typemap (revision 84d9c625)
1TYPEMAP
2# Grr can't let it end in OBJ 'cause xsubpp would
3# s/OBJ$/REF/ that for the DESTROY function
4VI	T_VIOBJNOMUNGE
5VI::OPT	T_VIOBJREF
6VI::MAP	T_VIOBJREF
7VI::MARK	T_VIOBJREF
8VI::LINE	T_VIOBJREF
9VI::TAGQ	T_VITAGQ
10VI::TAGQ2	T_VITAGQ2
11AVREF	T_AVREFREF
12
13INPUT
14T_AVREFREF
15	if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVAV)
16	    $var = (AV *)SvRV($arg);
17	else
18	    croak(\"$var is not a reference to an array\")
19T_VIOBJNOMUNGE
20	if (sv_isa($arg, \"VI\")) {
21	    IV tmp = SvIV((SV*)SvRV($arg));
22	    $var = ($type) tmp;
23	    if (!tmp)
24		croak(\"screen no longer exists\");
25	}
26	else
27	    croak(\"$var is not of type ${ntype}\")
28T_VIOBJREF
29	if (sv_isa($arg, \"${ntype}\")) {
30	    IV tmp = SvIV((SV*)SvRV($arg));
31	    if (sv_isa((SV *)tmp, \"VI\")) {
32	    	IV tmp2 = SvIV((SV*)SvRV((SV *)tmp));
33	    	$var = ($type) tmp2;
34	    	if (!tmp2)
35		    croak(\"screen no longer exists\");
36	    }
37	    else
38	    	croak(\"$var is not of type ${ntype}\");
39	}
40	else
41	    croak(\"$var is not of type ${ntype}\")
42T_VITAGQ
43	if (sv_isa($arg, \"VI::TAGQ\")) {
44	    $var = ($type) SvIV((SV*)SvRV($arg));
45	    if ($var->tqp == 0)
46		croak(\"Tag queue invalidated\");
47	} else
48	    croak(\"$var is not of type ${ntype}\")
49T_VITAGQ2
50	if (sv_isa($arg, \"VI::TAGQ\")) {
51	    $var = ($type) SvIV((SV*)SvRV($arg));
52	} else
53	    croak(\"$var is not of type ${ntype}\")
54
55OUTPUT
56T_VIOBJNOMUNGE
57	newVIrv($arg, $var);
58