The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Tickit::Event::Key   T_PTROBJ
Tickit::Event::Mouse T_PTROBJ
Tickit::Pen          T_PTROBJ_OR_NULL
Tickit::Rect         T_PTROBJ
Tickit::Rect_MAYBE   T_PTROBJ_MAYBE
Tickit::RectSet      T_PTROBJ
Tickit::RenderBuffer T_PTROBJ
Tickit::StringPos    T_PTROBJ_OR_NULL
Tickit::Term         T_PTROBJ
Tickit::Window       T_PTROBJ

INPUT
T_PTROBJ_MAYBE
        if (!SvOK($arg)) {
            $var = NULL;
        }
        else if (SvROK($arg) && sv_derived_from($arg, \"${\do { my $tmp = $ntype; $tmp =~ s/_MAYBE$//; $tmp }}\")) {
            IV tmp = SvIV((SV*)SvRV($arg));
            $var = INT2PTR($type,tmp);
        }
        else
            Perl_croak(aTHX_ \"%s: %s is not of type %s\",
                        ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
                        \"$var\", \"${\do{ my $tmp = $ntype; $tmp =~ s/_MAYBE$//; $tmp }}\")

INPUT
T_PTROBJ_OR_NULL
        if (!SvOK($arg)) {
            $var = NULL;
        }
        else if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
            IV tmp = SvIV((SV*)SvRV($arg));
            $var = INT2PTR($type,tmp);
        }
        else
            Perl_croak(aTHX_ \"%s: %s is not of type %s\",
                        ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
                        \"$var\", \"$ntype\")

OUTPUT
T_PTROBJ_OR_NULL
        if ($var)
            sv_setref_pv($arg, \"${ntype}\", (void*)$var);
        else
            sv_setsv($arg, &PL_sv_undef);