|
|
1.1 root 1: /* $Header: Xresource.h,v 1.1 87/09/12 12:27:11 toddb Exp $ */
2: /* $Header: Xresource.h,v 1.1 87/09/12 12:27:11 toddb Exp $ */
3: /*
4: * sccsid: %W% %G%
5: */
6:
7: /*
8: * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
9: *
10: * All Rights Reserved
11: *
12: * Permission to use, copy, modify, and distribute this software and its
13: * documentation for any purpose and without fee is hereby granted,
14: * provided that the above copyright notice appear in all copies and that
15: * both that copyright notice and this permission notice appear in
16: * supporting documentation, and that the name of Digital Equipment
17: * Corporation not be used in advertising or publicity pertaining to
18: * distribution of the software without specific, written prior permission.
19: *
20: *
21: * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
22: * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
23: * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
24: * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
25: * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
26: * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
27: * SOFTWARE.
28: */
29:
30: #ifndef _Xresource_h
31: #define _Xresource_h
32:
33: /****************************************************************
34: ****************************************************************
35: *** ***
36: *** ***
37: *** X Resource Manager Intrinsics ***
38: *** ***
39: *** ***
40: ****************************************************************
41: ****************************************************************/
42:
43:
44:
45: /****************************************************************
46: *
47: * Miscellaneous definitions
48: *
49: ****************************************************************/
50:
51: #include <sys/types.h>
52:
53: #ifndef NULL
54: #define NULL 0
55: #endif
56:
57: /****************************************************************
58: *
59: * Quark Management
60: *
61: ****************************************************************/
62:
63: typedef int XrmQuark, *XrmQuarkList;
64: #define NULLQUARK ((XrmQuark) 0)
65:
66: typedef char *XrmAtom;
67: #define NULLATOM ((XrmAtom) 0)
68:
69: /* find quark for atom, create new quark if none already exists */
70: extern XrmQuark XrmAtomToQuark(); /* name */
71: /* XrmAtom name; */
72:
73: /* find atom for quark */
74: extern XrmAtom XrmQuarkToAtom(); /* quark */
75: /* XrmQuark name; */
76:
77: extern XrmQuark XrmUniqueQuark();
78:
79: #define XrmAtomsEqual(a1, a2) (strcmp(a1, a2) == 0)
80:
81:
82: /****************************************************************
83: *
84: * Quark Lists
85: *
86: ****************************************************************/
87:
88: extern void XrmStringToQuarkList(); /* name, quarks */
89: /* char *name; */
90: /* XrmQuarkList quarks; */
91:
92: extern XrmQuarkList XrmNewQuarkList();
93:
94: extern XrmQuarkList XrmFreeQuarkList(); /* list */
95: /* XrmQuarkList list; */
96:
97: extern int XrmQuarkListLength(); /* list */
98: /* XrmQuarkList list */
99:
100: extern XrmQuarkList XrmCopyQuarkList(); /* list */
101: /* XrmQuarkList list; */
102:
103:
104: /****************************************************************
105: *
106: * Name and Class lists.
107: *
108: ****************************************************************/
109:
110: /* ||| Should be opaque types */
111:
112: typedef XrmQuark XrmName;
113: typedef XrmQuarkList XrmNameList;
114: #define XrmNameToAtom(name) (XrmQuarkToAtom((XrmQuark) (name)))
115: #define XrmAtomToName(name) ((XrmName) XrmAtomToQuark((XrmAtom) (name)))
116: #define XrmNameListLength(names) XrmQuarkListLength((XrmQuarkList)(names))
117: #define XrmStringToNameList(str, name) XrmStringToQuarkList(str, (XrmQuarkList)(name))
118: #define XrmFreeNameList(name) XrmFreeQuarkList((XrmQuarkList)(name))
119:
120: typedef XrmQuark XrmClass;
121: typedef XrmQuarkList XrmClassList;
122: #define XrmClassToAtom(class) (XrmQuarkToAtom((XrmQuark) (class)))
123: #define XrmAtomToClass(class) ((XrmClass) XrmAtomToQuark((XrmAtom) (class)))
124: #define XrmClassListLength(classes) XrmQuarkListLength((XrmQuarkList)(classes))
125: #define XrmStringToClassList(str,class) XrmStringToQuarkList(str, (XrmQuarkList)(class))
126: #define XrmFreeClassList(class) XrmFreeQuarkList((XrmQuarkList)(class))
127:
128:
129:
130: /****************************************************************
131: *
132: * Resource Types and Conversions
133: *
134: ****************************************************************/
135:
136: typedef struct {
137: unsigned int size;
138: caddr_t addr;
139: } XrmValue, *XrmValuePtr;
140:
141: typedef void (*XrmTypeConverter)(); /* from, to */
142: /* XrmValue from; */
143: /* XrmValue *to; */
144:
145: extern void XrmRegisterTypeConverter(); /*fromType, toType, converter*/
146: /* XrmAtom fromType, toType; */
147: /* XrmTypeConverter converter; */
148:
149: extern void XrmConvert(); /* screen, fromType, from, toType, to*/
150: /* Screen *screen; */
151: /* XrmAtom fromType */
152: /* XrmValue from; */
153: /* XrmAtom toType; */
154: /* XrmValue *to; /* RETURN */
155:
156: /****************************************************************
157: *
158: * Resource Manager Functions
159: *
160: ****************************************************************/
161:
162: typedef struct _XrmHashBucketRec *XrmHashBucket;
163: typedef XrmHashBucket *XrmHashTable;
164: typedef XrmHashTable XrmSearchList[];
165:
166: extern void XrmInitialize();
167:
168: extern void XrmPutResource(); /*quarks, type, val*/
169: /* XrmQuarkList quarks; */
170: /* XrmRepresentation type; */
171: /* XrmValue val; */
172:
173: extern void XrmGetResource(); /* screen, rdb, names, classes, destType, val*/
174: /* Screen *screen; */
175: /* XrmResourceDataBase rdb */
176: /* XrmNameList names; */
177: /* XrmClassList classes; */
178: /* XrmRepresentation destType; */
179: /* XrmValue *val; */
180:
181: extern void XrmGetSearchList(); /* rdb, names, classes, searchList */
182: /* XrmResourceDataBase rdb */
183: /* XrmNameList names; */
184: /* XrmClassList classes; */
185: /* SearchList searchList; /* RETURN */
186:
187: extern void XrmGetSearchResource();
188: /* screen, searchList, name, class, type, pVal */
189: /* Screen *screen; */
190: /* SearchList searchList; */
191: /* XrmName name; */
192: /* XrmClass class; */
193: /* XrmAtom type; */
194: /* XrmValue *pVal; /* RETURN */
195:
196: /****************************************************************
197: *
198: * Resource Database Management
199: *
200: ****************************************************************/
201:
202: typedef struct _XrmResourceDataBase *XrmResourceDataBase;
203: typedef int unspecified;
204:
205: extern XrmResourceDataBase XrmGetDataBase(); /* filename*/
206: /* char *filename; /* file name */
207:
208: extern XrmResourceDataBase XrmLoadDataBase(); /* data */
209: /* char *data; /* null terminated string. */
210:
211: extern void XrmPutDataBase(); /* db, magicCookie */
212: /* XrmResourceDataBase db; */
213: /* unspecified magicCookie; /* *FILE, actually */
214:
215: extern void XrmMergeDataBases(); /* new, into */
216: /* XrmResourceDataBase new; */
217: /* XrmResourceDataBase *into; /* RETURN */
218:
219:
220:
221:
222: /****************************************************************
223: *
224: * Command line option mapping to resource entries
225: *
226: ****************************************************************/
227:
228: typedef enum {
229: XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
230: XrmoptionIsArg, /* Value is the option string itself */
231: XrmoptionStickyArg, /* Value is characters immediately following option */
232: XrmoptionSepArg, /* Value is next argument in argv */
233: XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
234: XrmoptionSkipLine /* Ignore this option and the rest of argv */
235: } XrmOptionKind;
236:
237: typedef struct {
238: char *option; /* Option abbreviation in argv */
239: char *resourceName; /* Resource name (sans application name) */
240: XrmOptionKind argKind; /* Which style of option it is */
241: caddr_t value; /* Value to provide if XrmoptionNoArg */
242: } XrmOptionDescRec, *XrmOptionDescList;
243:
244: extern void XrmParseCommand(); /* table, prependName, argc, argv */
245: /* XrmResourceDataBase *rdb;*/
246: /* XrmOptionDescList table; */
247: /* int tableCount; */
248: /* XrmAtom prependName; (NULLATOM means don't prepend) */
249: /* int *argc; */
250: /* char **argv; */
251:
252:
253: /****************************************************************
254: *
255: * Predefined atoms
256: *
257: ****************************************************************/
258:
259: /* Representation types */
260:
261: #define XrmRBoolean "Boolean"
262: #define XrmRColor "Color"
263: #define XrmRCursor "Cursor"
264: #define XrmRDims "Dims"
265: #define XrmRDisplay "Display"
266: #define XrmRFile "File"
267: #define XrmRFloat "Float"
268: #define XrmRFont "Font"
269: #define XrmRFontStruct "FontStruct"
270: #define XrmRGeometry "Geometry"
271: #define XrmRInt "Int"
272: #define XrmRPixel "Pixel"
273: #define XrmRPixmap "Pixmap"
274: #define XrmRPointer "Pointer"
275: #define XrmRString "String"
276: #define XrmRWindow "Window"
277:
278:
279: /* Boolean enumeration constants */
280:
281: #define XrmEoff "off"
282: #define XrmEfalse "false"
283: #define XrmEno "no"
284:
285: #define XrmEon "on"
286: #define XrmEtrue "true"
287: #define XrmEyes "yes"
288:
289:
290:
291:
292: #endif _Xresource_h
293: /* DON'T ADD STUFF AFTER THIS #endif */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.