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