/* $XConsortium: ResourceI.h,v 1.6 89/11/14 14:23:06 swick Exp $ */
/* $oHeader: ResourceI.h,v 1.2 88/08/18 15:56:00 asente Exp $ */
/***********************************************************
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
and the Massachusetts Institute of Technology, Cambridge, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the names of Digital or MIT not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

/****************************************************************
 *
 * Resources
 *
 ****************************************************************/

#define StringToQuark(string) XrmStringToQuark(string)
#define StringToName(string) XrmStringToName(string)
#define StringToClass(string) XrmStringToClass(string)

typedef struct _XtTypedArg* XtTypedArgList;

extern void XtGetResources(
#if NeedFunctionPrototypes
    Widget       /* widget */,
    ArgList      /* args */,
    int          /* num_args */
#endif
);

extern void _XtResourceDependencies(
#if NeedFunctionPrototypes
    WidgetClass  /* wc */
#endif
);

extern void _XtConstraintResDependencies(
#if NeedFunctionPrototypes
    ConstraintWidgetClass  /* wc */
#endif
);

extern XtCacheRef* _XtGetResources(
#if NeedFunctionPrototypes
    Widget	    /* w */,
    ArgList	    /* args */,
    Cardinal	    /* num_args */,
    XtTypedArgList  /* typed_args */,
    Cardinal*	    /* num_typed_args */
#endif
);

#ifdef PRECOMPILED_RL

/*
 * Define additional representation types to be used w/ precompiled
 * resource lists.
 */
#define XtRCallProcIndex	"CallProcIndex"
#define XtRStringOffset		"StringOffset"

/*
 * Extension record to support precompiled resource lists   
 */ 
typedef struct {
    XrmQuark quarkedResource;
    int	     resourceIndex;
} TopResourceRec, *TopResourcePtr;

typedef struct {
    XtPointer next_extension;	/* 1st 4 mandated for all extension records */
    XrmQuark record_type;	/* _DXtResourceListExtensionType */
    long version;		/* must be _XtResourceListExtensionVersion */
    Cardinal record_size;	/* sizeof(_XtResourceListExtensionRec) */
    XtResourceList precompiled_rl;
    XtResourceList precompiled_constraint_rl;
    XtProc*  rl_proc_list;
    TopResourcePtr top_resources;
} _XtResourceListExtensionRec, *_XtResourceListExtension;

#define _XtResourceListExtensionVersion 1L
#define _XtResourceListExtensionType "_DXtResourceListExtensionType"

extern XrmQuark _XtRLEType;

#define _XtGetResourceListExtension(wc, rle)\
    for (rle = wc->core_class.extension; rle; rle = rle->next_extension)\
        if (rle->record_type == _XtRLEType)\
	    break;	

#endif
