TYPEMAP
Display * O_X11_Xlib
DisplayOrNull O_X11_XlibOrNull
Screen * O_X11_Xlib_Screen
ScreenNumber O_X11_Xlib_ScreenNumber
Visual * O_X11_Xlib_Opaque
VisualOrNull O_X11_Xlib_OpaqueOrNull
GC O_X11_Xlib_Opaque
XEvent * O_X11_Xlib_Struct
XVisualInfo * O_X11_Xlib_Struct
XWindowChanges * O_X11_Xlib_Struct
XWindowAttributes * O_X11_Xlib_Struct
XSetWindowAttributes* O_X11_Xlib_Struct
XSizeHints * O_X11_Xlib_Struct
XRectangle * O_X11_Xlib_Struct
XRenderPictFormat * O_X11_Xlib_Struct
Window O_X11_Xlib_XID
Pixmap O_X11_Xlib_XID
Cursor O_X11_Xlib_XID
Colormap O_X11_Xlib_XID
Drawable O_X11_Xlib_XID
VisualID O_X11_Xlib_XID
XserverRegion O_X11_Xlib_XID
Glyph O_X11_Xlib_XID
GlyphSet O_X11_Xlib_XID
Picture O_X11_Xlib_XID
PictFormat O_X11_Xlib_XID
Atom T_UV
Time T_UV
Bool T_BOOL
KeyCode T_IV
KeySym T_IV
INPUT
O_X11_Xlib
$var = PerlXlib_get_magic_dpy($arg, 1);
OUTPUT
O_X11_Xlib
$arg = PerlXlib_obj_for_display($var, 0);
INPUT
O_X11_XlibOrNull
$var = PerlXlib_get_magic_dpy($arg, 0);
OUTPUT
O_X11_XlibOrNull
$arg = PerlXlib_obj_for_display($var, 0);
INPUT
O_X11_Xlib_ScreenNumber
if (!SvOK($arg))
$var = DefaultScreen(dpy);
else if (SvROK($arg)) {
SV **fp;
if (SvTYPE(SvRV($arg)) == SVt_PVHV && (fp= hv_fetch((HV*)SvRV($arg), \"screen_number\", 13, 0)) && *fp) {
$var= SvIV(*fp);
}
else croak(\"Invalid object passed as Screen number\");
}
else {
$var= SvIV($arg);
if ($var == -1) $var= DefaultScreen(dpy);
}
INPUT
O_X11_Xlib_Screen
$var = PerlXlib_sv_to_screen($arg, 1);
OUTPUT
O_X11_Xlib_Screen
$arg = PerlXlib_obj_for_screen($var, 0);
INPUT
O_X11_Xlib_XID
$var = PerlXlib_sv_to_xid($arg);
OUTPUT
O_X11_Xlib_XID
// Always return unsigned integer. X11::Xlib::* can override this as needed.
sv_setuv( $arg, $var );
INPUT
O_X11_Xlib_Struct
$var= ( $type ) PerlXlib_get_struct_ptr(
$arg, 0, \"X11::Xlib::@{[ $type =~ /(\w+)/ ]}\", sizeof(@{[ $type =~ /(\w+)/ ]}),
(PerlXlib_struct_pack_fn*) &PerlXlib_@{[ $type =~ /(\w+)/ ]}_pack
);
INPUT
O_X11_Xlib_Opaque
if (sv_isa($arg, \"X11::Xlib::@{[ $type =~ /(\w+)/ ]}\")) {
$var= ($type) PerlXlib_sv_to_display_innerptr($arg, 1);
} else {
croak( \"%s is not a %s\", \"$var\", \"X11::Xlib::@{[ $type =~ /(\w+)/ ]}\" );
}
OUTPUT
O_X11_Xlib_Opaque
sv_setsv($arg, PerlXlib_obj_for_display_innerptr(
dpy, $var, \"X11::Xlib::@{[ $type =~ /(\w+)/ ]}\", SVt_PVMG, 1));
INPUT
O_X11_Xlib_OpaqueOrNull
if (!SvOK($arg) || (SvIOK($arg) && !SvIV($arg)))
$var= NULL;
else if (sv_isa($arg, \"X11::Xlib::@{[ $type =~ /(\w+?)OrNull/ ]}\")) {
$var= ($type) PerlXlib_sv_to_display_innerptr($arg, 0);
} else {
croak( \"%s is not a %s\", \"$var\", \"X11::Xlib::@{[ $type =~ /(\w+)/ ]}\" );
}
OUTPUT
O_X11_Xlib_OpaqueOrNull
if ($var)
sv_setsv($arg, PerlXlib_obj_for_display_innerptr(
dpy, $var, \"X11::Xlib::@{[ $type =~ /(\w+?)OrNull/ ]}\", SVt_PVMG, 1));
else
sv_setsv($arg, &PL_sv_undef);