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