Mercurial > hg > xemacs-beta
annotate src/ui-gtk.h @ 1303:f99d3d25df86
[xemacs-hg @ 2003-02-15 10:15:54 by ben]
autoload fixes, make-doc speed improvements
Makefile.in.in: Run update-elc-2 with -no-autoloads
to avoid multiple autoload-loading problem.
configure.usage: Document quick-build better.
make-docfile.el: Use `message' (defined in this file) in place of `princ'/`print',
and put in a terpri, so that we get correct newline behavior.
Rewrite if-progn -> when and a few similar stylistic niceties.
And the big change: Allow MS Windows to specify the object files
directly and frob them into C files here (formerly this was done
in xemacs.mak, and very slooooooooooooooooooowly). Due to
line-length limitations in CMD, we need to use a "response file"
to hold the arguments, so when we see a response file argument
(preceded by an @), read in the args (a bit of trickiness to do
this), and process recursively. Also frob .obj -> .c as mentioned
earlier and handle other junk dependencies that need to be removed
(NEEDTODUMP, make-docfile.exe).
update-elc-2.el: Use :test `equal' in call to set-difference.
update-elc.el: Put back commented out kill-emacs, update header comment.
xemacs.mak: Delete old unused code that checks SATISFIED.
Move update-elc-2 up to be near update-elc.
Run update-elc-2 with -no-autoloads to avoid multiple
autoload-loading problem.
Don't compute make-docfile args ourselves. Pass the raw objects
to make-docfile.el, which does the computation (much faster than
we could). Don't delete the DOC file, split the invocation into
two calls to make-docfile.exe (one direct, one through
make-docfile.el), etc. In general, all we do is call make-docfile.
Add proper dependencies for DOC-file rebuilding so it doesn't get
done when not necessary. Implement quick-building here: not
building the DOC file unless it doesn't exist, as the quick-build
docs say.
Makefile.in.in: Don't delete the DOC file. Implement quick-building here: not
building the DOC file unless it doesn't exist, as the quick-build
docs say.
config.h.in, emacs.c: Nothing but niggly spacing changes -- one space before a paren
starting a function-call arglist, please.
author | ben |
---|---|
date | Sat, 15 Feb 2003 10:16:14 +0000 |
parents | e38acbeb1cae |
children | 6fa9919a9a0b |
rev | line source |
---|---|
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__ */ |