jpayne@69
|
1
|
jpayne@69
|
2 /***********************************************************
|
jpayne@69
|
3
|
jpayne@69
|
4 Copyright 1987, 1988, 1998 The Open Group
|
jpayne@69
|
5
|
jpayne@69
|
6 Permission to use, copy, modify, distribute, and sell this software and its
|
jpayne@69
|
7 documentation for any purpose is hereby granted without fee, provided that
|
jpayne@69
|
8 the above copyright notice appear in all copies and that both that
|
jpayne@69
|
9 copyright notice and this permission notice appear in supporting
|
jpayne@69
|
10 documentation.
|
jpayne@69
|
11
|
jpayne@69
|
12 The above copyright notice and this permission notice shall be included in
|
jpayne@69
|
13 all copies or substantial portions of the Software.
|
jpayne@69
|
14
|
jpayne@69
|
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
jpayne@69
|
16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
jpayne@69
|
17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
jpayne@69
|
18 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
jpayne@69
|
19 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
jpayne@69
|
20 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
jpayne@69
|
21
|
jpayne@69
|
22 Except as contained in this notice, the name of The Open Group shall not be
|
jpayne@69
|
23 used in advertising or otherwise to promote the sale, use or other dealings
|
jpayne@69
|
24 in this Software without prior written authorization from The Open Group.
|
jpayne@69
|
25
|
jpayne@69
|
26
|
jpayne@69
|
27 Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
|
jpayne@69
|
28
|
jpayne@69
|
29 All Rights Reserved
|
jpayne@69
|
30
|
jpayne@69
|
31 Permission to use, copy, modify, and distribute this software and its
|
jpayne@69
|
32 documentation for any purpose and without fee is hereby granted,
|
jpayne@69
|
33 provided that the above copyright notice appear in all copies and that
|
jpayne@69
|
34 both that copyright notice and this permission notice appear in
|
jpayne@69
|
35 supporting documentation, and that the name of Digital not be
|
jpayne@69
|
36 used in advertising or publicity pertaining to distribution of the
|
jpayne@69
|
37 software without specific, written prior permission.
|
jpayne@69
|
38
|
jpayne@69
|
39 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
jpayne@69
|
40 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
jpayne@69
|
41 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
jpayne@69
|
42 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
jpayne@69
|
43 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
jpayne@69
|
44 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
jpayne@69
|
45 SOFTWARE.
|
jpayne@69
|
46
|
jpayne@69
|
47 ******************************************************************/
|
jpayne@69
|
48
|
jpayne@69
|
49 #ifndef _X11_XRESOURCE_H_
|
jpayne@69
|
50 #define _X11_XRESOURCE_H_
|
jpayne@69
|
51
|
jpayne@69
|
52 #ifndef _XP_PRINT_SERVER_
|
jpayne@69
|
53 #include <X11/Xlib.h>
|
jpayne@69
|
54 #endif
|
jpayne@69
|
55
|
jpayne@69
|
56 /****************************************************************
|
jpayne@69
|
57 ****************************************************************
|
jpayne@69
|
58 *** ***
|
jpayne@69
|
59 *** ***
|
jpayne@69
|
60 *** X Resource Manager Intrinsics ***
|
jpayne@69
|
61 *** ***
|
jpayne@69
|
62 *** ***
|
jpayne@69
|
63 ****************************************************************
|
jpayne@69
|
64 ****************************************************************/
|
jpayne@69
|
65
|
jpayne@69
|
66 _XFUNCPROTOBEGIN
|
jpayne@69
|
67
|
jpayne@69
|
68 /****************************************************************
|
jpayne@69
|
69 *
|
jpayne@69
|
70 * Memory Management
|
jpayne@69
|
71 *
|
jpayne@69
|
72 ****************************************************************/
|
jpayne@69
|
73
|
jpayne@69
|
74 extern char *Xpermalloc(
|
jpayne@69
|
75 unsigned int /* size */
|
jpayne@69
|
76 );
|
jpayne@69
|
77
|
jpayne@69
|
78 /****************************************************************
|
jpayne@69
|
79 *
|
jpayne@69
|
80 * Quark Management
|
jpayne@69
|
81 *
|
jpayne@69
|
82 ****************************************************************/
|
jpayne@69
|
83
|
jpayne@69
|
84 typedef int XrmQuark, *XrmQuarkList;
|
jpayne@69
|
85 #define NULLQUARK ((XrmQuark) 0)
|
jpayne@69
|
86
|
jpayne@69
|
87 typedef char *XrmString;
|
jpayne@69
|
88 #define NULLSTRING ((XrmString) 0)
|
jpayne@69
|
89
|
jpayne@69
|
90 /* find quark for string, create new quark if none already exists */
|
jpayne@69
|
91 extern XrmQuark XrmStringToQuark(
|
jpayne@69
|
92 _Xconst char* /* string */
|
jpayne@69
|
93 );
|
jpayne@69
|
94
|
jpayne@69
|
95 extern XrmQuark XrmPermStringToQuark(
|
jpayne@69
|
96 _Xconst char* /* string */
|
jpayne@69
|
97 );
|
jpayne@69
|
98
|
jpayne@69
|
99 /* find string for quark */
|
jpayne@69
|
100 extern XrmString XrmQuarkToString(
|
jpayne@69
|
101 XrmQuark /* quark */
|
jpayne@69
|
102 );
|
jpayne@69
|
103
|
jpayne@69
|
104 extern XrmQuark XrmUniqueQuark(
|
jpayne@69
|
105 void
|
jpayne@69
|
106 );
|
jpayne@69
|
107
|
jpayne@69
|
108 #define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
|
jpayne@69
|
109
|
jpayne@69
|
110
|
jpayne@69
|
111 /****************************************************************
|
jpayne@69
|
112 *
|
jpayne@69
|
113 * Conversion of Strings to Lists
|
jpayne@69
|
114 *
|
jpayne@69
|
115 ****************************************************************/
|
jpayne@69
|
116
|
jpayne@69
|
117 typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
|
jpayne@69
|
118
|
jpayne@69
|
119 extern void XrmStringToQuarkList(
|
jpayne@69
|
120 _Xconst char* /* string */,
|
jpayne@69
|
121 XrmQuarkList /* quarks_return */
|
jpayne@69
|
122 );
|
jpayne@69
|
123
|
jpayne@69
|
124 extern void XrmStringToBindingQuarkList(
|
jpayne@69
|
125 _Xconst char* /* string */,
|
jpayne@69
|
126 XrmBindingList /* bindings_return */,
|
jpayne@69
|
127 XrmQuarkList /* quarks_return */
|
jpayne@69
|
128 );
|
jpayne@69
|
129
|
jpayne@69
|
130 /****************************************************************
|
jpayne@69
|
131 *
|
jpayne@69
|
132 * Name and Class lists.
|
jpayne@69
|
133 *
|
jpayne@69
|
134 ****************************************************************/
|
jpayne@69
|
135
|
jpayne@69
|
136 typedef XrmQuark XrmName;
|
jpayne@69
|
137 typedef XrmQuarkList XrmNameList;
|
jpayne@69
|
138 #define XrmNameToString(name) XrmQuarkToString(name)
|
jpayne@69
|
139 #define XrmStringToName(string) XrmStringToQuark(string)
|
jpayne@69
|
140 #define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
|
jpayne@69
|
141
|
jpayne@69
|
142 typedef XrmQuark XrmClass;
|
jpayne@69
|
143 typedef XrmQuarkList XrmClassList;
|
jpayne@69
|
144 #define XrmClassToString(c_class) XrmQuarkToString(c_class)
|
jpayne@69
|
145 #define XrmStringToClass(c_class) XrmStringToQuark(c_class)
|
jpayne@69
|
146 #define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
|
jpayne@69
|
147
|
jpayne@69
|
148
|
jpayne@69
|
149
|
jpayne@69
|
150 /****************************************************************
|
jpayne@69
|
151 *
|
jpayne@69
|
152 * Resource Representation Types and Values
|
jpayne@69
|
153 *
|
jpayne@69
|
154 ****************************************************************/
|
jpayne@69
|
155
|
jpayne@69
|
156 typedef XrmQuark XrmRepresentation;
|
jpayne@69
|
157 #define XrmStringToRepresentation(string) XrmStringToQuark(string)
|
jpayne@69
|
158 #define XrmRepresentationToString(type) XrmQuarkToString(type)
|
jpayne@69
|
159
|
jpayne@69
|
160 typedef struct {
|
jpayne@69
|
161 unsigned int size;
|
jpayne@69
|
162 XPointer addr;
|
jpayne@69
|
163 } XrmValue, *XrmValuePtr;
|
jpayne@69
|
164
|
jpayne@69
|
165
|
jpayne@69
|
166 /****************************************************************
|
jpayne@69
|
167 *
|
jpayne@69
|
168 * Resource Manager Functions
|
jpayne@69
|
169 *
|
jpayne@69
|
170 ****************************************************************/
|
jpayne@69
|
171
|
jpayne@69
|
172 typedef struct _XrmHashBucketRec *XrmHashBucket;
|
jpayne@69
|
173 typedef XrmHashBucket *XrmHashTable;
|
jpayne@69
|
174 typedef XrmHashTable XrmSearchList[];
|
jpayne@69
|
175 typedef struct _XrmHashBucketRec *XrmDatabase;
|
jpayne@69
|
176
|
jpayne@69
|
177
|
jpayne@69
|
178 extern void XrmDestroyDatabase(
|
jpayne@69
|
179 XrmDatabase /* database */
|
jpayne@69
|
180 );
|
jpayne@69
|
181
|
jpayne@69
|
182 extern void XrmQPutResource(
|
jpayne@69
|
183 XrmDatabase* /* database */,
|
jpayne@69
|
184 XrmBindingList /* bindings */,
|
jpayne@69
|
185 XrmQuarkList /* quarks */,
|
jpayne@69
|
186 XrmRepresentation /* type */,
|
jpayne@69
|
187 XrmValue* /* value */
|
jpayne@69
|
188 );
|
jpayne@69
|
189
|
jpayne@69
|
190 extern void XrmPutResource(
|
jpayne@69
|
191 XrmDatabase* /* database */,
|
jpayne@69
|
192 _Xconst char* /* specifier */,
|
jpayne@69
|
193 _Xconst char* /* type */,
|
jpayne@69
|
194 XrmValue* /* value */
|
jpayne@69
|
195 );
|
jpayne@69
|
196
|
jpayne@69
|
197 extern void XrmQPutStringResource(
|
jpayne@69
|
198 XrmDatabase* /* database */,
|
jpayne@69
|
199 XrmBindingList /* bindings */,
|
jpayne@69
|
200 XrmQuarkList /* quarks */,
|
jpayne@69
|
201 _Xconst char* /* value */
|
jpayne@69
|
202 );
|
jpayne@69
|
203
|
jpayne@69
|
204 extern void XrmPutStringResource(
|
jpayne@69
|
205 XrmDatabase* /* database */,
|
jpayne@69
|
206 _Xconst char* /* specifier */,
|
jpayne@69
|
207 _Xconst char* /* value */
|
jpayne@69
|
208 );
|
jpayne@69
|
209
|
jpayne@69
|
210 extern void XrmPutLineResource(
|
jpayne@69
|
211 XrmDatabase* /* database */,
|
jpayne@69
|
212 _Xconst char* /* line */
|
jpayne@69
|
213 );
|
jpayne@69
|
214
|
jpayne@69
|
215 extern Bool XrmQGetResource(
|
jpayne@69
|
216 XrmDatabase /* database */,
|
jpayne@69
|
217 XrmNameList /* quark_name */,
|
jpayne@69
|
218 XrmClassList /* quark_class */,
|
jpayne@69
|
219 XrmRepresentation* /* quark_type_return */,
|
jpayne@69
|
220 XrmValue* /* value_return */
|
jpayne@69
|
221 );
|
jpayne@69
|
222
|
jpayne@69
|
223 extern Bool XrmGetResource(
|
jpayne@69
|
224 XrmDatabase /* database */,
|
jpayne@69
|
225 _Xconst char* /* str_name */,
|
jpayne@69
|
226 _Xconst char* /* str_class */,
|
jpayne@69
|
227 char** /* str_type_return */,
|
jpayne@69
|
228 XrmValue* /* value_return */
|
jpayne@69
|
229 );
|
jpayne@69
|
230
|
jpayne@69
|
231 extern Bool XrmQGetSearchList(
|
jpayne@69
|
232 XrmDatabase /* database */,
|
jpayne@69
|
233 XrmNameList /* names */,
|
jpayne@69
|
234 XrmClassList /* classes */,
|
jpayne@69
|
235 XrmSearchList /* list_return */,
|
jpayne@69
|
236 int /* list_length */
|
jpayne@69
|
237 );
|
jpayne@69
|
238
|
jpayne@69
|
239 extern Bool XrmQGetSearchResource(
|
jpayne@69
|
240 XrmSearchList /* list */,
|
jpayne@69
|
241 XrmName /* name */,
|
jpayne@69
|
242 XrmClass /* class */,
|
jpayne@69
|
243 XrmRepresentation* /* type_return */,
|
jpayne@69
|
244 XrmValue* /* value_return */
|
jpayne@69
|
245 );
|
jpayne@69
|
246
|
jpayne@69
|
247 /****************************************************************
|
jpayne@69
|
248 *
|
jpayne@69
|
249 * Resource Database Management
|
jpayne@69
|
250 *
|
jpayne@69
|
251 ****************************************************************/
|
jpayne@69
|
252
|
jpayne@69
|
253 #ifndef _XP_PRINT_SERVER_
|
jpayne@69
|
254
|
jpayne@69
|
255 extern void XrmSetDatabase(
|
jpayne@69
|
256 Display* /* display */,
|
jpayne@69
|
257 XrmDatabase /* database */
|
jpayne@69
|
258 );
|
jpayne@69
|
259
|
jpayne@69
|
260 extern XrmDatabase XrmGetDatabase(
|
jpayne@69
|
261 Display* /* display */
|
jpayne@69
|
262 );
|
jpayne@69
|
263
|
jpayne@69
|
264 #endif /* !_XP_PRINT_SERVER_ */
|
jpayne@69
|
265
|
jpayne@69
|
266 extern XrmDatabase XrmGetFileDatabase(
|
jpayne@69
|
267 _Xconst char* /* filename */
|
jpayne@69
|
268 );
|
jpayne@69
|
269
|
jpayne@69
|
270 extern Status XrmCombineFileDatabase(
|
jpayne@69
|
271 _Xconst char* /* filename */,
|
jpayne@69
|
272 XrmDatabase* /* target */,
|
jpayne@69
|
273 Bool /* override */
|
jpayne@69
|
274 );
|
jpayne@69
|
275
|
jpayne@69
|
276 extern XrmDatabase XrmGetStringDatabase(
|
jpayne@69
|
277 _Xconst char* /* data */ /* null terminated string */
|
jpayne@69
|
278 );
|
jpayne@69
|
279
|
jpayne@69
|
280 extern void XrmPutFileDatabase(
|
jpayne@69
|
281 XrmDatabase /* database */,
|
jpayne@69
|
282 _Xconst char* /* filename */
|
jpayne@69
|
283 );
|
jpayne@69
|
284
|
jpayne@69
|
285 extern void XrmMergeDatabases(
|
jpayne@69
|
286 XrmDatabase /* source_db */,
|
jpayne@69
|
287 XrmDatabase* /* target_db */
|
jpayne@69
|
288 );
|
jpayne@69
|
289
|
jpayne@69
|
290 extern void XrmCombineDatabase(
|
jpayne@69
|
291 XrmDatabase /* source_db */,
|
jpayne@69
|
292 XrmDatabase* /* target_db */,
|
jpayne@69
|
293 Bool /* override */
|
jpayne@69
|
294 );
|
jpayne@69
|
295
|
jpayne@69
|
296 #define XrmEnumAllLevels 0
|
jpayne@69
|
297 #define XrmEnumOneLevel 1
|
jpayne@69
|
298
|
jpayne@69
|
299 extern Bool XrmEnumerateDatabase(
|
jpayne@69
|
300 XrmDatabase /* db */,
|
jpayne@69
|
301 XrmNameList /* name_prefix */,
|
jpayne@69
|
302 XrmClassList /* class_prefix */,
|
jpayne@69
|
303 int /* mode */,
|
jpayne@69
|
304 Bool (*)(
|
jpayne@69
|
305 XrmDatabase* /* db */,
|
jpayne@69
|
306 XrmBindingList /* bindings */,
|
jpayne@69
|
307 XrmQuarkList /* quarks */,
|
jpayne@69
|
308 XrmRepresentation* /* type */,
|
jpayne@69
|
309 XrmValue* /* value */,
|
jpayne@69
|
310 XPointer /* closure */
|
jpayne@69
|
311 ) /* proc */,
|
jpayne@69
|
312 XPointer /* closure */
|
jpayne@69
|
313 );
|
jpayne@69
|
314
|
jpayne@69
|
315 extern const char *XrmLocaleOfDatabase(
|
jpayne@69
|
316 XrmDatabase /* database */
|
jpayne@69
|
317 );
|
jpayne@69
|
318
|
jpayne@69
|
319
|
jpayne@69
|
320 /****************************************************************
|
jpayne@69
|
321 *
|
jpayne@69
|
322 * Command line option mapping to resource entries
|
jpayne@69
|
323 *
|
jpayne@69
|
324 ****************************************************************/
|
jpayne@69
|
325
|
jpayne@69
|
326 typedef enum {
|
jpayne@69
|
327 XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
|
jpayne@69
|
328 XrmoptionIsArg, /* Value is the option string itself */
|
jpayne@69
|
329 XrmoptionStickyArg, /* Value is characters immediately following option */
|
jpayne@69
|
330 XrmoptionSepArg, /* Value is next argument in argv */
|
jpayne@69
|
331 XrmoptionResArg, /* Resource and value in next argument in argv */
|
jpayne@69
|
332 XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
|
jpayne@69
|
333 XrmoptionSkipLine, /* Ignore this option and the rest of argv */
|
jpayne@69
|
334 XrmoptionSkipNArgs /* Ignore this option and the next
|
jpayne@69
|
335 OptionDescRes.value arguments in argv */
|
jpayne@69
|
336 } XrmOptionKind;
|
jpayne@69
|
337
|
jpayne@69
|
338 typedef struct {
|
jpayne@69
|
339 char *option; /* Option abbreviation in argv */
|
jpayne@69
|
340 char *specifier; /* Resource specifier */
|
jpayne@69
|
341 XrmOptionKind argKind; /* Which style of option it is */
|
jpayne@69
|
342 XPointer value; /* Value to provide if XrmoptionNoArg */
|
jpayne@69
|
343 } XrmOptionDescRec, *XrmOptionDescList;
|
jpayne@69
|
344
|
jpayne@69
|
345
|
jpayne@69
|
346 extern void XrmParseCommand(
|
jpayne@69
|
347 XrmDatabase* /* database */,
|
jpayne@69
|
348 XrmOptionDescList /* table */,
|
jpayne@69
|
349 int /* table_count */,
|
jpayne@69
|
350 _Xconst char* /* name */,
|
jpayne@69
|
351 int* /* argc_in_out */,
|
jpayne@69
|
352 char** /* argv_in_out */
|
jpayne@69
|
353 );
|
jpayne@69
|
354
|
jpayne@69
|
355 _XFUNCPROTOEND
|
jpayne@69
|
356
|
jpayne@69
|
357 #endif /* _X11_XRESOURCE_H_ */
|
jpayne@69
|
358 /* DON'T ADD STUFF AFTER THIS #endif */
|