Mercurial > hg > xemacs-beta
annotate src/objects-impl.h @ 5120:d1247f3cc363 ben-lisp-object
latest work on lisp-object workspace;
more changes eliminating LCRECORD in place of LISP_OBJECT;
now compiles and runs.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Mon, 28 Dec 2009 01:15:52 -0600 |
parents | ad2f4ae9895b |
children | a9c41067dd88 |
rev | line source |
---|---|
872 | 1 /* Generic object functions -- header implementation. |
2 Copyright (C) 1995 Board of Trustees, University of Illinois. | |
3 Copyright (C) 1995, 1996, 2002 Ben Wing. | |
4 | |
5 This file is part of XEmacs. | |
6 | |
7 XEmacs is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
9 Free Software Foundation; either version 2, or (at your option) any | |
10 later version. | |
11 | |
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with XEmacs; see the file COPYING. If not, write to | |
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
20 Boston, MA 02111-1307, USA. */ | |
21 | |
22 /* Synched up with: Not in FSF. */ | |
23 | |
24 #ifndef INCLUDED_objects_impl_h_ | |
25 #define INCLUDED_objects_impl_h_ | |
26 | |
27 #include "specifier.h" | |
28 #include "objects.h" | |
29 | |
30 /***************************************************************************** | |
31 * Color Specifier Object * | |
32 *****************************************************************************/ | |
33 | |
34 struct color_specifier | |
35 { | |
36 Lisp_Object face; /* face this is attached to, or nil */ | |
37 Lisp_Object face_property; /* property of that face */ | |
38 }; | |
39 | |
40 #define COLOR_SPECIFIER_DATA(g) SPECIFIER_TYPE_DATA (g, color) | |
41 #define COLOR_SPECIFIER_FACE(g) (COLOR_SPECIFIER_DATA (g)->face) | |
42 #define COLOR_SPECIFIER_FACE_PROPERTY(g) \ | |
43 (COLOR_SPECIFIER_DATA (g)->face_property) | |
44 | |
45 DECLARE_SPECIFIER_TYPE (color); | |
46 #define XCOLOR_SPECIFIER(x) XSPECIFIER_TYPE (x, color) | |
47 #define COLOR_SPECIFIERP(x) SPECIFIER_TYPEP (x, color) | |
48 #define CHECK_COLOR_SPECIFIER(x) CHECK_SPECIFIER_TYPE (x, color) | |
49 #define CONCHECK_COLOR_SPECIFIER(x) CONCHECK_SPECIFIER_TYPE (x, color) | |
50 | |
51 /***************************************************************************** | |
52 * Font Specifier Object * | |
53 *****************************************************************************/ | |
54 | |
55 struct font_specifier | |
56 { | |
57 Lisp_Object face; /* face this is attached to, or nil */ | |
58 Lisp_Object face_property; /* property of that face */ | |
59 }; | |
60 | |
61 #define FONT_SPECIFIER_DATA(g) SPECIFIER_TYPE_DATA (g, font) | |
62 #define FONT_SPECIFIER_FACE(g) (FONT_SPECIFIER_DATA (g)->face) | |
63 #define FONT_SPECIFIER_FACE_PROPERTY(g) \ | |
64 (FONT_SPECIFIER_DATA (g)->face_property) | |
65 | |
66 DECLARE_SPECIFIER_TYPE (font); | |
67 #define XFONT_SPECIFIER(x) XSPECIFIER_TYPE (x, font) | |
68 #define FONT_SPECIFIERP(x) SPECIFIER_TYPEP (x, font) | |
69 #define CHECK_FONT_SPECIFIER(x) CHECK_SPECIFIER_TYPE (x, font) | |
70 #define CONCHECK_FONT_SPECIFIER(x) CONCHECK_SPECIFIER_TYPE (x, font) | |
71 | |
72 /***************************************************************************** | |
73 * Face Boolean Specifier Object * | |
74 *****************************************************************************/ | |
75 | |
76 struct face_boolean_specifier | |
77 { | |
78 Lisp_Object face; /* face this is attached to, or nil */ | |
79 Lisp_Object face_property; /* property of that face */ | |
80 }; | |
81 | |
82 #define FACE_BOOLEAN_SPECIFIER_DATA(g) SPECIFIER_TYPE_DATA (g, face_boolean) | |
83 #define FACE_BOOLEAN_SPECIFIER_FACE(g) (FACE_BOOLEAN_SPECIFIER_DATA (g)->face) | |
84 #define FACE_BOOLEAN_SPECIFIER_FACE_PROPERTY(g) \ | |
85 (FACE_BOOLEAN_SPECIFIER_DATA (g)->face_property) | |
86 | |
87 DECLARE_SPECIFIER_TYPE (face_boolean); | |
88 extern Lisp_Object Qface_boolean; | |
89 #define XFACE_BOOLEAN_SPECIFIER(x) XSPECIFIER_TYPE (x, face_boolean) | |
90 #define FACE_BOOLEAN_SPECIFIERP(x) SPECIFIER_TYPEP (x, face_boolean) | |
91 #define CHECK_FACE_BOOLEAN_SPECIFIER(x) \ | |
92 CHECK_SPECIFIER_TYPE (x, face_boolean) | |
93 #define CONCHECK_FACE_BOOLEAN_SPECIFIER(x) \ | |
94 CONCHECK_SPECIFIER_TYPE (x, face_boolean) | |
95 | |
96 /**************************************************************************** | |
97 * Color Instance Object * | |
98 ****************************************************************************/ | |
99 | |
100 struct Lisp_Color_Instance | |
101 { | |
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
3094
diff
changeset
|
102 LISP_OBJECT_HEADER header; |
872 | 103 Lisp_Object name; |
104 Lisp_Object device; | |
105 | |
1204 | 106 /* See comment in struct console about console variants. */ |
934 | 107 enum console_variant color_instance_type; |
108 | |
872 | 109 /* console-type-specific data */ |
110 void *data; | |
111 }; | |
112 | |
113 #define COLOR_INSTANCE_NAME(c) ((c)->name) | |
114 #define COLOR_INSTANCE_DEVICE(c) ((c)->device) | |
115 | |
116 /**************************************************************************** | |
117 * Font Instance Object * | |
118 ****************************************************************************/ | |
119 | |
120 struct Lisp_Font_Instance | |
121 { | |
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
3094
diff
changeset
|
122 LISP_OBJECT_HEADER header; |
872 | 123 Lisp_Object name; /* the instantiator used to create the font instance */ |
124 Lisp_Object truename; /* used by the device-specific methods; we need to | |
125 call them to get the truename (#### in reality, | |
126 they all probably just store the truename here | |
127 if they know it, and nil otherwise; we should | |
3094 | 128 check this and enforce it as a general policy |
129 X and GTK do this, except that when they don't | |
130 know they return NAME and don't update TRUENAME. | |
131 MS Windows initializes TRUENAME when the font is | |
132 initialized. TTY doesn't do truename.) */ | |
872 | 133 Lisp_Object device; |
3094 | 134 Lisp_Object charset; /* Mule charset, or whatever */ |
872 | 135 |
1204 | 136 /* See comment in struct console about console variants. */ |
934 | 137 enum console_variant font_instance_type; |
138 | |
872 | 139 unsigned short ascent; /* extracted from `font', or made up */ |
140 unsigned short descent; | |
141 unsigned short width; | |
142 unsigned short height; | |
143 int proportional_p; | |
144 | |
145 /* console-type-specific data */ | |
146 void *data; | |
147 }; | |
148 | |
149 #define FONT_INSTANCE_NAME(f) ((f)->name) | |
3094 | 150 #define FONT_INSTANCE_TRUENAME(f) ((f)->truename) |
151 #define FONT_INSTANCE_CHARSET(f) ((f)->charset) | |
872 | 152 #define FONT_INSTANCE_DEVICE(f) ((f)->device) |
153 #define FONT_INSTANCE_ASCENT(f) ((f)->ascent) | |
154 #define FONT_INSTANCE_DESCENT(f) ((f)->descent) | |
155 #define FONT_INSTANCE_WIDTH(f) ((f)->width) | |
156 #define FONT_INSTANCE_HEIGHT(f) ((f)->height) | |
157 | |
158 #define XFONT_INSTANCE_NAME(f) FONT_INSTANCE_NAME (XFONT_INSTANCE (f)) | |
159 #define XFONT_INSTANCE_TRUENAME(f) FONT_INSTANCE_TRUENAME (XFONT_INSTANCE (f)) | |
3094 | 160 #define XFONT_INSTANCE_CHARSET(f) FONT_INSTANCE_CHARSET (XFONT_INSTANCE (f)) |
872 | 161 #define XFONT_INSTANCE_DEVICE(f) FONT_INSTANCE_DEVICE (XFONT_INSTANCE (f)) |
162 #define XFONT_INSTANCE_ASCENT(f) FONT_INSTANCE_ASCENT (XFONT_INSTANCE (f)) | |
163 #define XFONT_INSTANCE_DESCENT(f) FONT_INSTANCE_DESCENT (XFONT_INSTANCE (f)) | |
164 #define XFONT_INSTANCE_WIDTH(f) FONT_INSTANCE_WIDTH (XFONT_INSTANCE (f)) | |
165 #define XFONT_INSTANCE_HEIGHT(f) FONT_INSTANCE_HEIGHT (XFONT_INSTANCE (f)) | |
166 | |
167 #endif /* INCLUDED_objects_impl_h_ */ |