jpayne@69: jpayne@69: /*********************************************************** jpayne@69: jpayne@69: Copyright 1987, 1988, 1998 The Open Group jpayne@69: jpayne@69: Permission to use, copy, modify, distribute, and sell this software and its jpayne@69: documentation for any purpose is hereby granted without fee, provided that jpayne@69: the above copyright notice appear in all copies and that both that jpayne@69: copyright notice and this permission notice appear in supporting jpayne@69: documentation. jpayne@69: jpayne@69: The above copyright notice and this permission notice shall be included in jpayne@69: all copies or substantial portions of the Software. jpayne@69: jpayne@69: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR jpayne@69: IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, jpayne@69: FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE jpayne@69: OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN jpayne@69: AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN jpayne@69: CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. jpayne@69: jpayne@69: Except as contained in this notice, the name of The Open Group shall not be jpayne@69: used in advertising or otherwise to promote the sale, use or other dealings jpayne@69: in this Software without prior written authorization from The Open Group. jpayne@69: jpayne@69: jpayne@69: Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. jpayne@69: jpayne@69: All Rights Reserved jpayne@69: jpayne@69: Permission to use, copy, modify, and distribute this software and its jpayne@69: documentation for any purpose and without fee is hereby granted, jpayne@69: provided that the above copyright notice appear in all copies and that jpayne@69: both that copyright notice and this permission notice appear in jpayne@69: supporting documentation, and that the name of Digital not be jpayne@69: used in advertising or publicity pertaining to distribution of the jpayne@69: software without specific, written prior permission. jpayne@69: jpayne@69: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING jpayne@69: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL jpayne@69: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR jpayne@69: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, jpayne@69: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, jpayne@69: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS jpayne@69: SOFTWARE. jpayne@69: jpayne@69: ******************************************************************/ jpayne@69: jpayne@69: #ifndef _X11_XRESOURCE_H_ jpayne@69: #define _X11_XRESOURCE_H_ jpayne@69: jpayne@69: #ifndef _XP_PRINT_SERVER_ jpayne@69: #include jpayne@69: #endif jpayne@69: jpayne@69: /**************************************************************** jpayne@69: **************************************************************** jpayne@69: *** *** jpayne@69: *** *** jpayne@69: *** X Resource Manager Intrinsics *** jpayne@69: *** *** jpayne@69: *** *** jpayne@69: **************************************************************** jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: _XFUNCPROTOBEGIN jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Memory Management jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: extern char *Xpermalloc( jpayne@69: unsigned int /* size */ jpayne@69: ); jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Quark Management jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: typedef int XrmQuark, *XrmQuarkList; jpayne@69: #define NULLQUARK ((XrmQuark) 0) jpayne@69: jpayne@69: typedef char *XrmString; jpayne@69: #define NULLSTRING ((XrmString) 0) jpayne@69: jpayne@69: /* find quark for string, create new quark if none already exists */ jpayne@69: extern XrmQuark XrmStringToQuark( jpayne@69: _Xconst char* /* string */ jpayne@69: ); jpayne@69: jpayne@69: extern XrmQuark XrmPermStringToQuark( jpayne@69: _Xconst char* /* string */ jpayne@69: ); jpayne@69: jpayne@69: /* find string for quark */ jpayne@69: extern XrmString XrmQuarkToString( jpayne@69: XrmQuark /* quark */ jpayne@69: ); jpayne@69: jpayne@69: extern XrmQuark XrmUniqueQuark( jpayne@69: void jpayne@69: ); jpayne@69: jpayne@69: #define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0) jpayne@69: jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Conversion of Strings to Lists jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; jpayne@69: jpayne@69: extern void XrmStringToQuarkList( jpayne@69: _Xconst char* /* string */, jpayne@69: XrmQuarkList /* quarks_return */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmStringToBindingQuarkList( jpayne@69: _Xconst char* /* string */, jpayne@69: XrmBindingList /* bindings_return */, jpayne@69: XrmQuarkList /* quarks_return */ jpayne@69: ); jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Name and Class lists. jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: typedef XrmQuark XrmName; jpayne@69: typedef XrmQuarkList XrmNameList; jpayne@69: #define XrmNameToString(name) XrmQuarkToString(name) jpayne@69: #define XrmStringToName(string) XrmStringToQuark(string) jpayne@69: #define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name) jpayne@69: jpayne@69: typedef XrmQuark XrmClass; jpayne@69: typedef XrmQuarkList XrmClassList; jpayne@69: #define XrmClassToString(c_class) XrmQuarkToString(c_class) jpayne@69: #define XrmStringToClass(c_class) XrmStringToQuark(c_class) jpayne@69: #define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class) jpayne@69: jpayne@69: jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Resource Representation Types and Values jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: typedef XrmQuark XrmRepresentation; jpayne@69: #define XrmStringToRepresentation(string) XrmStringToQuark(string) jpayne@69: #define XrmRepresentationToString(type) XrmQuarkToString(type) jpayne@69: jpayne@69: typedef struct { jpayne@69: unsigned int size; jpayne@69: XPointer addr; jpayne@69: } XrmValue, *XrmValuePtr; jpayne@69: jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Resource Manager Functions jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: typedef struct _XrmHashBucketRec *XrmHashBucket; jpayne@69: typedef XrmHashBucket *XrmHashTable; jpayne@69: typedef XrmHashTable XrmSearchList[]; jpayne@69: typedef struct _XrmHashBucketRec *XrmDatabase; jpayne@69: jpayne@69: jpayne@69: extern void XrmDestroyDatabase( jpayne@69: XrmDatabase /* database */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmQPutResource( jpayne@69: XrmDatabase* /* database */, jpayne@69: XrmBindingList /* bindings */, jpayne@69: XrmQuarkList /* quarks */, jpayne@69: XrmRepresentation /* type */, jpayne@69: XrmValue* /* value */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmPutResource( jpayne@69: XrmDatabase* /* database */, jpayne@69: _Xconst char* /* specifier */, jpayne@69: _Xconst char* /* type */, jpayne@69: XrmValue* /* value */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmQPutStringResource( jpayne@69: XrmDatabase* /* database */, jpayne@69: XrmBindingList /* bindings */, jpayne@69: XrmQuarkList /* quarks */, jpayne@69: _Xconst char* /* value */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmPutStringResource( jpayne@69: XrmDatabase* /* database */, jpayne@69: _Xconst char* /* specifier */, jpayne@69: _Xconst char* /* value */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmPutLineResource( jpayne@69: XrmDatabase* /* database */, jpayne@69: _Xconst char* /* line */ jpayne@69: ); jpayne@69: jpayne@69: extern Bool XrmQGetResource( jpayne@69: XrmDatabase /* database */, jpayne@69: XrmNameList /* quark_name */, jpayne@69: XrmClassList /* quark_class */, jpayne@69: XrmRepresentation* /* quark_type_return */, jpayne@69: XrmValue* /* value_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Bool XrmGetResource( jpayne@69: XrmDatabase /* database */, jpayne@69: _Xconst char* /* str_name */, jpayne@69: _Xconst char* /* str_class */, jpayne@69: char** /* str_type_return */, jpayne@69: XrmValue* /* value_return */ jpayne@69: ); jpayne@69: jpayne@69: extern Bool XrmQGetSearchList( jpayne@69: XrmDatabase /* database */, jpayne@69: XrmNameList /* names */, jpayne@69: XrmClassList /* classes */, jpayne@69: XrmSearchList /* list_return */, jpayne@69: int /* list_length */ jpayne@69: ); jpayne@69: jpayne@69: extern Bool XrmQGetSearchResource( jpayne@69: XrmSearchList /* list */, jpayne@69: XrmName /* name */, jpayne@69: XrmClass /* class */, jpayne@69: XrmRepresentation* /* type_return */, jpayne@69: XrmValue* /* value_return */ jpayne@69: ); jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Resource Database Management jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: #ifndef _XP_PRINT_SERVER_ jpayne@69: jpayne@69: extern void XrmSetDatabase( jpayne@69: Display* /* display */, jpayne@69: XrmDatabase /* database */ jpayne@69: ); jpayne@69: jpayne@69: extern XrmDatabase XrmGetDatabase( jpayne@69: Display* /* display */ jpayne@69: ); jpayne@69: jpayne@69: #endif /* !_XP_PRINT_SERVER_ */ jpayne@69: jpayne@69: extern XrmDatabase XrmGetFileDatabase( jpayne@69: _Xconst char* /* filename */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XrmCombineFileDatabase( jpayne@69: _Xconst char* /* filename */, jpayne@69: XrmDatabase* /* target */, jpayne@69: Bool /* override */ jpayne@69: ); jpayne@69: jpayne@69: extern XrmDatabase XrmGetStringDatabase( jpayne@69: _Xconst char* /* data */ /* null terminated string */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmPutFileDatabase( jpayne@69: XrmDatabase /* database */, jpayne@69: _Xconst char* /* filename */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmMergeDatabases( jpayne@69: XrmDatabase /* source_db */, jpayne@69: XrmDatabase* /* target_db */ jpayne@69: ); jpayne@69: jpayne@69: extern void XrmCombineDatabase( jpayne@69: XrmDatabase /* source_db */, jpayne@69: XrmDatabase* /* target_db */, jpayne@69: Bool /* override */ jpayne@69: ); jpayne@69: jpayne@69: #define XrmEnumAllLevels 0 jpayne@69: #define XrmEnumOneLevel 1 jpayne@69: jpayne@69: extern Bool XrmEnumerateDatabase( jpayne@69: XrmDatabase /* db */, jpayne@69: XrmNameList /* name_prefix */, jpayne@69: XrmClassList /* class_prefix */, jpayne@69: int /* mode */, jpayne@69: Bool (*)( jpayne@69: XrmDatabase* /* db */, jpayne@69: XrmBindingList /* bindings */, jpayne@69: XrmQuarkList /* quarks */, jpayne@69: XrmRepresentation* /* type */, jpayne@69: XrmValue* /* value */, jpayne@69: XPointer /* closure */ jpayne@69: ) /* proc */, jpayne@69: XPointer /* closure */ jpayne@69: ); jpayne@69: jpayne@69: extern const char *XrmLocaleOfDatabase( jpayne@69: XrmDatabase /* database */ jpayne@69: ); jpayne@69: jpayne@69: jpayne@69: /**************************************************************** jpayne@69: * jpayne@69: * Command line option mapping to resource entries jpayne@69: * jpayne@69: ****************************************************************/ jpayne@69: jpayne@69: typedef enum { jpayne@69: XrmoptionNoArg, /* Value is specified in OptionDescRec.value */ jpayne@69: XrmoptionIsArg, /* Value is the option string itself */ jpayne@69: XrmoptionStickyArg, /* Value is characters immediately following option */ jpayne@69: XrmoptionSepArg, /* Value is next argument in argv */ jpayne@69: XrmoptionResArg, /* Resource and value in next argument in argv */ jpayne@69: XrmoptionSkipArg, /* Ignore this option and the next argument in argv */ jpayne@69: XrmoptionSkipLine, /* Ignore this option and the rest of argv */ jpayne@69: XrmoptionSkipNArgs /* Ignore this option and the next jpayne@69: OptionDescRes.value arguments in argv */ jpayne@69: } XrmOptionKind; jpayne@69: jpayne@69: typedef struct { jpayne@69: char *option; /* Option abbreviation in argv */ jpayne@69: char *specifier; /* Resource specifier */ jpayne@69: XrmOptionKind argKind; /* Which style of option it is */ jpayne@69: XPointer value; /* Value to provide if XrmoptionNoArg */ jpayne@69: } XrmOptionDescRec, *XrmOptionDescList; jpayne@69: jpayne@69: jpayne@69: extern void XrmParseCommand( jpayne@69: XrmDatabase* /* database */, jpayne@69: XrmOptionDescList /* table */, jpayne@69: int /* table_count */, jpayne@69: _Xconst char* /* name */, jpayne@69: int* /* argc_in_out */, jpayne@69: char** /* argv_in_out */ jpayne@69: ); jpayne@69: jpayne@69: _XFUNCPROTOEND jpayne@69: jpayne@69: #endif /* _X11_XRESOURCE_H_ */ jpayne@69: /* DON'T ADD STUFF AFTER THIS #endif */