The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
TYPEMAP
EventAndKeySymPtr	T_XEVENT
Tk_Window		T_TK_WINDOW
Display *		T_PTROBJ
Screen *		T_PTROBJ
Visual *		T_PTROBJ
Window			T_IVOBJ
GC			T_PTROBJ
Font			T_IVOBJ
Atom			T_IV
FILE *			T_NIO
hash_ptr *		T_PTR

INPUT 
T_XEVENT
	if (sv_isa($arg, \"XEvent\")) {
	    IV tmp = SvIV((SV*)SvRV($arg));
	    $var = ($type) tmp;
	}
	else
	    croak(\"$var is not of type XEvent\")

T_TK_WINDOW
	$var = GetWindow($arg)

T_IVOBJ
	if (sv_isa($arg, \"${ntype}\")) {
	    IV tmp = SvIV((SV*)SvRV($arg));
	    $var = ($type) tmp;
	}
	else
	    croak(\"$var is not of type ${ntype}\")

T_NIO
	if (sv_isa($arg, \"${Package}\")) {
	    $var = IoIFP(sv_2io(SvRV($arg)));
	}
	else
	    croak(\"$var is not of type ${Package}\")


OUTPUT
T_IVOBJ
	sv_setref_iv($arg, \"${ntype}\", (IV) $var);