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 {
|
3017
|
24 struct LCRECORD_HEADER header;
|
462
|
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 {
|
3017
|
42 struct LCRECORD_HEADER header;
|
462
|
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 {
|
3017
|
59 struct LCRECORD_HEADER header;
|
462
|
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__ */
|