Xresource.h revision e9fcaa8a
1 2/*********************************************************** 3 4Copyright 1987, 1988, 1998 The Open Group 5 6Permission to use, copy, modify, distribute, and sell this software and its 7documentation for any purpose is hereby granted without fee, provided that 8the above copyright notice appear in all copies and that both that 9copyright notice and this permission notice appear in supporting 10documentation. 11 12The above copyright notice and this permission notice shall be included in 13all copies or substantial portions of the Software. 14 15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 19AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 22Except as contained in this notice, the name of The Open Group shall not be 23used in advertising or otherwise to promote the sale, use or other dealings 24in this Software without prior written authorization from The Open Group. 25 26 27Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. 28 29 All Rights Reserved 30 31Permission to use, copy, modify, and distribute this software and its 32documentation for any purpose and without fee is hereby granted, 33provided that the above copyright notice appear in all copies and that 34both that copyright notice and this permission notice appear in 35supporting documentation, and that the name of Digital not be 36used in advertising or publicity pertaining to distribution of the 37software without specific, written prior permission. 38 39DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 40ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 41DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 42ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 43WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 44ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 45SOFTWARE. 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 74extern char *Xpermalloc( 75 unsigned int /* size */ 76); 77 78/**************************************************************** 79 * 80 * Quark Management 81 * 82 ****************************************************************/ 83 84typedef int XrmQuark, *XrmQuarkList; 85#define NULLQUARK ((XrmQuark) 0) 86 87typedef char *XrmString; 88#define NULLSTRING ((XrmString) 0) 89 90/* find quark for string, create new quark if none already exists */ 91extern XrmQuark XrmStringToQuark( 92 _Xconst char* /* string */ 93); 94 95extern XrmQuark XrmPermStringToQuark( 96 _Xconst char* /* string */ 97); 98 99/* find string for quark */ 100extern XrmString XrmQuarkToString( 101 XrmQuark /* quark */ 102); 103 104extern 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 117typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; 118 119extern void XrmStringToQuarkList( 120 _Xconst char* /* string */, 121 XrmQuarkList /* quarks_return */ 122); 123 124extern 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 136typedef XrmQuark XrmName; 137typedef XrmQuarkList XrmNameList; 138#define XrmNameToString(name) XrmQuarkToString(name) 139#define XrmStringToName(string) XrmStringToQuark(string) 140#define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name) 141 142typedef XrmQuark XrmClass; 143typedef 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 156typedef XrmQuark XrmRepresentation; 157#define XrmStringToRepresentation(string) XrmStringToQuark(string) 158#define XrmRepresentationToString(type) XrmQuarkToString(type) 159 160typedef struct { 161 unsigned int size; 162 XPointer addr; 163} XrmValue, *XrmValuePtr; 164 165 166/**************************************************************** 167 * 168 * Resource Manager Functions 169 * 170 ****************************************************************/ 171 172typedef struct _XrmHashBucketRec *XrmHashBucket; 173typedef XrmHashBucket *XrmHashTable; 174typedef XrmHashTable XrmSearchList[]; 175typedef struct _XrmHashBucketRec *XrmDatabase; 176 177 178extern void XrmDestroyDatabase( 179 XrmDatabase /* database */ 180); 181 182extern void XrmQPutResource( 183 XrmDatabase* /* database */, 184 XrmBindingList /* bindings */, 185 XrmQuarkList /* quarks */, 186 XrmRepresentation /* type */, 187 XrmValue* /* value */ 188); 189 190extern void XrmPutResource( 191 XrmDatabase* /* database */, 192 _Xconst char* /* specifier */, 193 _Xconst char* /* type */, 194 XrmValue* /* value */ 195); 196 197extern void XrmQPutStringResource( 198 XrmDatabase* /* database */, 199 XrmBindingList /* bindings */, 200 XrmQuarkList /* quarks */, 201 _Xconst char* /* value */ 202); 203 204extern void XrmPutStringResource( 205 XrmDatabase* /* database */, 206 _Xconst char* /* specifier */, 207 _Xconst char* /* value */ 208); 209 210extern void XrmPutLineResource( 211 XrmDatabase* /* database */, 212 _Xconst char* /* line */ 213); 214 215extern Bool XrmQGetResource( 216 XrmDatabase /* database */, 217 XrmNameList /* quark_name */, 218 XrmClassList /* quark_class */, 219 XrmRepresentation* /* quark_type_return */, 220 XrmValue* /* value_return */ 221); 222 223extern 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 231extern Bool XrmQGetSearchList( 232 XrmDatabase /* database */, 233 XrmNameList /* names */, 234 XrmClassList /* classes */, 235 XrmSearchList /* list_return */, 236 int /* list_length */ 237); 238 239extern 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 255extern void XrmSetDatabase( 256 Display* /* display */, 257 XrmDatabase /* database */ 258); 259 260extern XrmDatabase XrmGetDatabase( 261 Display* /* display */ 262); 263 264#endif /* !_XP_PRINT_SERVER_ */ 265 266extern XrmDatabase XrmGetFileDatabase( 267 _Xconst char* /* filename */ 268); 269 270extern Status XrmCombineFileDatabase( 271 _Xconst char* /* filename */, 272 XrmDatabase* /* target */, 273 Bool /* override */ 274); 275 276extern XrmDatabase XrmGetStringDatabase( 277 _Xconst char* /* data */ /* null terminated string */ 278); 279 280extern void XrmPutFileDatabase( 281 XrmDatabase /* database */, 282 _Xconst char* /* filename */ 283); 284 285extern void XrmMergeDatabases( 286 XrmDatabase /* source_db */, 287 XrmDatabase* /* target_db */ 288); 289 290extern void XrmCombineDatabase( 291 XrmDatabase /* source_db */, 292 XrmDatabase* /* target_db */, 293 Bool /* override */ 294); 295 296#define XrmEnumAllLevels 0 297#define XrmEnumOneLevel 1 298 299extern 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 315extern const char *XrmLocaleOfDatabase( 316 XrmDatabase /* database */ 317); 318 319 320/**************************************************************** 321 * 322 * Command line option mapping to resource entries 323 * 324 ****************************************************************/ 325 326typedef 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 338typedef 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 346extern 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