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__ */