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