summaryrefslogtreecommitdiff
path: root/xcl
diff options
context:
space:
mode:
authorJamey Sharp <jamey@minilop.net>2002-04-08 15:16:16 +0000
committerJamey Sharp <jamey@minilop.net>2002-04-08 15:16:16 +0000
commit1fd66b56c278aaf1e08cd6dcc166f5bee64c81b0 (patch)
tree635903fea902566d42ee8b79debd6b5a9f18cb05 /xcl
parent58e52a174265cd400537c72ca0b10e2e6c370593 (diff)
Began replacing core protocol implementations with m4-generated code.
Implemented a bunch of new core protocol wrapper functions at once.
Diffstat (limited to 'xcl')
-rw-r--r--xcl/src/proto.m485
-rw-r--r--xcl/src/xcbwrap.m4115
2 files changed, 200 insertions, 0 deletions
diff --git a/xcl/src/proto.m4 b/xcl/src/proto.m4
new file mode 100644
index 0000000..7bbe564
--- /dev/null
+++ b/xcl/src/proto.m4
@@ -0,0 +1,85 @@
+XCLREQ(AllowEvents, XCLPARAMS(int mode, Time time))
+
+XCLREQ(Bell, XCLPARAMS(int percent))
+
+XCLREQ(SetAccessControl, XCLPARAMS(int mode))
+
+XCLREQ(ChangeActivePointerGrab, XCLPARAMS(unsigned int event_mask, Cursor cursor, Time time))
+
+XCLREQ(SetCloseDownMode, XCLPARAMS(int mode))
+
+XCLREQ(ChangePointerControl, XCLPARAMS(Bool do_acceleration, Bool do_threshold, int acceleration_numerator, int acceleration_denominator, int threshold))
+
+XCLREQ(ChangeSaveSet, XCLPARAMS(Window window, int mode))
+
+XCLREQ(ClearArea, XCLPARAMS(Window window, int x, int y, unsigned int width, unsigned int height, Bool exposures))
+
+XCLREQ(ConvertSelection, XCLPARAMS(Atom selection, Atom target, Atom property, Window requestor, Time time))
+
+XCLREQ(CopyArea, XCLGC(gc), XCLPARAMS(Drawable src_drawable, Drawable dst_drawable, GC gc, int src_x, int src_y, unsigned int width, unsigned int height, int dst_x, int dst_y))
+
+XCLREQ(CopyColormapAndFree, XCLALLOC(Colormap, mid), XCLPARAMS(Colormap src_cmap))
+
+XCLREQ(CopyPlane, XCLGC(gc), XCLPARAMS(Drawable src_drawable, Drawable dst_drawable, GC gc, int src_x, int src_y, unsigned int width, unsigned int height, int dst_x, int dst_y, unsigned long bit_plane))
+
+XCLREQ(CreateColormap, XCLALLOC(Colormap, mid), XCLPARAMS(Window window, Visual *visual, int alloc))
+
+XCLREQ(CreatePixmap, XCLALLOC(Pixmap, pid), XCLPARAMS(Drawable drawable, unsigned int width, unsigned int height, unsigned int depth))
+
+XCLREQ(DeleteProperty, XCLPARAMS(Window window, Atom property))
+
+XCLREQ(DestroySubwindows, XCLPARAMS(Window window))
+
+XCLREQ(DestroyWindow, XCLPARAMS(Window window))
+
+XCLREQ(ForceScreenSaver, XCLPARAMS(int mode))
+
+XCLREQ(FreeColormap, XCLPARAMS(Colormap cmap))
+
+XCLREQ(FreeColors, XCLPARAMS(Colormap cmap, unsigned long *pixels, int pixels_len, unsigned long plane_mask))
+
+XCLREQ(FreeCursor, XCLPARAMS(Cursor cursor))
+
+XCLREQ(FreePixmap, XCLPARAMS(Pixmap pixmap))
+
+XCLREQ(GrabButton, XCLPARAMS(unsigned int modifiers, unsigned int button, Window grab_window, Bool owner_events, unsigned int event_mask, int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor))
+
+XCLREQ(GrabKey, XCLPARAMS(int key, unsigned int modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode))
+
+XCLREQ(GrabServer)
+
+XCLREQ(InstallColormap, XCLPARAMS(Colormap cmap))
+
+XCLREQ(KillClient, XCLPARAMS(XID resource))
+
+XCLREQ(MapSubwindows, XCLPARAMS(Window window))
+
+XCLREQ(MapWindow, XCLPARAMS(Window window))
+
+XCLREQ(ReparentWindow, XCLPARAMS(Window window, Window parent, int x, int y))
+
+XCLREQ(SetInputFocus, XCLPARAMS(Window focus, int revert_to, Time time))
+
+XCLREQ(ChangeKeyboardMapping, XCLPARAMS(int first_keycode, int keysyms_per_keycode, KeySym *keysyms, int keycode_count))
+
+XCLREQ(SetSelectionOwner, XCLPARAMS(Atom selection, Window owner, Time time))
+
+XCLREQ(SetScreenSaver, XCLPARAMS(int timeout, int interval, int prefer_blanking, int allow_exposures))
+
+XCLREQ(UngrabButton, XCLPARAMS(unsigned int button, unsigned int modifiers, Window grab_window))
+
+XCLREQ(UngrabKeyboard, XCLPARAMS(Time time))
+
+XCLREQ(UngrabKey, XCLPARAMS(int key, unsigned int modifiers, Window grab_window))
+
+XCLREQ(UngrabPointer, XCLPARAMS(Time time))
+
+XCLREQ(UngrabServer)
+
+XCLREQ(UninstallColormap, XCLPARAMS(Colormap cmap))
+
+XCLREQ(UnmapSubwindows, XCLPARAMS(Window window))
+
+XCLREQ(UnmapWindow, XCLPARAMS(Window window))
+
+XCLREQ(WarpPointer, XCLPARAMS(Window src_window, Window dst_window, int src_x, int src_y, unsigned int src_width, unsigned int src_height, int dst_x, int dst_y))
diff --git a/xcl/src/xcbwrap.m4 b/xcl/src/xcbwrap.m4
new file mode 100644
index 0000000..961371b
--- /dev/null
+++ b/xcl/src/xcbwrap.m4
@@ -0,0 +1,115 @@
+dnl Copyright (C) 2001-2002 Bart Massey and Jamey Sharp.
+dnl All Rights Reserved. See the file COPYING for licensing information.
+/*
+ * This file automatically generated by xcbwrap.m4.
+ * Edit at your peril.
+ */
+
+#include "xclint.h"
+divert(-1) dnl kill output until the next diversion
+
+dnl default values
+define(`DEFRETTYPE', `int')
+define(`DEFRETVAL', `1')
+define(`DEFPARAMS', `')
+define(`DEFFLUSHGC', `')
+define(`DEFALLOC', `')
+
+dnl init to defaults
+define(`RETTYPE', DEFRETTYPE)
+define(`RETVAL', DEFRETVAL)
+define(`PARAMS', DEFPARAMS)
+define(`FLUSHGC', DEFFLUSHGC)
+define(`ALLOC', DEFALLOC)
+
+dnl XCLREQ(name, specs ...)
+define(`XCLREQ', `
+dnl evaluate anything that the caller passed in
+shift($@)
+
+dnl save values into their per-request storage
+define(`$1'`RETTYPE', RETTYPE)
+define(`$1'`RETVAL', RETVAL)
+define(`$1'`PARAMS', defn(`PARAMS'))
+define(`$1'`FLUSHGC', FLUSHGC)
+define(`$1'`ALLOC', ALLOC)
+
+dnl restore defaults for next round
+define(`RETTYPE', DEFRETTYPE)
+define(`RETVAL', DEFRETVAL)
+define(`PARAMS', DEFPARAMS)
+define(`FLUSHGC', DEFFLUSHGC)
+define(`ALLOC', DEFALLOC)
+')
+
+define(`XCLRETTYPE', `define(`RETTYPE', `$1')')
+define(`XCLRETVAL', `define(`RETVAL', `$1')')
+define(`XCLPARAMS', `define(`PARAMS', `,$@')')
+define(`XCLGC', `define(`FLUSHGC', `$1')')
+
+define(`XCLALLOC', `define(`ALLOC', `
+ $1 $2 = XCB`'dnl
+ifelse($1, `Window', `WINDOW',
+ifelse($1, `Pixmap', `PIXMAP',
+ifelse($1, `Cursor', `CURSOR',
+ifelse($1, `Font', `FONT',
+ifelse($1, `GContext', `GCONTEXT',
+ifelse($1, `Colormap', `COLORMAP',
+ifelse($1, `Atom', `ATOM')))))))`'dnl
+New(c).xid;')
+define(`RETTYPE', `$1')
+define(`RETVAL', `$2')
+')
+
+
+dnl Implementations of XCB request description macros
+
+define(`VOIDREQUEST', `divert(0)ifdef(`$1'`RETTYPE', `
+$1RETTYPE X`'$1(Display *dpy`'$1PARAMS)
+{
+ register XCBConnection *c = XCBConnectionOfDisplay(dpy);dnl
+$1ALLOC
+ifelse($1FLUSHGC, , , `dnl
+ LockDisplay(dpy);
+ FlushGC(dpy, $1FLUSHGC);
+')dnl
+ XCB$1(c`'divert(-1)
+ $2
+ divert(0));
+ifelse($1FLUSHGC, , , `dnl
+ UnlockDisplay(dpy);
+')dnl
+ return $1RETVAL;
+}
+')divert(-1)')
+
+define(`PARAM', `divert(0), dnl
+ifelse($1, `WINDOW', `XCLWINDOW($2)',
+ifelse($1, `PIXMAP', `XCLPIXMAP($2)',
+ifelse($1, `CURSOR', `XCLCURSOR($2)',
+ifelse($1, `FONT', `XCLFONT($2)',
+ifelse($1, `GCONTEXT', `XCLGCONTEXT($2->gid)',
+ifelse($1, `COLORMAP', `XCLCOLORMAP($2)',
+ifelse($1, `ATOM', `XCLATOM($2)',
+ifelse($1, `DRAWABLE', `XCLDRAWABLE($2)',
+ifelse($1, `FONTABLE', `XCLFONTABLE($2)',
+ifelse($1, `VISUALID', `XCLVISUALID($2 == CopyFromParent ? CopyFromParent : $2->visualid)',
+ifelse($1, `TIMESTAMP', `XCLTIMESTAMP($2)',
+ifelse($1, `KEYSYM', `XCLKEYSYM($2)',
+ifelse($1, `KEYCODE', `XCLKEYCODE($2)',
+ifelse($1, `BUTTON', `XCLBUTTON($2)',
+`$2'))))))))))))))`'dnl
+divert(-1)')
+
+define(`LOCALPARAM', `
+PARAM($1, $2)
+')
+
+define(`LISTPARAM', `divert(0), dnl
+($1 *) $2`'dnl
+divert(-1)')
+
+define(`VALUEPARAM', `
+PARAM($1, $2)
+LISTPARAM(CARD32, $3)
+')