Mercurial > hg > xemacs-beta
comparison src/ui-gtk.h @ 462:0784d089fdc9 r21-2-46
Import from CVS: tag r21-2-46
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:44:37 +0200 |
parents | |
children | af57a77cbc92 |
comparison
equal
deleted
inserted
replaced
461:120ed4009e51 | 462:0784d089fdc9 |
---|---|
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) | |
36 #define XSETFFI(x,p) XSETRECORD (x, p, emacs_ffi) | |
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) | |
51 #define XSETGTK_OBJECT(x,p) XSETRECORD (x, p, emacs_gtk_object) | |
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) | |
67 #define XSETGTK_BOXED(x,p) XSETRECORD (x, p, emacs_gtk_boxed) | |
68 #define GTK_BOXEDP(x) RECORDP (x, emacs_gtk_boxed) | |
69 #define CHECK_GTK_BOXED(x) CHECK_RECORD (x, emacs_gtk_boxed) | |
70 | |
71 #endif /* __UI_GTK_H__ */ |