Blame lib/Mrm/Mrm.h

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
/*   $TOG: Mrm.h /main/23 1999/05/25 16:55:58 mgreess $ */
Packit b099d7
/*                                                                      *
Packit b099d7
 * (c) Copyright 1996 Hewlett-Packard Company                           *
Packit b099d7
 * (c) Copyright 1996 International Business Machines Corp.             *
Packit b099d7
 * (c) Copyright 1996 Sun Microsystems, Inc.                            *
Packit b099d7
 * (c) Copyright 1996 Novell, Inc.                                      *
Packit b099d7
 * (c) Copyright 1989, 1990, 1996 Digital Equipment Corporation.	*
Packit b099d7
 * (c) Copyright 1996 FUJITSU LIMITED.					*
Packit b099d7
 * (c) Copyright 1996 Hitachi.						*
Packit b099d7
 */
Packit b099d7
#ifndef Mrm_H
Packit b099d7
#define Mrm_H
Packit b099d7
Packit b099d7
#define	urm_h	1
Packit b099d7
#include <Mrm/MrmPublic.h>
Packit b099d7
#include <Xm/Xm.h>			/* XmString definition and _NO_PROTO */
Packit b099d7
#include <Xm/XmosP.h>
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * This is the internal file used throughout URM for literal and
Packit b099d7
 * struct definitions. It defines everything not found in public
Packit b099d7
 * files.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#ifndef MIN
Packit b099d7
#define MIN(x,y)	((x) < (y) ? (x) : (y))
Packit b099d7
#endif
Packit b099d7
#ifndef MAX
Packit b099d7
#define MAX(x,y)	((x) > (y) ? (x) : (y))
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#ifndef XmConst
Packit b099d7
#if defined(__STDC__) || !defined( NO_CONST )
Packit b099d7
#define XmConst const
Packit b099d7
#else
Packit b099d7
#define XmConst
Packit b099d7
#endif /* __STDC__ */
Packit b099d7
#endif /* XmConst */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The following macro is used to round the size of memory allocation requests
Packit b099d7
 * up to eight bytes. This is done to help satisfy alignment
Packit b099d7
 * request for MIPS, CRAY, Alpah, HP9000 (for doubles) and similar machines.  
Packit b099d7
 */
Packit b099d7
#define _sl sizeof(long)
Packit b099d7
#define _slm (sizeof(long) - 1)
Packit b099d7
#define _FULLWORD(exp) (_sl * (((exp) + _slm) / _sl))	/* (4*(((exp)+3)/4)) */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Swap the byte order of 4- and 2- byte quantities.
Packit b099d7
 *  "tp +=" lines are needed on Cray (CARD32 is actually 64 bits).
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define swap4bytes(l) {\
Packit b099d7
        CARD32 t = (CARD32) l;\
Packit b099d7
        char n, *tp = (char *) &t;\
Packit b099d7
	tp += sizeof(CARD32) - 4;\
Packit b099d7
	n = tp[0]; tp[0] = tp[3]; tp[3] = n;\
Packit b099d7
	n = tp[1]; tp[1] = tp[2]; tp[2] = n;\
Packit b099d7
        l = t;\
Packit b099d7
}
Packit b099d7
Packit b099d7
#define swap2bytes(s) {\
Packit b099d7
        CARD16 t = (CARD16) s;\
Packit b099d7
        char n, *tp = (char *) &t;\
Packit b099d7
	tp += sizeof(CARD16) - 2;\
Packit b099d7
	n = tp[0]; tp[0] = tp[1]; tp[1] = n;\
Packit b099d7
        s = t;\
Packit b099d7
}
Packit b099d7
Packit b099d7
#define swapbytes(v) {\
Packit b099d7
        if (sizeof(v) == 2) \
Packit b099d7
	  swap2bytes(v) \
Packit b099d7
	else if (sizeof(v) == 4) \
Packit b099d7
	  swap4bytes(v); \
Packit b099d7
}
Packit b099d7
Packit b099d7
#define swapdouble(d) {\
Packit b099d7
        double dt = (double) d;\
Packit b099d7
        unsigned m, *dp = (unsigned *) &dt;\
Packit b099d7
	swap4bytes( dp[0] );\
Packit b099d7
	swap4bytes( dp[1] );\
Packit b099d7
        m = dp[0]; dp[0] = dp[1]; dp[1] = m;\
Packit b099d7
	d = dt;\
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/* 
Packit b099d7
 * When a resource record is referenced but not yet fetched, logical or
Packit b099d7
 * the convert type with this value as a flag.
Packit b099d7
 */
Packit b099d7
#define MrmResourceUnswapped (unsigned char)128
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * URM-wide constants
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define	URMversion		"URM 1.2"
Packit b099d7
#define URM1_1version		"URM 1.1"
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The indexes of the self-encoding compression tables in a UID file. They
Packit b099d7
 * intentionally include characters which are illegal in UIL identifiers.
Packit b099d7
 */
Packit b099d7
#define	UilMrmClassTableIndex		">ClassTable"
Packit b099d7
#define UilMrmResourceTableIndex	">ResourceTable"
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Resource classes and types
Packit b099d7
 */
Packit b099d7
#define	URMgNul		0
Packit b099d7
#define	URMgWidget	1
Packit b099d7
#define	URMgLiteral	2		/* types in MrmRtype... */
Packit b099d7
#define	URMgResourceSet	3		/* type in URMrs... */
Packit b099d7
/*			4		unused */
Packit b099d7
#define	URMgMessage	5
Packit b099d7
Packit b099d7
#define URMgMin		1		/* lowest legal group value */
Packit b099d7
#define	URMgMax		5		/* highest legal group value */
Packit b099d7
#define	URMgVecSize	URMgMax+1	/* To size any vectors */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The null resource type
Packit b099d7
 */
Packit b099d7
#define	URMtNul		0
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Access types
Packit b099d7
 */
Packit b099d7
#define	URMaPublic	1
Packit b099d7
#define	URMaPrivate	2
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Index types. Immediate is included for the convenience of the UIL compiler
Packit b099d7
 */
Packit b099d7
#define	URMrIndex	1
Packit b099d7
#define	URMrRID		2
Packit b099d7
#define	URMrImmediate	3
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Maximum number of characters in an index
Packit b099d7
 */
Packit b099d7
#define	URMMaxIndexLen	31
Packit b099d7
#define	URMMaxIndexLen1	(URMMaxIndexLen + 1)	/* to size vectors */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * File open access types
Packit b099d7
 */
Packit b099d7
#define	URMReadAccess	1
Packit b099d7
#define	URMWriteAccess	2
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Standard date string length
Packit b099d7
 */
Packit b099d7
#define	URMhsDate		29		/* any date string */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Types of resource sets.
Packit b099d7
 */
Packit b099d7
#define	URMrsInterfaceModule	1	/* Interface module */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Values for the manage flag in memory only -- the manage field in RGMChildDesc
Packit b099d7
 * is just a Boolean.
Packit b099d7
 */
Packit b099d7
typedef enum {
Packit b099d7
MrmManageUnmanage,
Packit b099d7
MrmManageManage,
Packit b099d7
MrmManageDefault
Packit b099d7
} MrmManageFlag;
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Urm typedefs
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The maximum number of arguments allowed in an arglist or children in
Packit b099d7
 * a child list. A number intended to catch gross errors.
Packit b099d7
 */
Packit b099d7
#define	RGMListSizeMax		32767
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * URM pointer list
Packit b099d7
 *
Packit b099d7
 * The following structure is inspired by resource contexts, but is used
Packit b099d7
 * to store lists of pointers. Its supporting routines automatically manage
Packit b099d7
 * space in the same the context routines do. Since this is used only
Packit b099d7
 * internally, no validation is provided.
Packit b099d7
 */
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
	int		num_slots ;	/* number of available pointer slots */
Packit b099d7
	int		num_ptrs ;	/* number of slots actually used */
Packit b099d7
	XtPointer	*ptr_vec ;	/* pointer slot vector */
Packit b099d7
} URMPointerList, *URMPointerListPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Accessors for the list or a pointer in the list
Packit b099d7
 */
Packit b099d7
#define	UrmPlistPtrList(list) ((list)->ptr_vec)
Packit b099d7
#define	UrmPlistNum(list) ((list)->num_ptrs)
Packit b099d7
#define	UrmPlistPtrN(list,ndx) ((list)->ptr_vec[ndx])
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * URM Resource context
Packit b099d7
 *
Packit b099d7
 * The following context structure is provided by URM to cover all memory
Packit b099d7
 * management of in-memory resources. This mechanism provides:
Packit b099d7
 *	o improved memory management efficiency through buffer re-use
Packit b099d7
 *	o collection of resource attributes in one place
Packit b099d7
 *	o support for non-standard allocation routines
Packit b099d7
 */
Packit b099d7
#define	URMResourceContextValid	232570204
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	validation ;	/* validation code =
Packit b099d7
					   URMResourceContextValid */
Packit b099d7
	char		*data_buffer ;	/* pointer to data buffer in memory */
Packit b099d7
	MrmSize		buffer_size ;	/* number of bytes in buffer */
Packit b099d7
	MrmSize		resource_size ;	/* number of bytes used by resource */
Packit b099d7
	MrmGroup	group ;		/* resource group */
Packit b099d7
	MrmType		type ;		/* resource type */
Packit b099d7
	MrmCode		access ;	/* URMaPrivate or URMaPublic */
Packit b099d7
	MrmCode		lock ;		/* resource locking code */
Packit b099d7
	char		*((*alloc_func) ()) ;	/* memory allocation func */
Packit b099d7
	void		(*free_func) () ;	/* deallocation func */
Packit b099d7
	MrmFlag		byte_swapped ;	/* resource is byte_swapped */
Packit b099d7
} URMResourceContext, *URMResourceContextPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Validation macro, returns TRUE/FALSE
Packit b099d7
 */
Packit b099d7
#define	UrmRCValid(context) ((context)->validation==URMResourceContextValid)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The following are accessor macros for a resource context
Packit b099d7
 */
Packit b099d7
#define	UrmRCBuffer(context)	((context)->data_buffer)
Packit b099d7
#define UrmRCBufSize(context)	((context)->buffer_size)
Packit b099d7
#define UrmRCSize(context)	((context)->resource_size)
Packit b099d7
#define UrmRCGroup(context)	((context)->group)
Packit b099d7
#define UrmRCType(context)	((context)->type)
Packit b099d7
#define UrmRCAccess(context)	((context)->access)
Packit b099d7
#define UrmRCLock(context)	((context)->lock)
Packit b099d7
#define UrmRCByteSwap(context)	((context)->byte_swapped)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The following are modifiers for a resource context
Packit b099d7
 */
Packit b099d7
#define	UrmRCSetBuffer(context,bufadr)    {(context)->data_buffer=(bufadr);}
Packit b099d7
#define	UrmRCSetSize(context,sizval)      {(context)->resource_size=(sizval);}
Packit b099d7
#define UrmRCSetGroup(context,grpval)     {(context)->group=(grpval);}
Packit b099d7
#define UrmRCSetType(context,typval)      {(context)->type=(typval);}
Packit b099d7
#define UrmRCSetAccess(context,accval) 	  {(context)->access=(accval);}
Packit b099d7
#define UrmRCSetLock(context,lckval)	  {(context)->lock=(lckval);}
Packit b099d7
#define UrmRCSetByteSwap(context,swapval) {(context)->byte_swapped=(swapval);}
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Error reporting states
Packit b099d7
 */
Packit b099d7
#define	URMRCErrorDefault	1	/* default - report on line */
Packit b099d7
#define	URMRCErrorSave		2	/* save error, don't report */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Error reporting destinations
Packit b099d7
 */
Packit b099d7
#define	URMErrOutMemory	1	/* Save error messages in memory, no print */
Packit b099d7
#define	URMErrOutStdout	2	/* print error messages to stdout */
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * IDB definitions in common use. The principal one is IDBFile; others
Packit b099d7
 * are included to make that definition valid.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Record type definitions - IDBrt...
Packit b099d7
 */
Packit b099d7
#define	IDBrtMin		1
Packit b099d7
#define	IDBrtHeader		1
Packit b099d7
#define	IDBrtIndexLeaf		2
Packit b099d7
#define	IDBrtIndexNode		3
Packit b099d7
#define	IDBrtRIDMap		4
Packit b099d7
#define	IDBrtData		5
Packit b099d7
#define	IDBrtMax		5
Packit b099d7
#define	IDBrtVecSize		6
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Sizes of fixed-length strings in the file header. Definitions are
Packit b099d7
 * provided for both the number of characters in the string and the
Packit b099d7
 * constant which gives the string length including the terminating nul.
Packit b099d7
 * IDBhs...
Packit b099d7
 */
Packit b099d7
#define	IDBhsVersion		9		/* Any version string */
Packit b099d7
#define	IDBhsVersion1		(IDBhsVersion + 1)
Packit b099d7
#define	IDBhsCreator		29		/* Creator id */
Packit b099d7
#define	IDBhsCreator1		(IDBhsCreator + 1)
Packit b099d7
#define	IDBhsDate		URMhsDate	/* Any date string */
Packit b099d7
#define	IDBhsDate1		(IDBhsDate + 1)
Packit b099d7
#define	IDBhsModule		29		/* Module id */
Packit b099d7
#define	IDBhsModule1		(IDBhsModule + 1)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Record number. 65k should be enough...
Packit b099d7
 */
Packit b099d7
typedef short int       IDBRecordNumber ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resource ID consists of the resource map index and the ID index
Packit b099d7
 * in the given resource map.
Packit b099d7
 */
Packit b099d7
typedef short int       IDBResourceIndex ;
Packit b099d7
typedef union {
Packit b099d7
	unsigned		external_id ;	/* Looks like a fullword */
Packit b099d7
        struct {
Packit b099d7
	    IDBRecordNumber	map_rec B32 ;    /* resource map record */
Packit b099d7
	    IDBResourceIndex	res_index B32 ;  /* resource index into map */
Packit b099d7
        }       internal_id ;     		/* 2 fields internally */
Packit b099d7
} IDBridDesc ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resource ID passed by value in a fullword.
Packit b099d7
 */
Packit b099d7
typedef unsigned        IDBResource ;		/* a declaration for RIDs
Packit b099d7
						   passed by value */
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Class descriptor.
Packit b099d7
 *
Packit b099d7
 * This descriptor contains the information URM requires about a toolkit
Packit b099d7
 * class.
Packit b099d7
 */
Packit b099d7
#define	URMWCIClassDescValid	39963371
Packit b099d7
#define	UrmWCIClassDescValid(classdesc)	\
Packit b099d7
    ((classdesc)->validation==URMWCIClassDescValid)
Packit b099d7
Packit b099d7
typedef struct _WCIClassDesc {
Packit b099d7
	unsigned	validation ;	/* URMWCIClassDescValid */
Packit b099d7
	struct _WCIClassDesc *next_desc ;
Packit b099d7
					/* next descriptor in chain */
Packit b099d7
	String		creator_name ;	/* create routine name. This is also
Packit b099d7
					   the accessor key for non-toolkit
Packit b099d7
					   widget classes. */
Packit b099d7
	Widget		(*creator) () ;	/* low-level create routine. This is
Packit b099d7
					   also the class identifier (name)
Packit b099d7
					   used to match user classes. */
Packit b099d7
	WidgetClass	class_record ;	/* Pointer to toolkit class record */
Packit b099d7
	void		(*cleanup) () ;
Packit b099d7
					/* low-level destructor routine.
Packit b099d7
					   Used to clean up after creation
Packit b099d7
					   routines that leave dangling
Packit b099d7
					   memory (i.e. XmRendition,
Packit b099d7
					   XmRenderTable) */
Packit b099d7
} WCIClassDesc, *WCIClassDescPtr ;
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Table used to uncompress compression codes in a self-encoding UID file.
Packit b099d7
 * Table entries can be overlaid with function pointers for tables which
Packit b099d7
 * encode convenience functions.
Packit b099d7
 *
Packit b099d7
 * The table is accessed by the compression code. Code 0 is unused by
Packit b099d7
 * convention, and code 1 is unused because it is the marker for an
Packit b099d7
 * unknown (user defined) entry, which is specified by an explicit string.
Packit b099d7
 * Thus the valid entries begin at 2 (UilMrmMinValidCode). Any code
Packit b099d7
 * < UilMrmMinValidCode or > num_entries is invalid.
Packit b099d7
 * 
Packit b099d7
 * When stored in a UID file, a table is a block of memory with the
Packit b099d7
 * following properties:
Packit b099d7
 *	o The table is allocated with enough space for all the decompression
Packit b099d7
 *	  pointers required.
Packit b099d7
 *	o The table is followed by the strings in the table. They are allocated
Packit b099d7
 *	  in a heap built from contiguous memory following table itself.
Packit b099d7
 */
Packit b099d7
#define UidCompressionTableValid	317938336
Packit b099d7
#define	UilMrmUnknownCode		1
Packit b099d7
#define UilMrmMinValidCode		2
Packit b099d7
#define	UilMrmReservedCodeCount		2
Packit b099d7
Packit b099d7
typedef union
Packit b099d7
    {
Packit b099d7
    MrmOffset		stoffset;		/* offset of string in
Packit b099d7
						   heap (in file) */
Packit b099d7
    char		*cstring;		/* compressed string as
Packit b099d7
						 a memory pointer */
Packit b099d7
    WCIClassDescPtr	cldesc;			/* class descriptor for
Packit b099d7
						   class table */
Packit b099d7
    } UidCTableEntry;
Packit b099d7
Packit b099d7
typedef struct
Packit b099d7
    {
Packit b099d7
    unsigned		validation;		/* validation code =
Packit b099d7
						   UIDCompressionTableValid */
Packit b099d7
    MrmCount		num_entries;		/* number of table entries */
Packit b099d7
    UidCTableEntry	entry[1];		/* first entry */
Packit b099d7
    } UidCompressionTable, *UidCompressionTablePtr;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Hash table entry
Packit b099d7
 */
Packit b099d7
#define k_hash_table_size	(127)
Packit b099d7
Packit b099d7
typedef struct _URMHashTableEntry
Packit b099d7
{
Packit b099d7
    char		*az_value;	/* value associated with this name */
Packit b099d7
    struct _URMHashTableEntry
Packit b099d7
			*az_next_entry;	/* next entry on hash chain */
Packit b099d7
    char		c_text[1];	/* text of the name */
Packit b099d7
} URMHashTableEntry, *URMHashTableEntryPtr;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Low level file information.
Packit b099d7
 *
Packit b099d7
 * This structure is pointed to in the IDBOpenFile structure and blindly
Packit b099d7
 * passed to the low level routines.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	rab;		/* Record Access Block	*/
Packit b099d7
	int		file_desc;	/* File Descriptor */
Packit b099d7
	char		*name;		/* The file name		*/
Packit b099d7
} IDBLowLevelFile, *IDBLowLevelFilePtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * IDB open file information
Packit b099d7
 *
Packit b099d7
 * The following is the information retained by IDB for an open file.
Packit b099d7
 * Much of this information matches that found in the file header,
Packit b099d7
 * and is the source of for that info when the header is updated.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define	IDBOpenFileValid	421642674
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	validation ;		/* validation code =
Packit b099d7
						   IDBOpenFileValid */
Packit b099d7
	int		get_count ;		/* # get operations on file */
Packit b099d7
	int		put_count ;		/* # put operations on file */
Packit b099d7
	MrmCode		access ;		/* URMReadAccess or
Packit b099d7
						   URMWriteAccess */
Packit b099d7
	IDBLowLevelFilePtr lowlevel_id ;	/* open file id returned
Packit b099d7
						   by low-level routines */
Packit b099d7
	IDBRecordNumber	index_root ;		/* index root pointer */
Packit b099d7
	MrmCount	num_indexed ;		/* # entries in index */
Packit b099d7
	MrmCount	num_RID ;		/* # RID entries in file */
Packit b099d7
	IDBridDesc	next_RID ;		/* next available RID */
Packit b099d7
	IDBRecordNumber	last_record ;		/* last record used in file */
Packit b099d7
	IDBRecordNumber	last_data_record ;	/* last data record in file.
Packit b099d7
						   NULL if no records yet */
Packit b099d7
	MrmCount	group_counts[URMgVecSize] ;
Packit b099d7
						/* vector of record counts
Packit b099d7
						   by resource group */
Packit b099d7
	MrmCount	rt_counts[IDBrtVecSize] ;
Packit b099d7
						/* vector of record counts by
Packit b099d7
						   record type (statistics) */
Packit b099d7
	unsigned long	timer ;			/* for statistics */
Packit b099d7
	char		db_version[IDBhsVersion1] ;
Packit b099d7
						/* database version */
Packit b099d7
	char		creator[IDBhsCreator1] ; /* creator id */
Packit b099d7
	char		creator_version[IDBhsVersion1] ;
Packit b099d7
						/* creator version */
Packit b099d7
	char		creation_date[IDBhsDate1] ;
Packit b099d7
						/* creation date */
Packit b099d7
	char		module[IDBhsModule1] ;	/* module id */
Packit b099d7
	char		module_version[IDBhsVersion1] ;
Packit b099d7
						/* module version */
Packit b099d7
	UidCompressionTablePtr
Packit b099d7
			class_ctable;		/* compression table for
Packit b099d7
						   class info */
Packit b099d7
	UidCompressionTablePtr
Packit b099d7
			resource_ctable;	/* compression table for
Packit b099d7
						   resource info */
Packit b099d7
	int		user1 ;			/* for caller use */
Packit b099d7
	int		user2 ;			/* for caller use */
Packit b099d7
	MrmFlag         byte_swapped ;          /* indicates uid file created on
Packit b099d7
	  					   opposite-endian machine */
Packit b099d7
	MrmFlag		in_memory ;		/* for memory mapped files */
Packit b099d7
	unsigned char 	*uid_buffer ;		/* pointer to memory buffer */
Packit b099d7
} IDBOpenFile, *IDBFile ;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Open hierarchy struct
Packit b099d7
 *
Packit b099d7
 * The following structure represents an open hierarchy. A hierarchy
Packit b099d7
 * is principally a list of open IDB files in search order. As an aid to
Packit b099d7
 * efficient searching, a list of files by resource group is also kept.
Packit b099d7
 * Each entry in the list is the subset of the files in the hierarchy
Packit b099d7
 * which contains resources in the corresponding group.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define	MrmHIERARCHY_VALID	102214835
Packit b099d7
typedef struct MrmHierarchyDescStruct {
Packit b099d7
	unsigned	validation ;		/* MrmHIERARCHY_VALID */
Packit b099d7
	MrmCount	num_file ;		/* number of files open */
Packit b099d7
	IDBFile		*file_list ;		/* list of open files */
Packit b099d7
	MrmCount	grp_num[URMgVecSize] ;	/* vector of file counts by
Packit b099d7
						   resource group */
Packit b099d7
	IDBFile		*grp_ids[URMgVecSize] ;	/* vectors of file ids by
Packit b099d7
						   resource group */
Packit b099d7
	URMHashTableEntryPtr
Packit b099d7
			*name_registry;		/* to register names */
Packit b099d7
} MrmHierarchyDesc;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Validation macro
Packit b099d7
 */
Packit b099d7
#define	MrmHierarchyValid(hierarchy)		\
Packit b099d7
    ((hierarchy)->validation==MrmHIERARCHY_VALID)
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * RGM widget record typedefs
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGM Widget record. All offset are relative to the beginning of the record
Packit b099d7
 */
Packit b099d7
#define	URMWidgetRecordValid	373946338
Packit b099d7
Packit b099d7
/* Variety codes. */
Packit b099d7
#define UilMrmWidgetVariety	0
Packit b099d7
#define UilMrmAutoChildVariety	1
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
	unsigned		validation;	/* validation code =
Packit b099d7
					   URMWidgetRecordValid */
Packit b099d7
	MrmSize		size;		/* Total number of bytes for record */
Packit b099d7
	MrmCode		access;		/* URMaPublic or URMaPrivate */
Packit b099d7
	MrmCode		lock;		/* locking code */
Packit b099d7
	MrmType		type;		/* widget type, equates to class
Packit b099d7
					   for toolkit widgets.  (Unknown or
Packit b099d7
					   a uid-based compression code). */
Packit b099d7
	MrmOffset	name_offs;	/* Offset of widget name. Locates a
Packit b099d7
					   String. Empty string is illegal */
Packit b099d7
	MrmOffset	class_offs;	/* Offset of class name. The class name
Packit b099d7
					   is required for application-defined
Packit b099d7
					   widgets. */
Packit b099d7
	MrmOffset	arglist_offs; 	/* Offset of arglist descriptor.
Packit b099d7
					   Locates a RGMArgListDesc struct */
Packit b099d7
	MrmOffset	children_offs;	/* Offset of children descriptor.
Packit b099d7
					   Locates a RGMChildrenDesc struct */
Packit b099d7
	MrmOffset	comment_offs; 	/* Offset of comment string for
Packit b099d7
					   this widget. (URM extension) */
Packit b099d7
	MrmOffset	creation_offs;	/* Offset of RGMCallnackDesc struct
Packit b099d7
					   specifying URM creation callback
Packit b099d7
					   for this widget */
Packit b099d7
	unsigned long		variety;/* Regular widget or auto child. */
Packit b099d7
	unsigned long		annex; 	/* annex allows compatible growth */
Packit b099d7
} RGMWidgetRecord, *RGMWidgetRecordPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Size of the header part of the record
Packit b099d7
 */
Packit b099d7
#define	RGMWidgetRecordHdrSize	sizeof(RGMWidgetRecord)
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Macro to access the widget record in a context
Packit b099d7
 */
Packit b099d7
#define	UrmWRWidgetRec(context)	\
Packit b099d7
	((RGMWidgetRecordPtr) UrmRCBuffer(context))
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * All validation, accessor, and setting macros access a widget record in
Packit b099d7
 * a context. They all take a pointer to the widget record, which is
Packit b099d7
 * the context buffer CAST to RGMWidgetRecordptr.
Packit b099d7
 */
Packit b099d7
#define	UrmWRValid(widgetrec)	\
Packit b099d7
    ((widgetrec)->validation==URMWidgetRecordValid)
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Accessor macros for the widget record header
Packit b099d7
 */
Packit b099d7
#define UrmWRPSize(context)		(UrmWRWidgetRec(context)->size)
Packit b099d7
#define	UrmWRPAccess(context)		(UrmWRWidgetRec(context)->access)
Packit b099d7
#define	UrmWRPLock(context)		(UrmWRWidgetRec(context)->lock)
Packit b099d7
#define	UrmWRPType(context)		(UrmWRWidgetRec(context)->type)
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * value descriptor. This consists of a representation type, followed
Packit b099d7
 * by a union of either an immediate value or an offset, depending
Packit b099d7
 * on the representation type.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmType		rep_type;	/* representation type from
Packit b099d7
					   RGMrType... */
Packit b099d7
	union {
Packit b099d7
	  int		ival;		/* integer, boolean, compressed */
Packit b099d7
	  MrmOffset	offset ;	/* offset for all others */
Packit b099d7
	} datum ;			/* immediate value or offset */
Packit b099d7
} RGMArgValue, *RGMArgValuePtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGM widget record argument descriptor
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmCode		tag_code;	/* Either the compressed code for
Packit b099d7
					   the argument tag from URMc...,
Packit b099d7
					   or UilMrmUnknownCode to indicate no
Packit b099d7
					   known string. If UilMrmUnknownCode, then
Packit b099d7
					   the offset is in tag_off */
Packit b099d7
	union
Packit b099d7
	    {
Packit b099d7
	    MrmOffset	tag_offs;	/* offset to tag string if needed */
Packit b099d7
	    MrmCode	related_code;	/* related argument code for case
Packit b099d7
					   where tag_code is valid and a
Packit b099d7
					   related argument is to be set */
Packit b099d7
	    } stg_or_relcode;
Packit b099d7
	RGMArgValue	arg_val ;	/* argument value */
Packit b099d7
} RGMArgument, *RGMArgumentPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGM widget record arglist descriptor
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmCount	count;		/* number of arguments in list */
Packit b099d7
	MrmCount	extra;		/* # extra runtime args needed */
Packit b099d7
	unsigned long	annex1 ;	/* annex allows compatible growth */
Packit b099d7
	RGMArgument	args[1] ;	/* first of the argument descriptors */
Packit b099d7
} RGMArgListDesc, *RGMArgListDescPtr ;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * RGM widget record text vector item (text vector literal)
Packit b099d7
 *
Packit b099d7
 * The following represents vectors of either ASCIZ or compound strings.
Packit b099d7
 * each member of the vector is type-tagged so that mixed vectors are possible.
Packit b099d7
 * This descriptor is a union so that a vector of these items can be over-
Packit b099d7
 * written to become an in-memory list of pointers. This avoids some
Packit b099d7
 * allocation problems at widget instantiation. Char8 items are String,
Packit b099d7
 * CString items are XmString.
Packit b099d7
 *
Packit b099d7
 * Offsets are interpreted as follows:
Packit b099d7
 *	text vector as immediate in widget record - offset from beginning
Packit b099d7
 *		of record buffer.
Packit b099d7
 *	text vector as UID literal - offset from beginning of resource buffer
Packit b099d7
 */
Packit b099d7
typedef union {
Packit b099d7
	  XtPointer	pointer ;	/* for use as memory pointer */
Packit b099d7
	  struct {
Packit b099d7
	      MrmType	rep_type B32;	/* MrmRtypeChar8 or MrmRtypeCString */
Packit b099d7
	      MrmOffset	offset B32;	/* offset of item in record */
Packit b099d7
	  } text_item ;			/* for use as item type & offset */
Packit b099d7
} RGMTextEntry, *RGMTextEntryPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The text Vector. This is designed to allow the vector of text entries
Packit b099d7
 * to be over-written into an in-memory vector of pointers. Thus this list
Packit b099d7
 * has one extra entry to provide a terminating null.
Packit b099d7
 */
Packit b099d7
#define	URMTextVectorValid	34966592
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	validation;	/* URMTextVectorValid */
Packit b099d7
	MrmCount	count;		/* Number of text items in vector */
Packit b099d7
	RGMTextEntry	item[1] ;	/* first text item in a vector of
Packit b099d7
					   n = .count+1 items. item[.count]
Packit b099d7
					   always = NULL */
Packit b099d7
} RGMTextVector, *RGMTextVectorPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The integer Vector. This is designed to allow the vector of integers
Packit b099d7
 * to be over-written into an in-memory vector of pointers. 
Packit b099d7
 */
Packit b099d7
#define	URMIntegerVectorValid	34966593
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	validation;	/* URMIntegerVectorValid */
Packit b099d7
	MrmCount	count;		/* Number of integer items in vector */
Packit b099d7
	int		item[1] ;	/* first integer item in a vector   */
Packit b099d7
					/* of n = .count+1 items.	    */
Packit b099d7
} RGMIntegerVector, *RGMIntegerVectorPtr ;
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * RGM widget record callback item
Packit b099d7
 *
Packit b099d7
 * A callback item is the offset of a routine name (which must be a
Packit b099d7
 * non-imported string), and the routine tag value, which is encoded
Packit b099d7
 * as a value. The tag value can evaluate to almost anything, including
Packit b099d7
 * an imported value.
Packit b099d7
 *
Packit b099d7
 * This structure is intended to be over-written with memory pointers
Packit b099d7
 * and thus function as an arglist value.
Packit b099d7
 */
Packit b099d7
typedef union 
Packit b099d7
{
Packit b099d7
  int		ival;		/* integer, boolean, compressed */
Packit b099d7
  MrmOffset	offset;		/* offset for all others */
Packit b099d7
} RGMdatum;			/* immediate value, offset, widget */
Packit b099d7
Packit b099d7
Packit b099d7
typedef union {
Packit b099d7
  struct {
Packit b099d7
    XtCallbackRec	callback ;	/* item as Xt callback */
Packit b099d7
    MrmFlag		resolved; 	/* Item resolved to XtCallbackRec */
Packit b099d7
    String		wname;		/* Name of widget reference */
Packit b099d7
  } 	runtime;
Packit b099d7
    
Packit b099d7
  struct {
Packit b099d7
    MrmOffset		routine B32;	/* offset to routine name string */
Packit b099d7
					/* duplicate RGMArgValue, avoiding
Packit b099d7
					   union alignment hassles */
Packit b099d7
    MrmType		rep_type B32;	/* from RGMrType... */
Packit b099d7
    RGMdatum		datum ;		/* immediate value, offset, widget */
Packit b099d7
  } 	cb_item ;			/* callback item in record */
Packit b099d7
} RGMCallbackItem, *RGMCallbackItemPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGM widget record callback argument descriptor. This list has
Packit b099d7
 * count + 1 entries so that this structure may be overwritten
Packit b099d7
 */
Packit b099d7
#define	URMCallbackDescriptorValid	107397480
Packit b099d7
typedef struct {
Packit b099d7
        unsigned	validation;		/* URMCallbackDescriptorValid */
Packit b099d7
	MrmCount	count;			/* Number of callback items */
Packit b099d7
	MrmCount	annex;		  	/* annex allows growth */
Packit b099d7
	MrmCount	unres_ref_count;	/* # of unresolved widget refs 
Packit b099d7
	                                           in the RGMCallbackItems */
Packit b099d7
	RGMCallbackItem item[1] ;		/* First callback item in a list
Packit b099d7
	                                           of n = .count+1 items */
Packit b099d7
} RGMCallbackDesc, *RGMCallbackDescPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * We need to have the 1.1 versions of RGMCallbackItem and RGMCallbackDesc
Packit b099d7
 * so that backwards compatibility can be maintained between 1.1 and 1.2.
Packit b099d7
 */
Packit b099d7
typedef union {
Packit b099d7
	XtCallbackRec	runtime ;	/* item as Xt callback */
Packit b099d7
	struct {
Packit b099d7
	  MrmOffset	routine ;	/* offset to routine name string */
Packit b099d7
					/* duplicate RGMArgValue, avoiding
Packit b099d7
					   union alignment hassles */
Packit b099d7
	  MrmType	rep_type ;	/* from RGMrType... */
Packit b099d7
	  RGMdatum	 datum ;	/* immediate value or offset */
Packit b099d7
	} cb_item ;			/* callback item in record */
Packit b099d7
} OldRGMCallbackItem, *OldRGMCallbackItemPtr ;
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	validation ;	/* URMCallbackDescriptorValid */
Packit b099d7
	MrmCount	count ;		/* Number of callback items */
Packit b099d7
	unsigned long	annex1 ;	/* annex allows compatible growth */
Packit b099d7
	OldRGMCallbackItem  item[1] ;	/* First callback item in a list
Packit b099d7
					   of n = .count+1 items */
Packit b099d7
} OldRGMCallbackDesc, *OldRGMCallbackDescPtr ;
Packit b099d7
Packit b099d7
/* BEGIN OSF Fix CR 4859 */
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Wide character uid form
Packit b099d7
 *
Packit b099d7
 * The following represents a multi-byte string which needs to be converted
Packit b099d7
 * to a wide-character string when it is retrieved.
Packit b099d7
 * The structure contains a byte count followed by the bytes.
Packit b099d7
 */
Packit b099d7
typedef union {
Packit b099d7
    XtPointer	pointer;			  /* for use as memory pointer */
Packit b099d7
    struct {
Packit b099d7
      MrmCount	count;				  /* # of bytes */
Packit b099d7
      char bytes[1];				  /* vector of bytes */
Packit b099d7
    } wchar_item;
Packit b099d7
} RGMWCharEntry, *RGMWCharEntryPtr;
Packit b099d7
Packit b099d7
/* END OSF Fix CR 4859 */
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Font literal
Packit b099d7
 *
Packit b099d7
 * The following represents a MrmRtypeFont literal. Since it contains two
Packit b099d7
 * strings, the same offset mechanism is used to store both, and this
Packit b099d7
 * is a fixed-length data structure.
Packit b099d7
 * data structure.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
    union
Packit b099d7
	{
Packit b099d7
	/*XmStringCharset*/char* 	charset; /* character set (resolved) */
Packit b099d7
	MrmOffset	cs_offs;	/* character set in buffer */
Packit b099d7
Packit b099d7
	} cset;
Packit b099d7
    union
Packit b099d7
	{
Packit b099d7
	String		font;		/* string naming font */
Packit b099d7
	MrmOffset	font_offs;	/* font name in buffer */
Packit b099d7
	} font;
Packit b099d7
    MrmCode		type;
Packit b099d7
} RGMFontItem, *RGMFontItemPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A font list, which is a vector of font items. The font items are
Packit b099d7
 * treated as a heap store following the fixed length list (similar
Packit b099d7
 * to text vectors). Font lists in widget records have offsets from
Packit b099d7
 * the beginning of the record; font list literals in a UID file have
Packit b099d7
 * offsets from the beginning of the list itself (just like text
Packit b099d7
 * vectors). Font items in a font list are a union of a pointer and
Packit b099d7
 * an offset, so that (as in text vectors) they can be converted in
Packit b099d7
 * place to an in-memory pointer list.
Packit b099d7
 */
Packit b099d7
#define URMFontListValid	74149235
Packit b099d7
typedef struct {
Packit b099d7
	unsigned		validation;	/* URMFontListValid */
Packit b099d7
	MrmCount		count;		/* # of font items in list */
Packit b099d7
	RGMFontItem		item[1] ;	/* vector of RGMFontItems */
Packit b099d7
} RGMFontList, *RGMFontListPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * We need to have the 1.1 versions of RGMFontItem and RGMFontList
Packit b099d7
 * so that backwards compatibility can be maintained between 1.1 and 1.2.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
    union
Packit b099d7
	{
Packit b099d7
	/*XmStringCharset*/char*	charset;	/* character set (resolved) */
Packit b099d7
	MrmOffset	cs_offs;	/* character set in buffer */
Packit b099d7
	} cset;
Packit b099d7
    union
Packit b099d7
	{
Packit b099d7
	String		font;		/* string naming font */
Packit b099d7
	MrmOffset	font_offs;	/* font name in buffer */
Packit b099d7
	} font;
Packit b099d7
} OldRGMFontItem, *OldRGMFontItemPtr ;
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
	unsigned		validation ;	/* URMFontListValid */
Packit b099d7
	MrmCount		count ;		/* # of font items in list */
Packit b099d7
	OldRGMFontItem		item[1] ;	/* vector of RGMFontItems */
Packit b099d7
} OldRGMFontList, *OldRGMFontListPtr ;
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * RGM widget record child descriptor
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmFlag		manage ;	/* true if child is managed by parent
Packit b099d7
					   at initialization */
Packit b099d7
	MrmSCode	access ;	/* URMaPublic or URMaPrivate */
Packit b099d7
	MrmSCode	unused1 ;	/* formerly class, unused anywhere */
Packit b099d7
	MrmSCode	type ;		/* specifier type - URMrIndex or
Packit b099d7
					   URMrRID */
Packit b099d7
	unsigned long	annex1;		/* annex allows compatible growth */
Packit b099d7
	union {
Packit b099d7
	  int		index_offs;	/* index string offset (URMrIndex) */
Packit b099d7
	  MrmResource_id	id;	/* IDB resource id (URMrRID) */
Packit b099d7
	} key ;				/* key to widget by index or id */
Packit b099d7
} RGMChildDesc, *RGMChildDescPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGM widget record children list descriptor
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmCount	count;		/* number of children */
Packit b099d7
	MrmCode		unused1;	/* formerly access, unused anywhere */
Packit b099d7
	unsigned long	annex1;		/* annex allows compatible growth */
Packit b099d7
	RGMChildDesc	child[1] ;	/* First child descriptor in a list of
Packit b099d7
					   n = .count descriptors. */
Packit b099d7
} RGMChildrenDesc, *RGMChildrenDescPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGM widget record URM resource descriptor. This is commonly used as the
Packit b099d7
 * value of an argument which is a discrete resource. In this case, the
Packit b099d7
 * resource specifies the data type required for the argument (from
Packit b099d7
 * RGMrType...) to allow conversion if the literal is a different type
Packit b099d7
 * when read.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmSize		size;		/* number of bytes in structure */
Packit b099d7
	MrmFlag		access ;	/* Public/private - URMaPublic or
Packit b099d7
					   URMaPrivate for this resource */
Packit b099d7
	MrmSCode	type ;		/* URMrIndex or URMrRID */
Packit b099d7
	MrmSCode	res_group ;	/* resource group */
Packit b099d7
	MrmSCode	cvt_type ;	/* RGMrType... to which the resource
Packit b099d7
					   needs to be converted when used
Packit b099d7
					   as an argument value. RGMwrType
Packit b099d7
					   for widget references. */
Packit b099d7
	unsigned long	annex1 ;	/* annex allows compatible growth */
Packit b099d7
Packit b099d7
	union {
Packit b099d7
	  char		index[1] ;	/* index for URMrIndex resource
Packit b099d7
					   (nul teminated) */
Packit b099d7
	  MrmResource_id	id ;	/* resource id */
Packit b099d7
	} key ;				/* key to resource by index or id */
Packit b099d7
} RGMResourceDesc, *RGMResourceDescPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * When a resource descriptor names a widget, the cvt_type is used to
Packit b099d7
 * indicate the type of reference, which indicates the processing required.
Packit b099d7
 */
Packit b099d7
#define	RGMwrTypeReference	233	/* Reference a widget defined by
Packit b099d7
					   a CreateInstance elsewhere */
Packit b099d7
#define	RGMwrTypeSubTree	234	/* Subtree reference. The subtree
Packit b099d7
					   must be instantiated as part of
Packit b099d7
					   the current operation */
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Interface module descriptor
Packit b099d7
 *
Packit b099d7
 * An interface module is currently the only type of resource set defined.
Packit b099d7
 * It defines the topmost widgets for some application (there is no
Packit b099d7
 * requirement that there be only one interface module for an application).
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A topmost widget descriptor. These are currently required to be
Packit b099d7
 * accessed by index only, and the index is currently the only information
Packit b099d7
 * saved. The index is stored as a fixed-length entry to simplify the
Packit b099d7
 * layout of an interface module.
Packit b099d7
 *
Packit b099d7
 * The widgets referenced in an interface module are those who have
Packit b099d7
 * no parent in the interface definition. Commonly these will have
Packit b099d7
 * the top-level widget as their parent at runtime, but this is not
Packit b099d7
 * required.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	char		index[URMMaxIndexLen1] ;
Packit b099d7
					/* Index (name) of widget */
Packit b099d7
} RGMTopmostDesc, *RGMTopmostDescPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
#define URMInterfaceModuleValid	408427447
Packit b099d7
typedef struct {
Packit b099d7
	unsigned	validation;	/* URMInterfaceModuleValid */
Packit b099d7
	MrmCount	count;		/* number of topmost widgets */
Packit b099d7
	unsigned long	annex1;		/* annex allows compatible growth */
Packit b099d7
	unsigned long	annex2;		/* annex allows compatible growth */
Packit b099d7
	RGMTopmostDesc	topmost[1] ;	/* First topmost descriptor in a
Packit b099d7
					   list of n= .count descriptors */
Packit b099d7
} RGMModuleDesc, *RGMModuleDescPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Validation macro
Packit b099d7
 */
Packit b099d7
#define	UrmInterfaceModuleValid(module)		\
Packit b099d7
    ((module)->validation==URMInterfaceModuleValid)
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Representations for URM color descriptor (MrmRtypeColor) and
Packit b099d7
 * color table (MrmRtypeColorTable).
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * RGB color data structure
Packit b099d7
 */
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
	unsigned short	red;   		/* RGB colors */
Packit b099d7
	unsigned short	green;   	/* RGB colors */
Packit b099d7
	unsigned short	blue;   	/* RGB colors */
Packit b099d7
}RGBColor, *RGBColorPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * URM color descriptor. This is a color name plus a fallback
Packit b099d7
 * designator specifying the color as foreground or background.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	MrmSCode	mono_state ;	/* monochrome treatment, from
Packit b099d7
					   URMColorMonochrome... */
Packit b099d7
	MrmSCode	desc_type;	/* color desc_type from
Packit b099d7
					   URMColorDescType... */
Packit b099d7
        union {
Packit b099d7
	    char	name[1] ;	/* color name */
Packit b099d7
	    RGBColor	rgb ;		/* RGB Color */
Packit b099d7
	    } desc;
Packit b099d7
} RGMColorDesc, *RGMColorDescPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Monochrome treatments
Packit b099d7
 */
Packit b099d7
#define	URMColorMonochromeUnspecified	1
Packit b099d7
#define	URMColorMonochromeForeground	2
Packit b099d7
#define	URMColorMonochromeBackground	3
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Color descriptor types
Packit b099d7
 */
Packit b099d7
#define URMColorDescTypeName	1
Packit b099d7
#define URMColorDescTypeRGB	2
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Use this Min size plus the size of the color name string to determine the
Packit b099d7
 * exact size that the RGMColorDesc will need to allocate.
Packit b099d7
 */
Packit b099d7
#define RGMColorDescNameMinSize (sizeof (RGMColorDesc)\
Packit b099d7
				 - sizeof (RGBColor)\
Packit b099d7
				 + sizeof (char))
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * URM color table item. This is a pointer to a color descriptor, plus
Packit b099d7
 * a Pixel for the runtime conversion of the color.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	Pixel			color_pixel ;	/* runtime translation */
Packit b099d7
	MrmType			type;	/* descriptor reference type,
Packit b099d7
					   either MrmRtypeColor, or
Packit b099d7
					   or MrmRtypeResource if
Packit b099d7
					   coffs locates a resource */
Packit b099d7
	unsigned long		annex1;	/* annex allows growth */
Packit b099d7
	
Packit b099d7
	union {
Packit b099d7
	  RGMColorDescPtr	cptr ;	/* in-memory color descriptor */
Packit b099d7
	  MrmOffset		coffs; 	/* descriptor/resource in record */
Packit b099d7
	} color_item ;			/* pointer or offset */
Packit b099d7
} RGMColorTableEntry, *RGMColorTableEntryPtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A color table. This is a vector of color items. Items 0 and 1 are
Packit b099d7
 * reserved for "background"(0) and "foreground"(1) in all color tables;
Packit b099d7
 * user-specified colors begin at entry 2. The color count always
Packit b099d7
 * includes these predefined colors, so the minimum count is 2. No
Packit b099d7
 * color descriptor is required or used for the predefined entries;
Packit b099d7
 * only the color_pixel field in the table item is ever used.
Packit b099d7
 *
Packit b099d7
 * Color descriptor offsets are valid only in a widget record. All
Packit b099d7
 * other instances of a color table, including those which are
Packit b099d7
 * are parameters to the widget record creation routines, must have
Packit b099d7
 * valid memory pointers.
Packit b099d7
 */
Packit b099d7
#define	URMColorTableValid	9424574
Packit b099d7
typedef struct {
Packit b099d7
	unsigned		validation ;	/* URMColorTableValid */
Packit b099d7
	MrmCount		count ;		/* # entries in table */
Packit b099d7
	RGMColorTableEntry	item[1] ;	/* 1st entry in table */
Packit b099d7
} RGMColorTable, *RGMColorTablePtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Predefined entries, first accessible user-defined entry
Packit b099d7
 */
Packit b099d7
#define	URMColorTableBG		0
Packit b099d7
#define	URMColorTableFG		1
Packit b099d7
#define	URMColorTableUserMin	2
Packit b099d7
Packit b099d7
	
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Definitions to a support a URM icon; the representation for
Packit b099d7
 * MrmRtypeIconImage objects.
Packit b099d7
 *
Packit b099d7
 * A URM icon supports a pixmap of arbitrary size and with, and with support
Packit b099d7
 * for up to 256 colors including foreground and background. The
Packit b099d7
 * icon pixels are stored using either 1, 4, or 8 bits, depending on
Packit b099d7
 * how much information is required to index the icon's color map.
Packit b099d7
 *
Packit b099d7
 * The pixel array is stored in row-major order. Each row begins on a byte
Packit b099d7
 * boundary no matter what the pixel size is. URM uses the ZPixmap
Packit b099d7
 * representation for the image data at runtime, and attempts to avoid
Packit b099d7
 * allocating memory for the pixel array by overwriting the pixel data
Packit b099d7
 * array with Pixel values if the number of bits per pixel is sufficient.
Packit b099d7
 *
Packit b099d7
 * The color table design is intended to support eventual creation of
Packit b099d7
 * color tables as discrete resources, possibly accessible as resource
Packit b099d7
 * references. Currently, the color table must be allocated and managed
Packit b099d7
 * as part of the icon image.
Packit b099d7
 *
Packit b099d7
 * Icon image offsets are valid only in a widget record. All
Packit b099d7
 * other instances of an icon image, including those which are
Packit b099d7
 * are parameters to the widget record creation routines, must have
Packit b099d7
 * valid memory pointers.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define	URMIconImageValid	160003640
Packit b099d7
typedef struct {
Packit b099d7
	unsigned		validation;	/* URMIconImageValid */
Packit b099d7
	MrmSCode		pixel_size ;	/* from URMIconPixelSize... */
Packit b099d7
	MrmCount		width;		/* # pixels wide */
Packit b099d7
	MrmCount		height;		/* # pixels high */
Packit b099d7
	MrmCount		hot_x, hot_y ;	/* hot spot location */
Packit b099d7
	MrmType			ct_type;	/* MrmRtypeColorTable for
Packit b099d7
						   table in record.
Packit b099d7
						   MrmRtypeResource for
Packit b099d7
						   separate resource ref. */
Packit b099d7
	unsigned long		annex1;	 	/* annex allows growth */
Packit b099d7
	union {
Packit b099d7
	  RGMColorTablePtr	ctptr ;		/* in-memory color table */
Packit b099d7
	  MrmOffset		ctoff;		/* color table or resource
Packit b099d7
						   desc offset in record */
Packit b099d7
	} color_table ;				/* memory/record color table */
Packit b099d7
	union {
Packit b099d7
	  char			*pdptr ;	/* pixel data in memory */
Packit b099d7
	  MrmOffset		pdoff;		/* pixel data record offset */
Packit b099d7
	} pixel_data ;
Packit b099d7
} RGMIconImage, *RGMIconImagePtr ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Pixel sizes. These are limited and specified with literals.
Packit b099d7
 */
Packit b099d7
#define	URMPixelSize1Bit	1	/* 1 bit (bitmap) */
Packit b099d7
#define	URMPixelSize2Bit	2	/* 2 bits */
Packit b099d7
#define	URMPixelSize4Bit	3	/* 4 bits */
Packit b099d7
#define	URMPixelSize8Bit	4	/* 8 bits */
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Definitions of the data structures used to store units information for
Packit b099d7
 * dimensional values.
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
    unsigned value; /* the actual integer value */
Packit b099d7
    unsigned units; /* the units designation of the value. Matches
Packit b099d7
		     the Xm units values in Xm.h */
Packit b099d7
} RGMUnitsInteger, *RGMUnitsIntegerPtr ;
Packit b099d7
Packit b099d7
typedef struct {
Packit b099d7
    unsigned long value[2]; /* the actual floating point value */
Packit b099d7
    unsigned units;  /* the units designation of the value. Matches
Packit b099d7
		     the Xm units values in Xm.h */
Packit b099d7
} RGMUnitsFloat, *RGMUnitsFloatPtr ;
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Definition of the data structure used during widget creation to retain
Packit b099d7
 * and provide the information required to resolve widget arguments which
Packit b099d7
 * must be SetValue rather than create. The layout and use of
Packit b099d7
 * the descriptor depends on the type argument:
Packit b099d7
 *		URMsvWidgetRef - widget resource forward reference. Resolved
Packit b099d7
 *			when the widget is defined, applied when all the
Packit b099d7
 *			widgets in a tree are instantiated.
Packit b099d7
 *		URMsvIconImage - Icon image which is SetValued immediately
Packit b099d7
 *			after the widget create (when foreground/backgound
Packit b099d7
 *			info is available).
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
	Widget		setw ;		/* widget to be modified */
Packit b099d7
	MrmCode		type ;		/* from URMsv... */
Packit b099d7
	MrmCode		tagcode ;	/* code of argument to be set */
Packit b099d7
	String		tagname ;	/* string name of argument. If
Packit b099d7
					   the tag code is UilMrmUnknownCode,
Packit b099d7
					   this must be freed. */
Packit b099d7
	MrmFlag		done ;		/* set TRUE when SetValues done */
Packit b099d7
	union {
Packit b099d7
	    String		wname ;		/* arg widget index */
Packit b099d7
	    RGMIconImagePtr	icon ;		/* icon pointer only */
Packit b099d7
	    RGMCallbackDescPtr	callbacks;	/* callback list */
Packit b099d7
	} sv ;				/* some SetValues descriptor */
Packit b099d7
} URMSetValuesDesc, *URMSetValuesDescPtr ;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * SetValues descriptor types
Packit b099d7
 */
Packit b099d7
#define	URMsvWidgetRef		1	/* widget reference */
Packit b099d7
#define	URMsvIconImage		2	/* icon image */
Packit b099d7
#define	URMsvCallBackList	3	/* list of callbacks */
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * The following data structures support resolving references to widgets
Packit b099d7
 * found during creation of a widget tree. The data structure retains
Packit b099d7
 * an ordered list of the widget name/id pairs instantiated during
Packit b099d7
 * tree creation. The data structure is maintained in a resource context
Packit b099d7
 * which allows for expansion. The top part of the data structure retains
Packit b099d7
 * fixed-length information, while the bottom part of the buffer is
Packit b099d7
 * used as a string heap.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Single element in the fixed-length vector
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
    Widget		w_id;			/* widget id */
Packit b099d7
    MrmOffset		w_name_offs;		/* name offset in heap */
Packit b099d7
} URMWRef, URMWRefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Header for the structure
Packit b099d7
 */
Packit b099d7
typedef struct {
Packit b099d7
    MrmCount		num_refs;		/* # entries defined */
Packit b099d7
    MrmCount		heap_size;		/* # bytes used in heap */
Packit b099d7
    URMWRef		refs[1];		/* beginning of vector */
Packit b099d7
} URMWRefStruct, *URMWRefStructPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * size and access macros
Packit b099d7
 */
Packit b099d7
#define UrmWRefHeaderBytes(ref_id) \
Packit b099d7
    (sizeof(URMWRefStruct)+((ref_id)->num_refs-1)*sizeof(URMWRef))
Packit b099d7
#define UrmWRefBytesUsed(ref_id) \
Packit b099d7
    (UrmWRefHeaderBytes((ref_id))+(ref_id)->heap_size)
Packit b099d7
#define UrmWRefIdN(ref_id,ndx) \
Packit b099d7
    ((ref_id)->refs[(ndx)].w_id)
Packit b099d7
#define UrmWRefNameN(ref_id,ndx) \
Packit b099d7
    ((String)((String)(ref_id)+(ref_id)->refs[(ndx)].w_name_offs))
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Function prototypes for URM routines
Packit b099d7
 */
Packit b099d7
#ifndef _ARGUMENTS
Packit b099d7
#define _ARGUMENTS(arglist) arglist
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#include "IDB.h"			/* needed for prototype definitions */
Packit b099d7
Packit b099d7
/* mrmcontext.c */
Packit b099d7
extern Cardinal UrmGetResourceContext  _ARGUMENTS(( char *((*alloc_func )()), 
Packit b099d7
						    void (*free_func )(), 
Packit b099d7
						    MrmSize size , 
Packit b099d7
						    URMResourceContextPtr *context_id_return ));
Packit b099d7
extern Cardinal UrmResizeResourceContext  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    int size ));
Packit b099d7
extern Cardinal UrmFreeResourceContext  _ARGUMENTS(( URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmerror.c */
Packit b099d7
extern Cardinal Urm__UT_Error  _ARGUMENTS(( char *module , 
Packit b099d7
					    char *error , 
Packit b099d7
					    IDBFile file_id , 
Packit b099d7
					    URMResourceContextPtr context_id , 
Packit b099d7
					    Cardinal status ));
Packit b099d7
extern Cardinal Urm__UT_SetErrorReport  _ARGUMENTS(( MrmCode report_type ));
Packit b099d7
extern MrmCode Urm__UT_LatestErrorCode  _ARGUMENTS(( void ));
Packit b099d7
extern String Urm__UT_LatestErrorMessage  _ARGUMENTS(( void ));
Packit b099d7
extern String Urm__UT_UrmCodeString  _ARGUMENTS(( MrmCode cod ));
Packit b099d7
Packit b099d7
/* mrmhier.c */
Packit b099d7
extern Cardinal Urm__OpenHierarchy  _ARGUMENTS(( MrmCount num_files , 
Packit b099d7
						 String *name_list , 
Packit b099d7
						 MrmOsOpenParamPtr *os_ext_list , 
Packit b099d7
						 MrmHierarchy *hierarchy_id_return,
Packit b099d7
						 MrmFlag in_memory, 
Packit b099d7
						 unsigned char *uid_buffer));
Packit b099d7
extern Cardinal Urm__CloseHierarchy  _ARGUMENTS(( MrmHierarchy hierarchy_id ));
Packit b099d7
extern Cardinal UrmHGetIndexedResource  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
						String index , 
Packit b099d7
						MrmGroup group_filter , 
Packit b099d7
						MrmType type_filter , 
Packit b099d7
						URMResourceContextPtr context_id , 
Packit b099d7
						IDBFile *file_id_return ));
Packit b099d7
extern Cardinal Urm__RegisterNamesInHierarchy  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
							    String *names , 
Packit b099d7
							    XtPointer *values , 
Packit b099d7
							    MrmCount num_cb ));
Packit b099d7
extern Cardinal Urm__LookupNameInHierarchy  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
							String name , 
Packit b099d7
							XtPointer *value_return ));
Packit b099d7
Packit b099d7
/* mrmibuffer.c */
Packit b099d7
extern Cardinal Idb__BM_InitBufferVector _ARGUMENTS(( void ));
Packit b099d7
extern Cardinal Idb__BM_GetBuffer  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBRecordBufferPtr *buffer_return ));
Packit b099d7
extern Cardinal Idb__BM_MarkActivity  _ARGUMENTS(( IDBRecordBufferPtr buffer ));
Packit b099d7
extern Cardinal Idb__BM_MarkModified  _ARGUMENTS(( IDBRecordBufferPtr buffer ));
Packit b099d7
extern Cardinal Idb__BM_GetRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBRecordNumber record , 
Packit b099d7
						IDBRecordBufferPtr *buffer_return ));
Packit b099d7
extern Cardinal Idb__BM_InitRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBRecordNumber record , 
Packit b099d7
						MrmType type , 
Packit b099d7
						IDBRecordBufferPtr *buffer_return ));
Packit b099d7
extern Cardinal Idb__BM_InitDataRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBRecordBufferPtr *buffer_return ));
Packit b099d7
extern Cardinal Idb__BM_Decommit  _ARGUMENTS(( IDBRecordBufferPtr buffer ));
Packit b099d7
extern Cardinal Idb__BM_DecommitAll  _ARGUMENTS(( IDBFile file_id ));
Packit b099d7
Packit b099d7
/* mrmicon.c */
Packit b099d7
extern Cardinal UrmCreatePixmap  _ARGUMENTS(( RGMIconImagePtr icon , 
Packit b099d7
					    Screen *screen , 
Packit b099d7
					    Display *display , 
Packit b099d7
					    Pixel fgpix , 
Packit b099d7
					    Pixel bgpix , 
Packit b099d7
					    Pixel *pixmap ,
Packit b099d7
					    Widget parent ));
Packit b099d7
extern Cardinal UrmCreateBitmap	_ARGUMENTS(( RGMIconImagePtr icon , 
Packit b099d7
					    Screen *screen , 
Packit b099d7
					    Display *display , 
Packit b099d7
					    Pixel *pixmap ));
Packit b099d7
extern Cardinal Urm__CW_ReadBitmapFile  _ARGUMENTS(( String filename , 
Packit b099d7
						    Screen *screen , 
Packit b099d7
						    Pixel fgint , 
Packit b099d7
						    Pixel bgint , 
Packit b099d7
						    Pixmap *pixmap ,
Packit b099d7
						    Widget parent ));
Packit b099d7
extern Cardinal Urm__MapIconBitmap  _ARGUMENTS(( RGMIconImagePtr icon , 
Packit b099d7
						int srcpix , 
Packit b099d7
						RGMColorTablePtr ctable , 
Packit b099d7
						Screen *screen , 
Packit b099d7
						Display *display , 
Packit b099d7
						Pixmap *pixmap ));
Packit b099d7
extern Cardinal Urm__MapIconBitmapDepth1  _ARGUMENTS(( RGMIconImagePtr icon , 
Packit b099d7
 						int srcpix , 
Packit b099d7
 						Screen *screen , 
Packit b099d7
 						Display *display , 
Packit b099d7
 						Pixmap *pixmap ));
Packit b099d7
extern Cardinal Urm__MapIconReplace  _ARGUMENTS(( RGMIconImagePtr icon , 
Packit b099d7
						int srcpix , 
Packit b099d7
						RGMColorTablePtr ctable , 
Packit b099d7
						Screen *screen ,    
Packit b099d7
						Display *display , 
Packit b099d7
						Pixmap *pixmap ,
Packit b099d7
						Widget parent ));
Packit b099d7
extern Cardinal Urm__MapIconAllocate  _ARGUMENTS(( RGMIconImagePtr icon ,
Packit b099d7
						int srcpix , 
Packit b099d7
						int dstpix , 
Packit b099d7
						RGMColorTablePtr ctable , 
Packit b099d7
						Screen *screen , 
Packit b099d7
						Display *display , 
Packit b099d7
						Pixmap *pixmap ,
Packit b099d7
						Widget parent ));
Packit b099d7
extern Cardinal Urm__RealizeColorTable  _ARGUMENTS(( Screen *screen , 
Packit b099d7
						Display *display , 
Packit b099d7
						Pixel fgpix , 
Packit b099d7
						Pixel bgpix , 
Packit b099d7
						RGMColorTablePtr ctable ,
Packit b099d7
						Widget parent ));
Packit b099d7
extern RGMIconImagePtr UrmCopyAllocatedIconImage  _ARGUMENTS(( RGMIconImagePtr dst_icon , 
Packit b099d7
							    RGMIconImagePtr src_icon ));
Packit b099d7
extern Cardinal Urm__UT_GetNamedColorPixel  _ARGUMENTS(( Display *display , 
Packit b099d7
							Colormap cmap , 
Packit b099d7
							RGMColorDescPtr colorptr , 
Packit b099d7
							Pixel *pixel_return ,
Packit b099d7
							Pixel fallback));
Packit b099d7
extern Cardinal Urm__UT_GetColorPixel  _ARGUMENTS(( Display *display , 
Packit b099d7
						    Colormap cmap , 
Packit b099d7
						    RGMColorDescPtr colorptr , 
Packit b099d7
						    Pixel *pixel_return,
Packit b099d7
						    Pixel fallback));
Packit b099d7
extern Cardinal UrmIconImageSize  _ARGUMENTS(( RGMIconImagePtr icon ));
Packit b099d7
extern Cardinal UrmColorTableSize  _ARGUMENTS(( RGMColorTablePtr ctable ));
Packit b099d7
Packit b099d7
/* mrmientry.c */
Packit b099d7
extern Cardinal Idb__DB_GetDataEntry  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBDataHandle data_entry , 
Packit b099d7
						URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal Idb__DB_PutDataEntry  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						URMResourceContextPtr context_id , 
Packit b099d7
						IDBDataHandle *data_entry ));
Packit b099d7
extern Boolean Idb__DB_MatchFilter  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBDataHandle data_entry , 
Packit b099d7
						MrmCode group_filter , 
Packit b099d7
						MrmCode type_filter ));
Packit b099d7
Packit b099d7
/* mrmifile.c */
Packit b099d7
extern Cardinal Idb__FU_OpenFile  _ARGUMENTS(( char *name , 
Packit b099d7
						MrmCode access , 
Packit b099d7
						MrmOsOpenParamPtr os_ext , 
Packit b099d7
						IDBLowLevelFilePtr *file_id , 
Packit b099d7
						char *returned_fname ));
Packit b099d7
extern Cardinal Idb__FU_PutBlock _ARGUMENTS((IDBLowLevelFile	*file_id,
Packit b099d7
					     IDBRecordNumber	block_num,
Packit b099d7
					     char		*buffer)) ;
Packit b099d7
extern Cardinal Idb__FU_CloseFile _ARGUMENTS((IDBLowLevelFile	*file_id,
Packit b099d7
				   int			del)) ;
Packit b099d7
extern Cardinal Idb__FU_GetBlock  _ARGUMENTS(( IDBLowLevelFile *file_id , 
Packit b099d7
						IDBRecordNumber block_num , 
Packit b099d7
						char *buffer ));
Packit b099d7
Packit b099d7
/* mrmiheader.c */
Packit b099d7
extern Cardinal Idb__HDR_GetHeader  _ARGUMENTS(( IDBFile file_id ));
Packit b099d7
extern Cardinal Idb__HDR_InitHeader  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						String creator , 
Packit b099d7
						String creator_version , 
Packit b099d7
						String module , 
Packit b099d7
						String module_version ));
Packit b099d7
extern Cardinal Idb__HDR_PutHeader  _ARGUMENTS(( IDBFile file_id ));
Packit b099d7
extern Cardinal Idb__HDR_UpdateHeader  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    IDBRecordBufferPtr *buffer ));
Packit b099d7
extern Cardinal Idb__HDR_EnterItem  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBResource resource_id , 
Packit b099d7
						IDBDataHandle data_entry ));
Packit b099d7
extern Cardinal Idb__HDR_ReturnItem  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBResource resource_id , 
Packit b099d7
						Boolean signal_null , 
Packit b099d7
						IDBDataHandle *entry_return ));
Packit b099d7
extern Cardinal Idb__HDR_NextRID  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBResource *res_id_return ));
Packit b099d7
extern Cardinal Idb__HDR_GetDataEntry  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    IDBDataHandle data_entry , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal Idb__HDR_PutDataEntry  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    URMResourceContextPtr context_id , 
Packit b099d7
						    IDBDataHandle *data_entry ));
Packit b099d7
extern Boolean Idb__HDR_MatchFilter  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    IDBDataHandle data_entry , 
Packit b099d7
						    MrmCode group_filter , 
Packit b099d7
						    MrmCode type_filter ));
Packit b099d7
Packit b099d7
/* mrmiindex.c */
Packit b099d7
extern Cardinal Idb__INX_ReturnItem  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    char *index , 
Packit b099d7
						    IDBDataHandle *data_entry ));
Packit b099d7
extern Cardinal Idb__INX_FindIndex  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    char *index , 
Packit b099d7
						    IDBRecordBufferPtr *buffer_return , 
Packit b099d7
						    MrmCount *index_return ));
Packit b099d7
extern Cardinal Idb__INX_SearchIndex  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    char *index , 
Packit b099d7
						    IDBRecordBufferPtr buffer , 
Packit b099d7
						    MrmCount *index_return ));
Packit b099d7
extern Cardinal Idb__INX_GetBtreeRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordBufferPtr *buffer_return , 
Packit b099d7
							MrmCount entry_index , 
Packit b099d7
							Cardinal order ));
Packit b099d7
extern Cardinal Idb__INX_FindResources  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordNumber recno , 
Packit b099d7
							MrmGroup group_filter , 
Packit b099d7
							MrmType type_filter , 
Packit b099d7
							URMPointerListPtr index_list ));
Packit b099d7
Packit b099d7
/* mrmiindexw.c */
Packit b099d7
extern Cardinal Idb__INX_EnterItem  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    char *index , 
Packit b099d7
						    IDBDataHandle data_entry ));
Packit b099d7
extern Cardinal Idb__INX_EnterLeafIndex  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordBufferPtr buffer , 
Packit b099d7
							char *index , 
Packit b099d7
							IDBDataHandle data_entry , 
Packit b099d7
							MrmCount entry_index , 
Packit b099d7
							Cardinal order ));
Packit b099d7
extern Cardinal Idb__INX_EnterNodeIndex  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordBufferPtr buffer , 
Packit b099d7
							char *index , 
Packit b099d7
							IDBDataHandle data_entry , 
Packit b099d7
							IDBRecordNumber lt_record , 
Packit b099d7
							IDBRecordNumber gt_record ));
Packit b099d7
extern Cardinal Idb__INX_SplitLeafRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordBufferPtr gt_buffer ));
Packit b099d7
extern Cardinal Idb__INX_SplitNodeRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordBufferPtr gt_buffer ));
Packit b099d7
extern Cardinal Idb__INX_InitRootLeafRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							    IDBRecordBufferPtr *buffer_return ));
Packit b099d7
extern Cardinal Idb__INX_InitRootNodeRecord  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							    IDBRecordBufferPtr *buffer_return , 
Packit b099d7
							    char *index , 
Packit b099d7
							    IDBDataHandle data_entry , 
Packit b099d7
							    IDBRecordNumber lt_record , 
Packit b099d7
							    IDBRecordNumber gt_record ));
Packit b099d7
extern void Idb__INX_CopyLeafRecord  _ARGUMENTS(( IDBIndexLeafRecordPtr dst_recptr , 
Packit b099d7
						    IDBIndexLeafRecordPtr src_recptr ));
Packit b099d7
extern void Idb__INX_CopyNodeRecord  _ARGUMENTS(( IDBIndexNodeRecordPtr dst_recptr , 
Packit b099d7
						    IDBIndexNodeRecordPtr src_recptr ));
Packit b099d7
extern void Idb__INX_CollapseLeafRecord  _ARGUMENTS(( IDBIndexLeafRecordPtr recptr , 
Packit b099d7
							MrmCount start , 
Packit b099d7
							MrmCount end ));
Packit b099d7
extern void Idb__INX_CollapseNodeRecord  _ARGUMENTS(( IDBIndexNodeRecordPtr recptr , 
Packit b099d7
							MrmCount start , 
Packit b099d7
							MrmCount end ));
Packit b099d7
extern Cardinal Idb__INX_ConfirmNodeSpace  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordBufferPtr buffer ));
Packit b099d7
extern Cardinal Idb__INX_SetParent  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    IDBRecordNumber parent_record , 
Packit b099d7
						    IDBRecordNumber child_record ));
Packit b099d7
extern Cardinal Idb__INX_FixNodeChildren  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							IDBRecordNumber p_record ));
Packit b099d7
Packit b099d7
/* mrmirid.c */
Packit b099d7
extern Cardinal Idb__RID_EnterItem  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    IDBResource resource_id , 
Packit b099d7
						    IDBDataHandle data_entry ));
Packit b099d7
extern Cardinal Idb__RID_ReturnItem  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    IDBResource resource_id , 
Packit b099d7
						    Boolean signal_null , 
Packit b099d7
						    IDBDataHandle *entry_return ));
Packit b099d7
extern Cardinal Idb__RID_NextRID  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						IDBResource *res_id_return ));
Packit b099d7
extern Cardinal Idb__RID_AddRecord  _ARGUMENTS(( IDBFile file_id ));
Packit b099d7
Packit b099d7
/* mrmitop.c */
Packit b099d7
extern Cardinal UrmIdbOpenFileRead  _ARGUMENTS(( String name , 
Packit b099d7
						    MrmOsOpenParamPtr os_ext , 
Packit b099d7
						    IDBFile *file_id_return , 
Packit b099d7
						    char *fname_return ));
Packit b099d7
extern Cardinal UrmIdbOpenBuffer  _ARGUMENTS(( unsigned char *uid_buffer ,
Packit b099d7
						    IDBFile *file_id_return ));
Packit b099d7
extern Cardinal UrmIdbCloseFile  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						Boolean keep_new_file ));
Packit b099d7
extern Cardinal UrmIdbGetIndexedResource  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							String index , 
Packit b099d7
							MrmGroup group_filter , 
Packit b099d7
							MrmType type_filter , 
Packit b099d7
							URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmIdbFindIndexedResource  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							MrmGroup group_filter , 
Packit b099d7
							MrmType type_filter , 
Packit b099d7
							URMPointerListPtr index_list ));
Packit b099d7
extern Cardinal UrmIdbGetRIDResource  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							MrmResource_id resource_id , 
Packit b099d7
							MrmGroup group_filter , 
Packit b099d7
							MrmType type_filter , 
Packit b099d7
							URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmIdbGetResourceId  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
							MrmResource_id *resource_id_return ));
Packit b099d7
extern Cardinal Idb__FIL_Valid  _ARGUMENTS(( IDBFile file_id ));
Packit b099d7
Packit b099d7
/* mrmitopw.c */
Packit b099d7
extern Cardinal UrmIdbOpenFileWrite  _ARGUMENTS(( String name , 
Packit b099d7
						    MrmOsOpenParamPtr os_ext , 
Packit b099d7
						    String creator , 
Packit b099d7
						    String creator_version , 
Packit b099d7
						    String module , 
Packit b099d7
						    String module_version , 
Packit b099d7
						    IDBFile *file_id_return , 
Packit b099d7
						    char *fname_return ));
Packit b099d7
extern Cardinal UrmIdbPutIndexedResource  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    String index , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmIdbPutRIDResource  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    MrmResource_id resource_id , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmlread.c */
Packit b099d7
extern Cardinal Urm__FetchLiteral  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
						    String index , 
Packit b099d7
						    URMResourceContextPtr context_id , 
Packit b099d7
						    URMPointerListPtr *ctxlist ));
Packit b099d7
extern Cardinal UrmGetIndexedLiteral  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    String index , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmGetRIDLiteral  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						MrmResource_id resource_id , 
Packit b099d7
						URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal Urm__HGetIndexedLiteral  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
							String index , 
Packit b099d7
							URMResourceContextPtr context_id , 
Packit b099d7
							IDBFile *file_id_return ));
Packit b099d7
extern Cardinal UrmHGetIndexedLiteral  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
							String index , 
Packit b099d7
							URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmlwrite.c */
Packit b099d7
extern Cardinal UrmPutIndexedLiteral  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    String index , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmPutRIDLiteral  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    MrmResource_id resource_id , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmmodule.c */
Packit b099d7
extern Cardinal UrmIFMInitModule  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						MrmCount num_widget , 
Packit b099d7
						MrmCode access , 
Packit b099d7
						MrmCode lock ));
Packit b099d7
extern Cardinal UrmIFMSetTopmost  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						Cardinal topmost_ndx , 
Packit b099d7
						String index ));
Packit b099d7
extern Cardinal UrmIFMPutModule  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						String index , 
Packit b099d7
						URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmIFMHGetModule  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
						String index , 
Packit b099d7
						URMResourceContextPtr context_id , 
Packit b099d7
						IDBFile *file_id_return ));
Packit b099d7
extern Cardinal UrmIFMGetModule  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						String index , 
Packit b099d7
						URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmptrlist.c */
Packit b099d7
extern Cardinal UrmPlistInit  _ARGUMENTS(( int size ,
Packit b099d7
					    URMPointerListPtr *list_id_return ));
Packit b099d7
extern Cardinal UrmPlistResize  _ARGUMENTS(( URMPointerListPtr list_id ,
Packit b099d7
						int size ));
Packit b099d7
extern Cardinal UrmPlistFree  _ARGUMENTS(( URMPointerListPtr list_id ));
Packit b099d7
extern Cardinal UrmPlistFreeContents  _ARGUMENTS(( URMPointerListPtr list_id ));
Packit b099d7
extern Cardinal UrmPlistAppendPointer  _ARGUMENTS(( URMPointerListPtr list_id , 
Packit b099d7
						    XtPointer ptr ));
Packit b099d7
extern Cardinal UrmPlistAppendString  _ARGUMENTS(( URMPointerListPtr list_id , 
Packit b099d7
						    String stg ));
Packit b099d7
extern MrmCount UrmPlistFindString  _ARGUMENTS(( URMPointerListPtr list_id , 
Packit b099d7
						    String stg ));
Packit b099d7
Packit b099d7
/* mrmtable.c */
Packit b099d7
extern Cardinal Urm__FixupCompressionTable  _ARGUMENTS(( UidCompressionTablePtr ctable , 
Packit b099d7
							    Boolean qfindcldesc,							    Boolean byte_swapped ));
Packit b099d7
extern Cardinal Urm__FindClassDescriptor  _ARGUMENTS(( IDBFile cfile , 
Packit b099d7
							MrmCode code , 
Packit b099d7
							char *name , 
Packit b099d7
							WCIClassDescPtr *class_return ));
Packit b099d7
extern Cardinal Urm__UncompressCode  _ARGUMENTS(( IDBFile cfile , 
Packit b099d7
						    MrmCode code , 
Packit b099d7
						    String *stg_return ));
Packit b099d7
extern Boolean Urm__IsSubtreeResource  _ARGUMENTS(( IDBFile cfile , 
Packit b099d7
						    MrmCode code ));
Packit b099d7
Packit b099d7
/* mrmtime.c */
Packit b099d7
extern void Urm__UT_Time  _ARGUMENTS(( char *time_stg ));
Packit b099d7
Packit b099d7
/* mrmvm.c */
Packit b099d7
extern String Urm__UT_AllocString  _ARGUMENTS(( String stg ));
Packit b099d7
Packit b099d7
/* mrmwci.c */
Packit b099d7
extern Cardinal Urm__WCI_RegisterNames  _ARGUMENTS(( String *names , 
Packit b099d7
							XtPointer *values , 
Packit b099d7
							MrmCount num_cb ));
Packit b099d7
extern Cardinal Urm__WCI_UnregisterName  _ARGUMENTS(( String name ));
Packit b099d7
extern Cardinal Urm__WCI_LookupClassDescriptor  _ARGUMENTS(( String class_name , 
Packit b099d7
								WCIClassDescPtr *class_return ));
Packit b099d7
extern WidgetClass Urm__WCI_GetClRecOfName  _ARGUMENTS(( String clname ));
Packit b099d7
extern Cardinal Urm__WCI_LookupRegisteredName  _ARGUMENTS(( String name , 
Packit b099d7
							    XtPointer *value_return ));
Packit b099d7
extern void hash_initialize  _ARGUMENTS(( URMHashTableEntryPtr *htable , 
Packit b099d7
					    Boolean *initflag ));
Packit b099d7
extern URMHashTableEntryPtr hash_find_name  _ARGUMENTS(( URMHashTableEntryPtr *htable , 
Packit b099d7
							    char *c_text ));
Packit b099d7
extern URMHashTableEntryPtr hash_insert_name  _ARGUMENTS(( URMHashTableEntryPtr *htable , 
Packit b099d7
							    char *c_text ));
Packit b099d7
extern URMHashTableEntryPtr hash_delete_name  _ARGUMENTS(( URMHashTableEntryPtr *htable , 
Packit b099d7
							    char *c_text ));
Packit b099d7
Packit b099d7
/* mrmwcrw.c */
Packit b099d7
extern Cardinal UrmCreateWidgetTree 
Packit b099d7
                               _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
					    Widget parent , 
Packit b099d7
					    MrmHierarchy hierarchy_id , 
Packit b099d7
					    IDBFile file_id , 
Packit b099d7
					    String ov_name , 
Packit b099d7
					    ArgList ov_args , 
Packit b099d7
					    Cardinal ov_num_args , 
Packit b099d7
					    MrmCode keytype , 
Packit b099d7
					    String kindex , 
Packit b099d7
					    MrmResource_id krid , 
Packit b099d7
					    MrmManageFlag manage ,
Packit b099d7
					    URMPointerListPtr *svlist , 
Packit b099d7
					    URMResourceContextPtr wref_id , 
Packit b099d7
					    Widget *w_return ));
Packit b099d7
extern Cardinal UrmCreateWidgetInstance  
Packit b099d7
                               _ARGUMENTS((URMResourceContextPtr context_id , 
Packit b099d7
					   Widget parent , 
Packit b099d7
					   MrmHierarchy hierarchy_id , 
Packit b099d7
					   IDBFile file_id , 
Packit b099d7
					   String ov_name , 
Packit b099d7
					   ArgList ov_args , 
Packit b099d7
					   Cardinal ov_num_args , 
Packit b099d7
					   MrmCode keytype , 
Packit b099d7
					   String kindex , 
Packit b099d7
					   MrmResource_id krid ,
Packit b099d7
					   MrmManageFlag manage,
Packit b099d7
					   URMPointerListPtr *svlist , 
Packit b099d7
					   URMResourceContextPtr wref_id , 
Packit b099d7
					   Widget *w_return,
Packit b099d7
					   char **w_name));
Packit b099d7
extern Cardinal UrmCreateOrSetWidgetInstance  
Packit b099d7
                               _ARGUMENTS((URMResourceContextPtr context_id , 
Packit b099d7
					   Widget parent , 
Packit b099d7
					   MrmHierarchy hierarchy_id , 
Packit b099d7
					   IDBFile file_id , 
Packit b099d7
					   String ov_name , 
Packit b099d7
					   ArgList ov_args , 
Packit b099d7
					   Cardinal ov_num_args , 
Packit b099d7
					   MrmCode keytype , 
Packit b099d7
					   String kindex , 
Packit b099d7
					   MrmResource_id krid , 
Packit b099d7
					   MrmManageFlag manage ,
Packit b099d7
					   URMPointerListPtr *svlist , 
Packit b099d7
					   URMResourceContextPtr wref_id , 
Packit b099d7
					   Widget *w_return,
Packit b099d7
					   char **w_name));
Packit b099d7
extern Cardinal UrmSetWidgetInstance  
Packit b099d7
                               _ARGUMENTS((URMResourceContextPtr context_id , 
Packit b099d7
					   Widget parent , 
Packit b099d7
					   MrmHierarchy hierarchy_id , 
Packit b099d7
					   IDBFile file_id , 
Packit b099d7
					   ArgList ov_args , 
Packit b099d7
					   Cardinal ov_num_args , 
Packit b099d7
					   MrmCode keytype , 
Packit b099d7
					   String kindex , 
Packit b099d7
					   MrmResource_id krid , 
Packit b099d7
					   MrmManageFlag manage ,
Packit b099d7
					   URMPointerListPtr *svlist , 
Packit b099d7
					   URMResourceContextPtr wref_id , 
Packit b099d7
					   Widget *w_return ));
Packit b099d7
extern void Urm__CW_CreateArglist  _ARGUMENTS(( Widget parent , 
Packit b099d7
						RGMWidgetRecordPtr widgetrec , 
Packit b099d7
						RGMArgListDescPtr argdesc , 
Packit b099d7
						URMPointerListPtr ctxlist , 
Packit b099d7
						URMPointerListPtr cblist,
Packit b099d7
					        URMPointerListPtr ftllist , 
Packit b099d7
						MrmHierarchy hierarchy_id , 
Packit b099d7
						IDBFile file_id , 
Packit b099d7
						ArgList args , 
Packit b099d7
						URMPointerListPtr *svlist , 
Packit b099d7
						URMResourceContextPtr wref_id , 
Packit b099d7
						Cardinal *num_used ));
Packit b099d7
extern long Urm__CW_EvaluateValOrOffset  _ARGUMENTS(( MrmType reptype , 
Packit b099d7
						XtPointer bufptr , 
Packit b099d7
						long ival , 
Packit b099d7
						MrmOffset offset ));
Packit b099d7
extern Cardinal Urm__CW_FixupValue  _ARGUMENTS(( long val , 
Packit b099d7
						 MrmType reptype , 
Packit b099d7
						 XtPointer bufptr ,
Packit b099d7
						 IDBFile file_id ,
Packit b099d7
						 Boolean *swap_needed));
Packit b099d7
extern String Urm__CW_DisplayToString _ARGUMENTS(( char *val ,
Packit b099d7
						    String add_string ,
Packit b099d7
						    int add_string_size ));
Packit b099d7
extern Cardinal Urm__CW_ConvertValue  _ARGUMENTS((  Widget parent,
Packit b099d7
						    long *val , 
Packit b099d7
						    MrmType reptype , 
Packit b099d7
						    MrmType cvttype , 
Packit b099d7
						    Display *display , 
Packit b099d7
						    MrmHierarchy hierarchy_id , 
Packit b099d7
						    URMPointerListPtr ftllist ));
Packit b099d7
extern void Urm__CW_SafeCopyValue  _ARGUMENTS(( long *val , 
Packit b099d7
						MrmType reptype , 
Packit b099d7
					        URMPointerListPtr cblist,
Packit b099d7
						int vec_count ,
Packit b099d7
					        int vec_size ));
Packit b099d7
extern void UrmDestroyCallback _ARGUMENTS((Widget w ,
Packit b099d7
					    URMPointerListPtr list_id ,
Packit b099d7
					    XmAnyCallbackStruct *reason));
Packit b099d7
extern Cardinal Urm__CW_ReadLiteral  _ARGUMENTS(( RGMResourceDescPtr resptr , 
Packit b099d7
						  MrmHierarchy hierarchy_id , 
Packit b099d7
						  IDBFile file_id , 
Packit b099d7
						  URMPointerListPtr ctxlist , 
Packit b099d7
						  MrmType *type , 
Packit b099d7
						  long *val , 
Packit b099d7
						  int *vec_count , 
Packit b099d7
						  IDBFile *act_file_id ,
Packit b099d7
						  int *vec_size ));
Packit b099d7
extern Cardinal Urm__CW_LoadIconImage  _ARGUMENTS(( RGMIconImagePtr iconptr , 
Packit b099d7
						    XtPointer bufptr , 
Packit b099d7
						    MrmHierarchy hierarchy_id , 
Packit b099d7
						    IDBFile file_id , 
Packit b099d7
						    URMPointerListPtr ctxlist ));
Packit b099d7
extern Cardinal Urm__CW_FixupCallback  _ARGUMENTS(( Widget parent , 
Packit b099d7
						    XtPointer bufptr , 
Packit b099d7
						    RGMCallbackDescPtr cbdesc , 
Packit b099d7
						    URMPointerListPtr ctxlist , 
Packit b099d7
						    URMPointerListPtr cblist , 
Packit b099d7
						    MrmHierarchy hierarchy_id , 
Packit b099d7
						    IDBFile file_id ,
Packit b099d7
						    URMResourceContextPtr   wref_id));
Packit b099d7
extern Cardinal Urm__CW_LoadWidgetResource  _ARGUMENTS(( Widget parent , 
Packit b099d7
						    RGMWidgetRecordPtr widgetrec , 
Packit b099d7
						    RGMResourceDescPtr resptr , 
Packit b099d7
						    URMPointerListPtr ctxlist , 
Packit b099d7
						    MrmHierarchy hierarchy_id , 
Packit b099d7
						    IDBFile file_id , 
Packit b099d7
						    URMPointerListPtr *svlist , 
Packit b099d7
						    URMResourceContextPtr wref_id , 
Packit b099d7
						    long *val ));
Packit b099d7
extern void Urm__CW_GetPixmapParms  _ARGUMENTS(( Widget w , 
Packit b099d7
						    Screen **screen , 
Packit b099d7
						    Display **display , 
Packit b099d7
						    Pixel *fgint , 
Packit b099d7
						    Pixel *bgint ));
Packit b099d7
extern RGMCallbackDescPtr 
Packit b099d7
  Urm__CW_TranslateOldCallback _ARGUMENTS(( OldRGMCallbackDescPtr oldptr));
Packit b099d7
Packit b099d7
/* mrmwcrwr.c */
Packit b099d7
extern Cardinal UrmCWRInit  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
					    String name , 
Packit b099d7
					    MrmCode access , 
Packit b099d7
					    MrmCode lock ));
Packit b099d7
extern Cardinal UrmCWRSetClass  _ARGUMENTS(( URMResourceContextPtr context_id, 
Packit b099d7
					     MrmCode type, 
Packit b099d7
					     String urm_class,
Packit b099d7
					     unsigned long variety ));
Packit b099d7
extern Cardinal UrmCWRInitArglist  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						Cardinal nargs ));
Packit b099d7
extern Cardinal UrmCWRSetCompressedArgTag  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							Cardinal arg_ndx , 
Packit b099d7
							MrmCode tag , 
Packit b099d7
							MrmCode related_tag ));
Packit b099d7
extern Cardinal UrmCWRSetUncompressedArgTag  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							    Cardinal arg_ndx , 
Packit b099d7
							    String tag ));
Packit b099d7
extern Cardinal UrmCWRSetArgValue  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						Cardinal arg_ndx , 
Packit b099d7
						MrmCode type , 
Packit b099d7
						unsigned long arg_val ));
Packit b099d7
extern Cardinal UrmCWRSetArgResourceRef  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							Cardinal arg_ndx , 
Packit b099d7
							MrmCode access , 
Packit b099d7
							MrmGroup group , 
Packit b099d7
							MrmCode type , 
Packit b099d7
							MrmCode key_type , 
Packit b099d7
							String index , 
Packit b099d7
							MrmResource_id resource_id ));
Packit b099d7
extern Cardinal UrmCWRSetArgChar8Vec  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    Cardinal arg_ndx , 
Packit b099d7
						    String *stg_vec , 
Packit b099d7
						    MrmCount num_stg ));
Packit b099d7
extern Cardinal UrmCWRSetArgCStringVec  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							Cardinal arg_ndx , 
Packit b099d7
							XmString *cstg_vec , 
Packit b099d7
							MrmCount num_cstg ));
Packit b099d7
extern Cardinal UrmCWRSetArgCallback  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    Cardinal arg_ndx , 
Packit b099d7
						    Cardinal nitems , 
Packit b099d7
						    MrmOffset *cb_offs_return ));
Packit b099d7
extern Cardinal UrmCWRSetCallbackItem  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    MrmOffset cb_offs , 
Packit b099d7
						    Cardinal item_ndx , 
Packit b099d7
						    String routine , 
Packit b099d7
						    MrmCode type , 
Packit b099d7
						    unsigned long itm_val ));
Packit b099d7
extern Cardinal UrmCWRSetCallbackItemRes  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							MrmOffset cb_offs , 
Packit b099d7
							Cardinal item_ndx , 
Packit b099d7
							String routine , 
Packit b099d7
							MrmGroup group , 
Packit b099d7
							MrmCode access , 
Packit b099d7
							MrmCode type , 
Packit b099d7
							MrmCode key_type , 
Packit b099d7
							String index , 
Packit b099d7
							MrmResource_id resource_id ));
Packit b099d7
extern Cardinal UrmCWRSetExtraArgs  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    Cardinal nextra ));
Packit b099d7
extern Cardinal UrmCWRInitChildren  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    Cardinal nchildren ));
Packit b099d7
extern Cardinal UrmCWRSetChild  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						Cardinal child_ndx , 
Packit b099d7
						Boolean manage , 
Packit b099d7
						MrmCode access , 
Packit b099d7
						MrmCode key_type , 
Packit b099d7
						String index , 
Packit b099d7
						MrmResource_id resource_id ));
Packit b099d7
extern Cardinal UrmCWRSetComment  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						String comment ));
Packit b099d7
extern Cardinal UrmCWRSetCreationCallback  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							Cardinal nitems , 
Packit b099d7
							MrmOffset *cb_offs_return ));
Packit b099d7
extern Cardinal UrmCWR__AppendString  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    String stg , 
Packit b099d7
						    MrmOffset *offset ));
Packit b099d7
extern Cardinal UrmCWR__AppendCString  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    XmString cstg , 
Packit b099d7
						    MrmOffset *offset ));
Packit b099d7
extern Cardinal UrmCWR__AppendWcharString  
Packit b099d7
                               _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
					    wchar_t *wcs , 
Packit b099d7
					    MrmOffset *offset ));
Packit b099d7
extern Cardinal UrmCWR__GuaranteeSpace  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							MrmSize delta , 
Packit b099d7
							MrmOffset *offset , 
Packit b099d7
							char **addr ));
Packit b099d7
extern Cardinal UrmCWR__AppendResource  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							MrmCode access , 
Packit b099d7
							MrmCode group , 
Packit b099d7
							MrmCode type , 
Packit b099d7
							MrmCode key_type , 
Packit b099d7
							String index , 
Packit b099d7
							MrmResource_id resource_id , 
Packit b099d7
							MrmOffset *offset ));
Packit b099d7
extern Cardinal UrmCWR__ValidateContext  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							String routine));
Packit b099d7
extern Cardinal UrmCWR__BindArgPtrs  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
						    String routine , 
Packit b099d7
						    Cardinal argndx , 
Packit b099d7
						    RGMArgListDescPtr *descptr , 
Packit b099d7
						    RGMArgumentPtr *argptr ));
Packit b099d7
extern Cardinal UrmCWR__BindCallbackPtrs  _ARGUMENTS(( URMResourceContextPtr context_id , 
Packit b099d7
							String routine , 
Packit b099d7
							MrmOffset descoffs , 
Packit b099d7
							Cardinal itemndx , 
Packit b099d7
							RGMCallbackDescPtr *descptr , 
Packit b099d7
							RGMCallbackItemPtr *itmptr ));
Packit b099d7
Packit b099d7
/* mrmwread.c */
Packit b099d7
extern Cardinal UrmHGetWidget  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
						String index , 
Packit b099d7
						URMResourceContextPtr context_id , 
Packit b099d7
						IDBFile *file_id_return ));
Packit b099d7
extern Cardinal UrmGetIndexedWidget  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    String index , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmGetRIDWidget  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						MrmResource_id resource_id , 
Packit b099d7
						URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmwrefs.c */
Packit b099d7
extern Cardinal Urm__CW_InitWRef  _ARGUMENTS(( URMResourceContextPtr *wref_id ));
Packit b099d7
extern Cardinal Urm__CW_AddWRef  _ARGUMENTS(( URMResourceContextPtr wref_id , 
Packit b099d7
						String w_name , 
Packit b099d7
						Widget w_id ));
Packit b099d7
extern Cardinal Urm__CW_FindWRef  _ARGUMENTS(( URMResourceContextPtr wref_id , 
Packit b099d7
						String w_name , 
Packit b099d7
						Widget *w_id_return ));
Packit b099d7
extern void Urm__CW_AppendSVWidgetRef  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    URMPointerListPtr *svlist , 
Packit b099d7
						    String w_name , 
Packit b099d7
						    MrmCode argtag , 
Packit b099d7
						    String argname ));
Packit b099d7
extern void Urm__CW_AppendCBSVWidgetRef _ARGUMENTS((IDBFile file_id, 
Packit b099d7
						    URMPointerListPtr *svlist,
Packit b099d7
						    RGMCallbackDescPtr cbptr, 
Packit b099d7
						    MrmCode argtag, 
Packit b099d7
						    String argname));
Packit b099d7
extern void Urm__CW_UpdateSVWidgetRef  _ARGUMENTS(( URMPointerListPtr *svlist , 
Packit b099d7
						    Widget cur_id ));
Packit b099d7
extern void Urm__CW_ResolveSVWidgetRef  _ARGUMENTS(( URMPointerListPtr *svlist , 
Packit b099d7
						    String cur_name , 
Packit b099d7
						    Widget cur_id ));
Packit b099d7
Packit b099d7
extern void Urm__CW_FreeSetValuesDesc _ARGUMENTS((URMSetValuesDescPtr svdesc));
Packit b099d7
     
Packit b099d7
Packit b099d7
/* mrmwvalues.c */
Packit b099d7
extern Cardinal UrmFetchSetValues  _ARGUMENTS(( MrmHierarchy hierarchy_id , 
Packit b099d7
						Widget w , 
Packit b099d7
						ArgList args , 
Packit b099d7
						Cardinal num_args ));
Packit b099d7
Packit b099d7
/* mrmwwrite.c */
Packit b099d7
extern Cardinal UrmPutIndexedWidget  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						    String index , 
Packit b099d7
						    URMResourceContextPtr context_id ));
Packit b099d7
extern Cardinal UrmPutRIDWidget  _ARGUMENTS(( IDBFile file_id , 
Packit b099d7
						MrmResource_id resource_id , 
Packit b099d7
						URMResourceContextPtr context_id ));
Packit b099d7
Packit b099d7
/* mrmiswap.c */
Packit b099d7
extern Cardinal Idb__BM_SwapRecordBytes _ARGUMENTS(( IDBRecordBufferPtr	buffer ));
Packit b099d7
extern unsigned Urm__SwapValidation _ARGUMENTS(( unsigned validation ));
Packit b099d7
extern Cardinal Urm__SwapRGMResourceDesc _ARGUMENTS(( RGMResourceDescPtr res_desc ));
Packit b099d7
extern Cardinal Urm__SwapRGMCallbackDesc _ARGUMENTS(( RGMCallbackDescPtr callb_desc,
Packit b099d7
					      RGMWidgetRecordPtr widget_rec ));
Packit b099d7
extern Cardinal Urm__SwapRGMWidgetRecord _ARGUMENTS(( RGMWidgetRecordPtr widget_rec ));
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * string copy macro
Packit b099d7
 */
Packit b099d7
Packit b099d7
/* If the alignment characteristics of your machine are right, these may be
Packit b099d7
   faster */
Packit b099d7
Packit b099d7
#ifdef UNALIGNED
Packit b099d7
Packit b099d7
#define UrmBCopy(src, dst, size)                            \
Packit b099d7
    if (size == sizeof(long))                               \
Packit b099d7
        *((long *) (dst)) = *((long *) (src));              \
Packit b099d7
    else if (size == sizeof(int))                           \
Packit b099d7
        *((int *) (dst)) = *((int *) (src));                \
Packit b099d7
    else if (size == sizeof(short))                         \
Packit b099d7
        *((short *) (dst)) = *((short *) (src));            \
Packit b099d7
    else if (size == sizeof(char))                          \
Packit b099d7
        *((char *) (dst)) = *((char *) (src));              \
Packit b099d7
    else                                                    \
Packit b099d7
        memmove((char *) (dst), (char *) (src), (int) (size));
Packit b099d7
Packit b099d7
#else
Packit b099d7
 
Packit b099d7
#define UrmBCopy(src, dst, size)                \
Packit b099d7
        memmove((char *) (dst), (char *) (src), (int) (size));
Packit b099d7
Packit b099d7
#endif /* UNALIGNED */
Packit b099d7
Packit b099d7
/********    Conditionally defined macros for thread_safe DtTerm ******/
Packit b099d7
#ifdef XTHREADS
Packit b099d7
#define _MrmWidgetToAppContext(w) \
Packit b099d7
        XtAppContext app = XtWidgetToApplicationContext(w)
Packit b099d7
#define _MrmDisplayToAppContext(d) \
Packit b099d7
        XtAppContext app = XtDisplayToApplicationContext(d)
Packit b099d7
#define _MrmAppLock(app) XtAppLock(app)
Packit b099d7
#define _MrmAppUnlock(app) XtAppUnlock(app)
Packit b099d7
#define _MrmProcessLock() XtProcessLock()
Packit b099d7
#define _MrmProcessUnlock() XtProcessUnlock()
Packit b099d7
#else /* XTHREADS */
Packit b099d7
#define _MrmWidgetToAppContext(w)
Packit b099d7
#define _MrmDisplayToAppContext(d)
Packit b099d7
#define _MrmAppLock(app)
Packit b099d7
#define _MrmAppUnlock(app)
Packit b099d7
#define _MrmProcessLock()
Packit b099d7
#define _MrmProcessUnlock()
Packit b099d7
#endif /* XTHREADS */
Packit b099d7
Packit b099d7
#endif /* Mrm_H */
Packit b099d7
/* DON'T ADD STUFF AFTER THIS #endif */