462
+ − 1 /* ui-gtk.h
+ − 2 **
+ − 3 ** Description:
+ − 4 **
+ − 5 ** Created by: William M. Perry
+ − 6 ** Copyright (c) 2000 Aventail Corporation
+ − 7 **
+ − 8 */
+ − 9
+ − 10 #ifndef __UI_GTK_H__
+ − 11 #define __UI_GTK_H__
+ − 12
+ − 13 /* Encapsulate a foreign function call */
+ − 14 #include <gtk/gtk.h>
+ − 15 #include "sysdll.h"
+ − 16 #include "lrecord.h"
+ − 17
+ − 18 typedef void (*ffi_actual_function) (void);
+ − 19 typedef void (*ffi_marshalling_function) (ffi_actual_function, GtkArg *);
+ − 20
+ − 21 #define MAX_GTK_ARGS 100
+ − 22
+ − 23 typedef struct {
+ − 24 struct lcrecord_header header;
+ − 25 GtkType return_type;
+ − 26 GtkType args[MAX_GTK_ARGS];
+ − 27 gint n_args;
+ − 28 Lisp_Object function_name;
+ − 29 dll_func function_ptr;
+ − 30 ffi_marshalling_function marshal;
+ − 31 } emacs_ffi_data;
+ − 32
+ − 33 DECLARE_LRECORD (emacs_ffi, emacs_ffi_data);
+ − 34
+ − 35 #define XFFI(x) XRECORD (x, emacs_ffi, emacs_ffi_data)
617
+ − 36 #define wrap_emacs_ffi(p) wrap_record (p, emacs_ffi)
462
+ − 37 #define FFIP(x) RECORDP (x, emacs_ffi)
+ − 38 #define CHECK_FFI(x) CHECK_RECORD (x, emacs_ffi)
+ − 39
+ − 40 /* Encapsulate a GtkObject in Lisp */
+ − 41 typedef struct {
+ − 42 struct lcrecord_header header;
+ − 43 gboolean alive_p;
+ − 44 GtkObject *object;
+ − 45 Lisp_Object plist;
+ − 46 } emacs_gtk_object_data;
+ − 47
+ − 48 DECLARE_LRECORD (emacs_gtk_object, emacs_gtk_object_data);
+ − 49
+ − 50 #define XGTK_OBJECT(x) XRECORD (x, emacs_gtk_object, emacs_gtk_object_data)
617
+ − 51 #define wrap_emacs_gtk_object(p) wrap_record (p, emacs_gtk_object)
462
+ − 52 #define GTK_OBJECTP(x) RECORDP (x, emacs_gtk_object)
+ − 53 #define CHECK_GTK_OBJECT(x) CHECK_RECORD (x, emacs_gtk_object)
+ − 54
+ − 55 extern Lisp_Object build_gtk_object (GtkObject *obj);
+ − 56
+ − 57 /* Encapsulate a GTK_TYPE_BOXED in lisp */
+ − 58 typedef struct {
+ − 59 struct lcrecord_header header;
+ − 60 GtkType object_type;
+ − 61 void *object;
+ − 62 } emacs_gtk_boxed_data;
+ − 63
+ − 64 DECLARE_LRECORD (emacs_gtk_boxed, emacs_gtk_boxed_data);
+ − 65
+ − 66 #define XGTK_BOXED(x) XRECORD (x, emacs_gtk_boxed, emacs_gtk_boxed_data)
617
+ − 67 #define wrap_emacs_gtk_boxed(p) wrap_record (p, emacs_gtk_boxed)
462
+ − 68 #define GTK_BOXEDP(x) RECORDP (x, emacs_gtk_boxed)
+ − 69 #define CHECK_GTK_BOXED(x) CHECK_RECORD (x, emacs_gtk_boxed)
+ − 70
778
+ − 71 extern Lisp_Object build_gtk_boxed (void *obj, GtkType t);
+ − 72
462
+ − 73 #endif /* __UI_GTK_H__ */