Folks--
Is there likely to be a user list for cffi in the near future? If
not, is it okay to ask user oriented questions (or provide dumb-user
feedback)?
For instance, I was trying to defcstruct the GdkEventKey structure for
SBCL, and couldn't use stuff like :uint32 and so on as shown in the
manual. So I had to spend a lot of time guessing (and staring at
cffi-sbcl.lisp). So, it seems I have to use :char for :gint8 and so
on.
The following finally allowed me to extract the keypress (for
cl-browser) I was looking for, but, alas, it wasn't so plain given the
C documentation for the actual struct (as follows).
;; CL/CFFI version
(defcstruct gdk-event-key
"GdkEventKey"
(gdk-event-type :int)
(gdk-window :pointer)
(send-event :char) ;; int8
(time :unsigned-int)
(state :unsigned-int)
(keyval :unsigned-int)
(length :int)
(text :string)
(hardware-keycode :unsigned-short)
(group :unsigned-char))
;; C version
typedef struct {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
guint state;
guint keyval;
gint length;
gchar *string;
guint16 hardware_keycode;
guint8 group;
} GdkEventKey;
What confuses me a bit is the C docs. What's the diff between guint
and guint32? Since I'm on a 32bit machine, they're the same, right?
Anyway, I figure I'm you're target luser. Never programmed
significantly in C and am really liking how simple CFFI seems (after
sb-alien).
Are you planning on mapping more names to the SBCL part of all this?
Having something like :unsigned-int32 as well as :unsigned-int would
allow me to remain as ignorant as I want to. ;) (Translation: since I
deal with word size so rarely, I always have to think hard about it
and remember stuff, and that, well, interrupts the flow, you know?)
Okay, well, the work you're doing is fantastic. It's a lot of fun. I
might even make cl-browser the minimalist working browser out there,
if only to force myself to learn more of the huge GTK api.
Keith