Mercurial > hg > xemacs-beta
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ui-gtk.h Mon Aug 13 11:44:37 2007 +0200 @@ -0,0 +1,71 @@ +/* ui-gtk.h +** +** Description: +** +** Created by: William M. Perry +** Copyright (c) 2000 Aventail Corporation +** +*/ + +#ifndef __UI_GTK_H__ +#define __UI_GTK_H__ + +/* Encapsulate a foreign function call */ +#include <gtk/gtk.h> +#include "sysdll.h" +#include "lrecord.h" + +typedef void (*ffi_actual_function) (void); +typedef void (*ffi_marshalling_function) (ffi_actual_function, GtkArg *); + +#define MAX_GTK_ARGS 100 + +typedef struct { + struct lcrecord_header header; + GtkType return_type; + GtkType args[MAX_GTK_ARGS]; + gint n_args; + Lisp_Object function_name; + dll_func function_ptr; + ffi_marshalling_function marshal; +} emacs_ffi_data; + +DECLARE_LRECORD (emacs_ffi, emacs_ffi_data); + +#define XFFI(x) XRECORD (x, emacs_ffi, emacs_ffi_data) +#define XSETFFI(x,p) XSETRECORD (x, p, emacs_ffi) +#define FFIP(x) RECORDP (x, emacs_ffi) +#define CHECK_FFI(x) CHECK_RECORD (x, emacs_ffi) + +/* Encapsulate a GtkObject in Lisp */ +typedef struct { + struct lcrecord_header header; + gboolean alive_p; + GtkObject *object; + Lisp_Object plist; +} emacs_gtk_object_data; + +DECLARE_LRECORD (emacs_gtk_object, emacs_gtk_object_data); + +#define XGTK_OBJECT(x) XRECORD (x, emacs_gtk_object, emacs_gtk_object_data) +#define XSETGTK_OBJECT(x,p) XSETRECORD (x, p, emacs_gtk_object) +#define GTK_OBJECTP(x) RECORDP (x, emacs_gtk_object) +#define CHECK_GTK_OBJECT(x) CHECK_RECORD (x, emacs_gtk_object) + +extern Lisp_Object build_gtk_object (GtkObject *obj); + +/* Encapsulate a GTK_TYPE_BOXED in lisp */ +typedef struct { + struct lcrecord_header header; + GtkType object_type; + void *object; +} emacs_gtk_boxed_data; + +DECLARE_LRECORD (emacs_gtk_boxed, emacs_gtk_boxed_data); + +#define XGTK_BOXED(x) XRECORD (x, emacs_gtk_boxed, emacs_gtk_boxed_data) +#define XSETGTK_BOXED(x,p) XSETRECORD (x, p, emacs_gtk_boxed) +#define GTK_BOXEDP(x) RECORDP (x, emacs_gtk_boxed) +#define CHECK_GTK_BOXED(x) CHECK_RECORD (x, emacs_gtk_boxed) + +#endif /* __UI_GTK_H__ */