1Tickit::Event::Key   T_PTROBJ
2Tickit::Event::Mouse T_PTROBJ
3Tickit::Pen          T_PTROBJ_OR_NULL
4Tickit::Rect         T_PTROBJ
5Tickit::Rect_MAYBE   T_PTROBJ_MAYBE
6Tickit::RectSet      T_PTROBJ
7Tickit::RenderBuffer T_PTROBJ
8Tickit::StringPos    T_PTROBJ_OR_NULL
9Tickit::Term         T_PTROBJ
10Tickit::Term_MAYBE   T_PTROBJ_MAYBE
11Tickit::Window       T_PTROBJ
12Tickit::_Tickit      T_PTROBJ
13
14INPUT
15T_PTROBJ_MAYBE
16        if (!SvOK($arg)) {
17            $var = NULL;
18        }
19        else if (SvROK($arg) && sv_derived_from($arg, \"${\do { my $tmp = $ntype; $tmp =~ s/_MAYBE$//; $tmp }}\")) {
20            IV tmp = SvIV((SV*)SvRV($arg));
21            $var = INT2PTR($type,tmp);
22        }
23        else
24            Perl_croak(aTHX_ \"%s: %s is not of type %s\",
25                        ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
26                        \"$var\", \"${\do{ my $tmp = $ntype; $tmp =~ s/_MAYBE$//; $tmp }}\")
27
28INPUT
29T_PTROBJ_OR_NULL
30        if (!SvOK($arg)) {
31            $var = NULL;
32        }
33        else if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
34            IV tmp = SvIV((SV*)SvRV($arg));
35            $var = INT2PTR($type,tmp);
36        }
37        else
38            Perl_croak(aTHX_ \"%s: %s is not of type %s\",
39                        ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
40                        \"$var\", \"$ntype\")
41
42INPUT
43T_PTRSTRUCT
44        if (SvROK($arg) && sv_derived_from($arg, \"${\do { local $_ = $ntype; s/^struct\s+//; s/Ptr$//; $_ }}\")) {
45            IV tmp = SvIV((SV*)SvRV($arg));
46            $var = INT2PTR($type,tmp);
47        }
48        else
49            Perl_croak(aTHX_ \"%s: %s is not of type %s\",
50                        ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
51                        \"$var\", \"${\do { local $_ = $ntype; s/^struct\s+//; s/Ptr$//; $_ }}\");
52
53OUTPUT
54T_PTROBJ_OR_NULL
55        if ($var)
56            sv_setref_pv($arg, \"${ntype}\", (void*)$var);
57        else
58            sv_setsv($arg, &PL_sv_undef);
59