comparison src/console-xlike-inc.h @ 4917:fce43cb76a1c

xlike cleanup, documentation -------------------- ChangeLog entries follow: -------------------- man/ChangeLog addition: 2010-02-03 Ben Wing <ben@xemacs.org> * internals/internals.texi (Top): * internals/internals.texi (Evaluation; Stack Frames; Bindings): * internals/internals.texi (Ben's README): * internals/internals.texi (Consoles; Devices; Frames; Windows): * internals/internals.texi (Window Hierarchy): * internals/internals.texi (The Window Object): * internals/internals.texi (Modules for the Basic Displayable Lisp Objects): * internals/internals.texi (Window-System Support): * internals/internals.texi (Creating a Window-System Type): * internals/internals.texi (Discussion -- Garbage Collection): Update the part at the top about how to maintain the file with more tips. Add a chapter on "window-system support" describing in a general way how the support for different window systems/device types works, including the separation between device-independent and device-dependent parts, device methods, the specific device types and the "xlike" pseudo-type. src/ChangeLog addition: 2010-02-03 Ben Wing <ben@xemacs.org> * Makefile.in.in: * Makefile.in.in (x_objs): * Makefile.in.in (gtk_gui_objs): * console-xlike-inc.h: * depend: * device-x.c: * emacs.c: * gccache-gtk.h: * gccache-gtk.h (gc_cache_lookup): * gccache-x.c: * gccache-x.c (GCCACHE_HASH): * gccache-x.h: * toolbar-gtk.c: * toolbar-gtk.c (gtk_initialize_frame_toolbars): * toolbar-x.c: * toolbar-x.c (x_initialize_frame_toolbars): * toolbar-xlike.c: * toolbar-xlike.c (xlike_draw_blank_toolbar_button): * toolbar-xlike.c (xlike_output_toolbar_button): * toolbar-xlike.c (xlike_get_button_size): * toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP): * toolbar-xlike.c (xlike_output_toolbar): * toolbar-xlike.c (xlike_clear_toolbar): * toolbar-xlike.c (xlike_output_frame_toolbars): * toolbar-xlike.c (xlike_clear_frame_toolbars): * toolbar-xlike.c (xlike_redraw_exposed_toolbar): * toolbar-xlike.c (xlike_redraw_exposed_toolbars): * toolbar-xlike.c (xlike_redraw_frame_toolbars): * toolbar-xlike.h: * toolbar-xlike.h (xlike_clear_frame_toolbars): Rename some files to make them consistent with general naming rules: xgccache.c -> gccache-x.c xgccache.h -> gccache-x.h toolbar-common.c -> toolbar-xlike.c toolbar-common.h -> toolbar-xlike.h Fix include-file references. Also change the names of functions in now-named toolbar-xlike.c to be xlike_foo() instead of common_foo(). Add a longish comment in console-xlike-inc.h describing the "xlike" system, how it works and what the various files are used for.
author Ben Wing <ben@xemacs.org>
date Wed, 03 Feb 2010 02:46:50 -0600
parents a6c778975d7d
children 5502045ec510 8b2f75cecb89
comparison
equal deleted inserted replaced
4916:a6c778975d7d 4917:fce43cb76a1c
32 on the level of individual library functions, constants and types, of 32 on the level of individual library functions, constants and types, of
33 which there are large number. Abstracting them into device methods 33 which there are large number. Abstracting them into device methods
34 would lead to a large number of very small functions and very 34 would lead to a large number of very small functions and very
35 hard-to-read code. 35 hard-to-read code.
36 36
37 Instead, we handle the situation by having only one copy, placed in a 37 Instead, we handle the situation by the following:
38 file called *-xlike-inc.c (e.g. redisplay-xlike-inc.c) and 38
39 conditionalizing using ifdefs. Because we can compile with both X and 39 (1) In cases where there are lots of individual differences, we have
40 GTK at once, we include this file inside of the appropriate 40 only one copy, placed in a file called *-xlike-inc.c
41 device-specific file (e.g. redisplay-gtk.c or redisplay-x.c). The `inc' 41 (e.g. redisplay-xlike-inc.c), and conditionalize using ifdefs. Because
42 in *-xlike-inc.c indicates that this is a file meant to be included in 42 we can compile with both X and GTK at once, we include this file inside
43 another file, despite the fact that it is a .c file. 43 of the appropriate device-specific file (e.g. redisplay-gtk.c or
44 redisplay-x.c). The `inc' in *-xlike-inc.c indicates that this is a
45 file meant to be included in another file, despite the fact that it is a
46 .c file.
44 47
45 To signal which variety of "xlike" we are compiling for, either 48 To signal which variety of "xlike" we are compiling for, either
46 THIS_IS_X or THIS_IS_GTK needs to be defined, prior to including the 49 THIS_IS_X or THIS_IS_GTK needs to be defined, prior to including the
47 *-xlike-inc.c file. */ 50 *-xlike-inc.c file.
51
52 (2) For code that is identical in both versions, or where it's possible
53 to have only one copy at runtime through some other means, we name
54 the file *-xlike.c. This is a normal file, not included in some other
55 file. An example of "other means" is toolbar-xlike.c, where all
56 functions are passed a frame or device, and it's possible to do run-time
57 conditionalization based on the device type. (This isn't currently the
58 case but will be soon once the related changes from my `hg-fixup'
59 workspace are checked in. --ben) */
48 60
49 61
50 /* About the representation of color below: 62 /* About the representation of color below:
51 63
52 X has two ways of representing a color: (a) as an unsigned long 64 X has two ways of representing a color: (a) as an unsigned long
70 #endif 82 #endif
71 83
72 #ifdef THIS_IS_X 84 #ifdef THIS_IS_X
73 # include "console-x-impl.h" 85 # include "console-x-impl.h"
74 # ifdef NEED_GCCACHE_H 86 # ifdef NEED_GCCACHE_H
75 # include "xgccache.h" 87 # include "gccache-x.h"
76 # endif 88 # endif
77 # ifdef NEED_GLYPHS_H 89 # ifdef NEED_GLYPHS_H
78 # include "glyphs-x.h" 90 # include "glyphs-x.h"
79 # endif 91 # endif
80 # ifdef NEED_OBJECTS_IMPL_H 92 # ifdef NEED_OBJECTS_IMPL_H