home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / osi / isode / vmsisode / vmsisode80_tar.Z / vmsisode80_tar / sockit / gccinclude / x11 / decwdrm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-24  |  50.1 KB  |  1,609 lines

  1. /*  DEC/CMS REPLACEMENT HISTORY, Element DECWDRM.H */
  2. /*  *8    27-FEB-1988 17:25:59 GEORGE "Cleanup copyrights" */
  3. /*  *7    24-FEB-1988 18:49:03 FANEUF "FT version" */
  4. /*  *6     5-FEB-1988 14:01:37 FANEUF "Fix compilation errors by using ifdef/ifndef VAXC" */
  5. /*  *5    28-JAN-1988 13:07:57 FANEUF "Fix typo in DRMERROR protos, add them to UNIX" */
  6. /*  *4    27-JAN-1988 15:52:40 FANEUF "Literals to support improved error handling" */
  7. /*  *3    19-JAN-1988 17:14:38 FANEUF "" */
  8. /*  *2     7-JAN-1988 19:55:44 ORGOVAN "Replace with completely new version" */
  9. /*  *1     7-JAN-1988 19:44:01 ORGOVAN "Initial Entry" */
  10. /*  DEC/CMS REPLACEMENT HISTORY, Element DECWDRM.H */
  11. /*
  12.  *=======================================================================
  13.  *
  14.  *              COPYRIGHT (c) 1987 BY
  15.  *          DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
  16.  *               ALL RIGHTS RESERVED
  17.  *
  18.  * THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
  19.  * ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
  20.  * INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
  21.  * COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
  22.  * OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
  23.  * TRANSFERRED. 
  24.  *
  25.  * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
  26.  * AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
  27.  * CORPORATION.
  28.  *
  29.  * DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
  30.  * SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
  31.  *
  32.  *=======================================================================
  33.  *
  34.  * FILE HISTORY
  35.  *=======================================================================
  36.  * 1-000    - Original RAF
  37.  * 1-001    - Changed DRMReadAccess to 0.  DJM 10-Dec-1987.
  38.  * 1-002    - Changed DRMReadAccess to 1, DRMWriteAccess to 2.
  39.  *          Added NULL, TRUE, FALSE to definitions. RAF 10-Dec-1987
  40.  * 1-003    - Add external references to VM zone ids. DJM 10-Dec-1987
  41.  * 1-004    - Make zone ID's constants.  DJM 11-Dec-1987.
  42.  * 1-005    - Redefined groups. Added context macros. RAF 11-Dec-1987.
  43.  * 1-006    - Add operating specific OPEN parameter. DJM 29-Dec-1987.
  44.  */
  45.  
  46. #define    decwdrm_h    1
  47. #ifdef VAXC
  48. #pragma nomember_alignment
  49. #endif
  50.  
  51. /*
  52.  * This file defines all literals and structs required both to use
  53.  * DRM externally, and to support internal DRM programming. Any struct
  54.  * referenced in a publicly accessible routine is defined here, including
  55.  * some IDB and hierarchy structs.
  56.  */
  57.  
  58.  
  59. /*
  60.  * Extended language functions
  61.  */
  62.  
  63. /*
  64. **  The PCC counterpart to extern is globalref/globaldef.
  65. **  Define external and externaldef so they work correctly
  66. **  on the 2 compilers.
  67. */
  68.  
  69.  
  70. #ifndef externaldef
  71. #ifdef VAXC
  72. #define external globalref
  73. #define externaldef
  74. #else
  75. #define external extern
  76. #define externaldef
  77. #endif
  78. #endif
  79.  
  80.  
  81.  
  82. /*
  83.  * covers for things defined elsewhere
  84.  */
  85.  
  86. /*
  87.  * From DECWDWTAPPLPROG.h
  88.  */
  89. #ifndef WIDGETPROG
  90. #ifndef APPLPROG
  91. typedef unsigned int Widget;
  92. typedef char *String;
  93. #endif
  94. #endif
  95.  
  96. /*
  97.  * From INTRINSIC.h
  98.  */
  99. #ifndef _XtIntrinsic_h
  100.  
  101. typedef unsigned int    Cardinal;
  102. typedef char        Boolean;
  103. typedef    char        *WidgetClass ;    /* fake pointer def */
  104. typedef    unsigned long    Pixel;
  105. #endif
  106.  
  107. /*
  108.  * From XRESOURCE.h
  109.  */
  110. #ifndef CADDR_T
  111. typedef char * caddr_t;
  112. #define CADDR_T
  113. #endif
  114.  
  115. /*
  116.  * From X.h
  117.  */
  118. #ifndef    X_H
  119. typedef    unsigned long    Pixmap ;
  120. typedef    unsigned long    Colormap ;
  121. #endif
  122.  
  123. #ifndef NULL
  124. #define    NULL        0
  125. #endif
  126.  
  127. #ifndef TRUE
  128. #define    TRUE        1
  129. #endif
  130.  
  131. #ifndef FALSE
  132. #define    FALSE        0
  133. #endif
  134.  
  135. #ifndef MIN
  136. #define MIN(x,y)    ((x) < (y) ? (x) : (y))
  137. #endif
  138. #ifndef MAX
  139. #define MAX(x,y)    ((x) > (y) ? (x) : (y))
  140. #endif
  141.  
  142. #ifndef ASSIGN_MAX
  143. #define ASSIGN_MAX(x, y) if ((y) > (x)) x = (y)
  144. #endif
  145. #ifndef ASSIGN_MIN
  146. #define ASSIGN_MIN(x, y) if ((y) < (x)) x = (y)                         
  147. #endif
  148.  
  149.  
  150.  
  151. /*
  152.  * DRM-wide constants
  153.  */
  154.  
  155. /*
  156.  * Success or other non-error return codes
  157.  */
  158. #define    DRMSuccess    1
  159. #define DRMCreateNew    3
  160. #define    DRMIndexRetry    5    /* Retry on entering index required */
  161. #define    DRMIndexGT    7    /* Index orders greater-than entry */
  162. #define    DRMIndexLT    9    /* Index orders less-than entry */
  163.  
  164. /*
  165.  * Failure return codes
  166.  */
  167. #define    DRMFailure    0
  168. #define    DRMNotFound    2
  169. #define    DRMExists    4
  170. #define    DRMNulGroup    6
  171. #define    DRMNulType    8
  172. #define    DRMWrongGroup    10
  173. #define    DRMWrongType    12
  174. #define    DRMOutOfRange    14    /* Record number too big */
  175. #define    DRMBadRecord    16    /* Record number wrong type */
  176. #define    DRMNullData    18    /* No data for entry */
  177. #define    DRMBadDataIndex    20    /* Data index in RID out of range */
  178. #define    DRMBadOrder    22    /* Bad ordering specifier */
  179. #define    DRMBadContext    24    /* Invalid DRM context */
  180. #define    DRMNotValid    26    /* Validation failure */
  181. #define    DRMBadBTree    28    /* GT/LT pointer error in BTree */
  182. #define    DRMBadWidgetRec    30    /* Validation failure on widget record */
  183. #define    DRMBadClassType    32    /* Class type not a valid DRMwc... value */
  184. #define    DRMNoClassName    34    /* User class name is null */
  185. #define    DRMTooMany    36    /* Too many entries requested in some list */
  186. #define    DRMBadIFModule    38    /* invalid interface module */
  187. #define    DRMNullDesc    40    /* Arglist or children descriptor null */
  188. #define    DRMOutOfBounds    42    /* Argument index out of arglist bounds */
  189. #define    DRMBadCompress    44    /* Invalid compression code */
  190. #define    DRMBadArgType    46    /* Invalid type, not in RGMrType... */
  191. #define    DRMNotImp    48    /* Not yet implemented */
  192. #define    DRMNullIndex    50    /* empty index string */
  193. #define    DRMBadKeyType    52    /* key must be DRMrIndex or DRMrRID */
  194. #define    DRMBadCallback    54    /* Invalid callback descriptor */
  195. #define    DRMNullRoutine    56    /* Empty callback routine name string */
  196. #define    DRMVecTooBig    58    /* too many elements in vector */
  197. #define    DRMBadHierarchy    60    /* invalid DRM file hierarchy */
  198. #define    DRMBadClassCode    62    /* Class code not found in DRMwc... */
  199. #define    DRMBadMsgType    64    /* Message type not in RGMmt... */
  200. #define    DRMBadMessage    66    /* Message record invalid */
  201.  
  202. /*
  203.  * Error reporting destinations
  204.  */
  205. #define    DRMErrOutMemory    1    /* Save error messages in memory, no print */
  206. #define    DRMErrOutStdout    2    /* print error messages to stdout */
  207.  
  208. /*
  209.  * Memory allocation zone id's
  210.  */
  211. #define DRMcBufferZone    1
  212. #define DRMcWidgetZone    2
  213. #define DRMcMiscZone    3
  214.  
  215.  
  216. /*
  217.  * Resource classes and types
  218.  */
  219. #define    DRMgNul        0
  220. #define    DRMgWidget    1        /* types in DRMwc... */
  221. #define    DRMgLiteral    2        /* types in RGMrType... */
  222. #define    DRMgResourceSet    3        /* type in DRMrs... */
  223. #define    DRMgXRM        4
  224. #define    DRMgMessage    5
  225.  
  226. #define DRMgMin        1        /* lowest legal group value */
  227. #define    DRMgMax        5        /* highest legal group value */
  228. #define    DRMgVecSize    DRMgMax+1    /* To size any vectors */
  229.  
  230. /*
  231.  * The null resource type
  232.  */
  233. #define    DRMtNul        0
  234.  
  235.  
  236. /*
  237.  * Access types
  238.  */
  239. #define    DRMaPublic    1
  240. #define    DRMaPrivate    2
  241.  
  242. /*
  243.  * Index types. Immediate is included for the convenience of the UIL compiler
  244.  */
  245. #define    DRMrIndex    1
  246. #define    DRMrRID        2
  247. #define    DRMrImmediate    3
  248.  
  249. /*
  250.  * Maximum number of characters in an index
  251.  */
  252. #define    DRMMaxIndexLen    31
  253. #define    DRMMaxIndexLen1    (DRMMaxIndexLen + 1)    /* to size vectors */
  254.  
  255.  
  256. /*
  257.  * File open access types
  258.  */
  259. #define    DRMReadAccess    1
  260. #define    DRMWriteAccess    2
  261.  
  262. /*
  263.  * Standard file type for DRM database files
  264.  */
  265. #define    DRMFileType    ".UID"
  266.  
  267.  
  268. /*
  269.  * Compressed string codes
  270.  */
  271. #ifndef decwdrmcompress_h
  272. #include <decw$include/DECwDrmCompress.h>
  273. #endif
  274.  
  275.  
  276. /*
  277.  * Standard date string length
  278.  */
  279. #define    DRMhsDate        29        /* any date string */
  280.  
  281.  
  282. /*
  283.  * Statistics/timing state
  284.  */
  285. #define    DRMStatNone        0        /* no statistics */
  286. #define    DRMStatDRMOnly        1        /* allow DRM events only */
  287. #define    DRMStatAll        2        /* allow all events */
  288.  
  289.  
  290.  
  291. /*
  292.  * Definitions associated with widget representations
  293.  */
  294.  
  295. /*
  296.  * Widget types. These name all builtin toolkit and SDT widgets. The
  297.  * existence of an entry here is determined by the existence of a
  298.  * unique low-level creation routine for the widget. DRM defines a
  299.  * distinct class for each instance of a low-level create routine.
  300.  *
  301.  */
  302.  
  303. #define DRMwcMin        1    /* minimum legal value */
  304. #define    DRMwcUnknown        1    /* Not a built-in */
  305.  
  306. /*
  307.  * Toolkit widgets
  308.  */
  309. #define    DRMwcLabel        2
  310. #define    DRMwcPushButton        3
  311. #define    DRMwcToggleButton    4
  312. #define    DRMwcDialogBox        5
  313. #define    DRMwcDialogBoxPopup    6
  314. #define    DRMwcMenuBar        7
  315. #define    DRMwcOptionMenu        8
  316. #define    DRMwcRadioBox        9
  317. #define    DRMwcWorkAreaMenu    10
  318. #define    DRMwcPulldownMenu    11
  319. #define    DRMwcPopupMenu        12
  320. #define    DRMwcPulldownMenuEntry    13
  321. #define    DRMwcScrollBar        14
  322. #define    DRMwcListBox        15
  323. #define    DRMwcMainWindow        16
  324. #define    DRMwcCommandWindow    17
  325. #define    DRMwcMessageBox        18
  326. #define    DRMwcFileSelect        19
  327. #define    DRMwcCautionBox        20
  328. #define    DRMwcScale        21
  329. #define    DRMwcWorkBox        22
  330. #define    DRMwcSeparator        23
  331. #define    DRMwcPane        24
  332. #define    DRMwcColorSelect    25
  333. #define    DRMwcSText        26
  334. #define    DRMwcText        27
  335. #define    DRMwcWindow        28
  336. #define    DRMwcScrollWindow    29
  337.  
  338. /*
  339.  * SDT widgets
  340.  */
  341.  
  342. /*
  343.  * Maximum legal value and vector size
  344.  */
  345. #define    DRMwcMax        29
  346. #define    DRMwcVecSize        (DRMwcMax+1)
  347.  
  348.  
  349.  
  350. /*
  351.  * RGM definitions of widget class names
  352.  */
  353. /*
  354.  * Toolkit widgets
  355.  */
  356. #define    DRMwcnLabel        "Label"
  357. #define    DRMwcnPushButton    "Push Button"
  358. #define    DRMwcnToggleButton    "Toggle Button"
  359. #define    DRMwcnDialogBox        "Dialog Box"
  360. #define    DRMwcnDialogBoxPopup    "Popup Dialog Box"
  361. #define    DRMwcnMenuBar        "Menu Bar"
  362. #define    DRMwcnOptionMenu    "Option Menu"
  363. #define    DRMwcnRadioBox        "Radio Box"
  364. #define    DRMwcnWorkAreaMenu    "Work Area Menu"
  365. #define    DRMwcnPulldownMenu    "Pulldown Menu"
  366. #define    DRMwcnPopupMenu        "Popup Menu"
  367. #define    DRMwcnPulldownMenuEntry    "Pulldown Menu Entry"
  368. #define    DRMwcnScrollBar        "Scroll Bar"
  369. #define    DRMwcnListBox        "List Box"
  370. #define    DRMwcnMainWindow    "Main Window"
  371. #define    DRMwcnCommandWindow    "Command Window"
  372. #define    DRMwcnMessageBox    "Message Box"
  373. #define    DRMwcnFileSelect    "File Select"
  374. #define    DRMwcnCautionBox    "Caution Box"
  375. #define    DRMwcnScale        "Scale"
  376. #define    DRMwcnWorkBox        "Work Box"
  377. #define    DRMwcnSeparator        "Separator"
  378. #define    DRMwcnPane        "Pane"
  379. #define    DRMwcnColorSelect    "Color Select"
  380. #define    DRMwcnSText        "Simple Text"
  381. #define    DRMwcnText        "Text"
  382. #define    DRMwcnWindow        "Window"
  383. #define    DRMwcnScrollWindow    "Scroll Window"
  384.  
  385. /*
  386.  * SDT widgets
  387.  */
  388.  
  389.  
  390.  
  391.  
  392. /*
  393.  * The following define the representation type in widget arglist
  394.  * arguments, i.e. specify the actual representation of values
  395.  * in an argument. A subset of these is used to define literal types
  396.  * for RGMgLiteral resources.
  397.  */
  398. #define    RGMrTypeMin        1
  399. #define    RGMrTypeInteger        1    /* int */
  400. #define    RGMrTypeBoolean        2
  401. #define    RGMrTypeChar8        3    /* a nul-terminated string */
  402. #define    RGMrTypeChar8Vector    4    /* a vector of char_8 strings */
  403. #define    RGMrTypeDDISitem    5
  404. #define    RGMrTypeDDISitemVector    6
  405. #define    RGMrTypeFloat        7
  406. #define    RGMrTypeCompressed    8    /* code for a compressed string */
  407. #define    RGMrTypeCallback    9    /* code for a callback descriptor */
  408. #define    RGMrTypePixmapImage    10    /* Pixmap in image form */
  409. #define    RGMrTypePixmapDDIF    11    /* Pixmap in DDIF form */
  410. #define    RGMrTypeResource    12    /* DRM resource descriptor */
  411. #define    RGMrTypeNull        13    /* no value given */
  412. #define    RGMrTypeAddrName    14    /* nul-terminated string to be
  413.                        interpreted as runtime address */
  414. #define    RGMrTypeBitmapImage    15    /* DWICS/DRM bitmap image */
  415. #define    RGMrTypeMax        15
  416.  
  417.  
  418. /*
  419.  * Types of resource sets.
  420.  */
  421. #define    DRMrsInterfaceModule    1    /* Interface module */
  422.  
  423.  
  424. /*
  425.  * The maximum number of arguments allowed in an arglist or children in
  426.  * a child list. A number intended to catch gross errors.
  427.  */
  428. #define    RGMListSizeMax        1000
  429.  
  430.  
  431. /*
  432.  * Message types
  433.  */
  434. #define    RGMmtType1        1    /* Type 1 message (first defined) */
  435.  
  436. /*
  437.  * Message severity levels. These are identical to VMS definitions...
  438.  */
  439. #define    RGMmsWarn        0
  440. #define    RGMmsSuccess        1
  441. #define    RGMmsError        2
  442. #define    RGMmsInfor        3
  443. #define    RGMmsFatal        4
  444.  
  445.  
  446.  
  447. /*
  448.  * DRM typedefs
  449.  */
  450.  
  451. /*
  452.  * DRM primitive types
  453.  */
  454. typedef    short int    DRMCode ;    /* Used for codes, e.g. DRMcr... */
  455. typedef    short int    DRMOffset ;    /* Used for offsets in records */
  456. typedef    short int    DRMType ;    /* Used for types, e.g. DRMrType... */
  457. typedef    short int    DRMSize ;    /* For size fields */
  458. typedef    short int    DRMCount ;    /* For counter fields */
  459. typedef    unsigned char    DRMFlag ;    /* flag fields */
  460. typedef    long int    DRMResource_id ;    /* Resource id in IDB files */
  461. typedef    short int    DRMGroup ;    /* For DRM resource groups */
  462.  
  463.  
  464.  
  465. /*
  466.  * DRM Resource context
  467.  *
  468.  * The following context structure is provided by DRM to cover all memory
  469.  * management of in-memory resources. This mechanism provides:
  470.  *    o improved memory management efficiency through buffer re-use
  471.  *    o collection of resource attributes in one place
  472.  *    o support for non-standard allocation routines
  473.  */
  474. #define    DRMResourceContextValid    232570204
  475. typedef struct {
  476.     unsigned    validation ;    /* validation code =
  477.                        DRMResourceContextValid */
  478.     char        *data_buffer ;    /* pointer to data buffer in memory */
  479.     DRMSize        buffer_size ;    /* number of bytes in buffer */
  480.     DRMSize        resource_size ;    /* number of bytes used by resource */
  481.     DRMGroup    group ;        /* resource group */
  482.     DRMType        type ;        /* resource type */
  483.     DRMCode        access ;    /* DRMaPrivate or DRMaPublic */
  484.     DRMCode        lock ;        /* resource locking code */
  485.     char        *((*alloc_func) ()) ;    /* memory allocation func */
  486.     int        (*free_func) () ;    /* deallocation func */
  487.     DRMCode        err_report ;    /* error reporting style, from
  488.                        DRMRCError... */
  489.     DRMCode        err_code ;    /* current error code */
  490.     String        err_stg ;    /* current error string */
  491. } DRMResourceContext, *DRMResourceContextPtr ;
  492.  
  493.  
  494. /*
  495.  * Validation macro, returns TRUE/FALSE
  496.  */
  497. #define    DwtDrmRCValid(context) ((context)->validation==DRMResourceContextValid)
  498.  
  499.  
  500. /*
  501.  * The following are accessor macros for a resource context
  502.  */
  503. #define    DwtDrmRCBuffer(context)    ((context)->data_buffer)
  504. #define DwtDrmRCSize(context)    ((context)->resource_size)
  505. #define DwtDrmRCGroup(context)    ((context)->group)
  506. #define DwtDrmRCType(context)    ((context)->type)
  507. #define DwtDrmRCAccess(context)    ((context)->access)
  508. #define DwtDrmRCLock(context)    ((context)->lock)
  509. #define DwtDrmRCErrRpt(context)    ((context)->err_report)
  510. #define DwtDrmRCErrCod(context)    ((context)->err_code)
  511. #define DwtDrmRCErrStg(context)    ((context)->err_stg)
  512.  
  513.  
  514. /*
  515.  * The following are modifiers for a resource context
  516.  */
  517. #define    DwtDrmRCSetSize(context,sizval)   {(context)->resource_size=(sizval);}
  518. #define DwtDrmRCSetGroup(context,grpval)  {(context)->group=(grpval);}
  519. #define DwtDrmRCSetType(context,typval)   {(context)->type=(typval);}
  520. #define DwtDrmRCSetAccess(context,accval) {(context)->access=(accval);}
  521. #define DwtDrmRCSetLock(context,lckval)      {(context)->lock=(lckval);}
  522. #define DwtDrmRCSetErrRpt(context,code)   {(context)->err_report=(code);}
  523.  
  524.  
  525. /*
  526.  * Error reporting states
  527.  */
  528. #define    DRMRCErrorDefault    1    /* default - report on line */
  529. #define    DRMRCErrorSave        2    /* save error, don't report */
  530.  
  531.  
  532.  
  533. /*
  534.  * DRM pointer list
  535.  *
  536.  * The following structure is inspired by resource contexts, but is used
  537.  * to store lists of pointers. Its supporting routines automatically manage
  538.  * space in the same the context routines do. Since this is used only
  539.  * internally, no validation is provided.
  540.  */
  541.  
  542. typedef struct {
  543.     DRMCount    num_slots ;    /* number of available pointer slots */
  544.     DRMCount    num_ptrs ;    /* number of slots actually used */
  545.     caddr_t        *ptr_vec ;    /* pointer slot vector */
  546. } DRMPointerList, *DRMPointerListPtr ;
  547.  
  548.  
  549. /*
  550.  * Accessors for the list or a pointer in the list
  551.  */
  552. #define    DwtDrmPlistPtrList(list) ((list)->ptr_vec)
  553. #define    DwtDrmPlistNum(list) ((list)->num_ptrs)
  554. #define    DwtDrmPlistPtrN(list,ndx) ((list)->ptr_vec[ndx])
  555.  
  556.  
  557.  
  558. /*
  559.  * IDB definitions in common use. The principal one is IDBFile; others
  560.  * are included to make that definition valid.
  561.  */
  562.  
  563. /*
  564.  * Record type definitions - IDBrt...
  565.  */
  566. #define    IDBrtMin        1
  567. #define    IDBrtHeader        1
  568. #define    IDBrtIndexLeaf        2
  569. #define    IDBrtIndexNode        3
  570. #define    IDBrtRIDMap        4
  571. #define    IDBrtData        5
  572. #define    IDBrtMax        5
  573. #define    IDBrtVecSize        6
  574.  
  575.  
  576. /*
  577.  * Record number. 65k should be enough...
  578.  */
  579. typedef    short int    IDBRecordNumber ;
  580.  
  581.  
  582. /*
  583.  * A resource ID consists of the resource map index and the ID index
  584.  * in the given resource map.
  585.  */
  586. typedef    short int    IDBResourceIndex ;
  587. typedef union {
  588.     unsigned        external_id ;    /* Looks like a fullword */
  589.     struct {
  590.       IDBResourceIndex    map_index ;    /* resource map index */
  591.       IDBResourceIndex    res_index ;    /* resource index into map */
  592.     }            internal_id ;    /* 2 fields internally */
  593. } IDBridDesc ;
  594.  
  595. /*
  596.  * A resource ID passed by value in a fullword.
  597.  */
  598. typedef    unsigned    IDBResource ;        /* a declaration for RIDs
  599.                             passed by value */
  600.  
  601.  
  602. /*
  603.  * IDB open file information
  604.  *
  605.  * The following is the information retained by IDB for an open file.
  606.  * Much of this information matches that found in the file header,
  607.  * and is the source of for that info when the header is updated.
  608.  */
  609.  
  610. #define    IDBOpenFileValid    421642674
  611. typedef struct {
  612.     unsigned    validation ;        /* validation code =
  613.                            IDBOpenFileValid */
  614.     int        get_count ;        /* # get operations on file */
  615.     int        put_count ;        /* # put operations on file */
  616.     DRMCode        access ;        /* DRMReadAccess or
  617.                            DRMWriteAccess */
  618.     unsigned int    lowlevel_id ;        /* open file id returned
  619.                            by low-level routines */
  620.     IDBRecordNumber    index_root ;        /* index root pointer */
  621.     DRMCount    num_indexed ;        /* # entries in index */
  622.     DRMCount    num_RID ;        /* # RID entries in file */
  623.     IDBridDesc    next_RID ;        /* next available RID */
  624.     IDBRecordNumber    last_record ;        /* last record used in file */
  625.     IDBRecordNumber    last_data_record ;    /* last data record in file.
  626.                            NULL if no records yet */
  627.     DRMCount    RID_maps_count ;    /* number of entry in
  628.                            RID_maps vector */
  629.     IDBRecordNumber    *RID_maps ;        /* Pointer to vector
  630.                            of RID index map records */
  631.     DRMCount    group_counts[DRMgVecSize] ;
  632.                         /* vector of record counts
  633.                            by resource group */
  634.     DRMCount    rt_counts[IDBrtVecSize] ;
  635.                         /* vector of record counts by
  636.                            record type (statistics) */
  637.     unsigned long    timer ;            /* for statistics */
  638. } IDBOpenFile, *IDBFile ;
  639.  
  640.  
  641.  
  642. /*
  643.  * Operating System specific parameter struct.  Passed to low level
  644.  * file OPEN.
  645.  */
  646. #define IDBOSOpenParamVersion 1
  647. typedef struct    {
  648. /*
  649.  * The version of this structure. Set to IDBOSOpenParamVersion
  650.  */
  651.     Cardinal        version; /* Both VMS and Ultrix */
  652. /*
  653.  * The default name, to be placed in FAB$L_DNA for RMS use.
  654.  */
  655.     char            *default_fname;    /* VMS Only */
  656. /*
  657.  * The related name, to be placed in NAM$L_RLF for RMS use.
  658.  * Flag for Ultrix file clobber (1 means OK to clobber)
  659.  */
  660.     union {
  661.         unsigned long    related_nam; /* VMS only */
  662.         Boolean        clobber_flg; /* Ultrix only */
  663.     } nam_flg;
  664.  
  665. } IDBOSOpenParam, *IDBOSOpenParamPtr ;
  666.  
  667.  
  668.  
  669. /*
  670.  * Open hierarchy struct
  671.  *
  672.  * The following structure represents an open DRM hierarchy. A hierarchy
  673.  * is principally a list of open IDB files in search order. As an aid to
  674.  * efficient searching, a list of files by resource group is also kept.
  675.  * Each entry in the list is the subset of the files in the hierarchy
  676.  * which contains resources in the corresponding group.
  677.  *
  678.  * All memory for the lists is acquired with DwtDrm__UT_Malloc.
  679.  */
  680.  
  681. #define    DRMHierarchyValid    102214835
  682. typedef struct {
  683.     unsigned    validation ;        /* DRMHierarchyValid */
  684.     DRMCount    num_file ;        /* number of files open */
  685.     IDBFile        *file_list ;        /* list of open files */
  686.     DRMCount    grp_num[DRMgVecSize] ;    /* vector of file counts by
  687.                            resource group */
  688.     IDBFile        *grp_ids[DRMgVecSize] ;    /* vectors of file ids by
  689.                            resource group */
  690. } DRMHierarchyDesc, *DRMHierarchy ;
  691.  
  692.  
  693. /*
  694.  * Validation macro
  695.  */
  696. #define    DwtDrmHierarchyValid(hierarchy)        \
  697.     ((hierarchy)->validation==DRMHierarchyValid)
  698.  
  699.  
  700.  
  701. /*
  702.  * RGM widget record typedefs
  703.  */
  704.  
  705. /*
  706.  * RGM Widget record. All offset are relative to the beginning of the record
  707.  */
  708. #define    DRMWidgetRecordValid    373946338
  709. typedef struct {
  710.     unsigned    validation ;    /* validation code =
  711.                        DRMWidgetRecordValid */
  712.     DRMSize        size ;        /* Total number of bytes for record */
  713.     DRMCode        access ;    /* DRMaPublic or DRMaPrivate */
  714.     DRMCode        lock ;        /* locking code */
  715.     DRMType        type ;        /* widget type, equates to class
  716.                        for toolkit widgets. A member of the
  717.                        DRMwc... enumeration */
  718.     DRMOffset    name_offs ;    /* Offset of widget name. Locates a
  719.                        String. An empty string is illegal */
  720.     DRMOffset    class_offs ;    /* Offset of class name. The class name
  721.                        is required for application-defined
  722.                        widgets. */
  723.     DRMOffset    arglist_offs ;    /* Offset of arglist descriptor. Locates
  724.                        a RGMArgListDesc struct */
  725.     DRMOffset    children_offs ;    /* Offset of children descriptor.
  726.                        Locates a RGMChildrenDesc struct */
  727.     DRMOffset    comment_offs ;    /* Offset of comment string for
  728.                        this widget. (DRM extension) */
  729.     DRMOffset    creation_offs ;    /* Offset of RGMCallBackDesc struct
  730.                        specifying DRM creation callback
  731.                        for this widget */
  732. } RGMWidgetRecord, *RGMWidgetRecordPtr ;
  733.  
  734. /*
  735.  * Size of the header part of the record
  736.  */
  737. #define    RGMWidgetRecordHdrSize    sizeof(RGMWidgetRecord)
  738.  
  739. /*
  740.  * Macro to access the widget record in a context
  741.  */
  742. #define    DwtDrmWRWidgetRec(context)    \
  743.     ((RGMWidgetRecordPtr) DwtDrmRCBuffer(context))
  744.  
  745.  
  746. /*
  747.  * All validation, accessor, and setting macros access a widget record in
  748.  * a context. They all take a pointer to the widget record, which is
  749.  * the context buffer CAST to RGMWidgetRecordptr.
  750.  */
  751. #define    DwtDrmWRValid(widgetrec)    \
  752.     ((widgetrec)->validation==DRMWidgetRecordValid)
  753.  
  754. /*
  755.  * Accessor macros for the widget record header
  756.  */
  757. #define DwtDrmWRPSize(context)        (DwtDrmWRWidgetRec(context)->size)
  758. #define    DwtDrmWRPAccess(context)    (DwtDrmWRWidgetRec(context)->access)
  759. #define    DwtDrmWRPLock(context)        (DwtDrmWRWidgetRec(context)->lock)
  760. #define    DwtDrmWRPType(context)        (DwtDrmWRWidgetRec(context)->type)
  761.  
  762. /*
  763.  * Accessor macros for objects offset from the header. These all return
  764.  * memory pointers which must be correctly CAST
  765.  */
  766. #define    DwtDrmWRPName(context)        \
  767.     ((int)DwtDrmWRWidgetRec(context)+ DwtDrmWRWidgetRec(context)->name_offs)
  768. #define    DwtDrmWRPClass(context)        \
  769.     ((int)DwtDrmWRWidgetRec(context)+DwtDrmWRWidgetRec(context)->class_offs)
  770. #define    DwtDrmWRPArglist(context)    \
  771.     ((int)DwtDrmWRWidgetRec(context)+DwtDrmWRWidgetRec(context)->arglist_offs)
  772. #define    DwtDrmWRPChildren(context)    \
  773.     ((int)DwtDrmWRWidgetRec(context)+DwtDrmWRWidgetRec(context)->children_offs)
  774. #define    DwtDrmWRPComment(context)    \
  775.     ((int)DwtDrmWRWidgetRec(context)+DwtDrmWRWidgetRec(context)->comment_offs)
  776. #define    DwtDrmWRPCreation(context)    \
  777.     ((int)DwtDrmWRWidgetRec(context)DwtDrmWRWidgetRec(context)->creation_offs)
  778.  
  779.  
  780.  
  781.  
  782. /*
  783.  * value descriptor. This consists of a representation type, followed
  784.  * by a union of either an immediate value or an offset, depending
  785.  * on the representation type.
  786.  */
  787. typedef struct {
  788.     DRMType        rep_type ;    /* representation type from
  789.                        RGMrType... */
  790.     union {
  791.       int        ival ;        /* integer, boolean, compressed */
  792.       DRMOffset    offset ;    /* offset for all others */
  793.     } datum ;            /* immediate value or offset */
  794. } RGMArgValue, *RGMArgValuePtr ;
  795.  
  796.  
  797. /*
  798.  * RGM widget record argument descriptor
  799.  */
  800. typedef struct {
  801.     DRMCode        tag_code ;    /* Either the compressed code for
  802.                        the argument tag from DRMc...,
  803.                        or DRMcUnknown to indicate no
  804.                        known string. If DRMcUnknown, then
  805.                        the offset is in tag_off */
  806.     DRMOffset    tag_offs ;    /* offset to tag string if needed */
  807.     RGMArgValue    arg_val ;    /* argument value */
  808. } RGMArgument, *RGMArgumentPtr ;
  809.  
  810.  
  811. /*
  812.  * RGM widget record arglist descriptor
  813.  */
  814. typedef struct {
  815.     DRMCount    count ;        /* number of arguments in list */
  816.     RGMArgument    args[1] ;    /* first of the argument descriptors */
  817. } RGMArgListDesc, *RGMArgListDescPtr ;
  818.  
  819.  
  820.  
  821. /*
  822.  * RGM widget record callback item
  823.  *
  824.  * A callback item is the offset of a routine name (which must be a
  825.  * non-imported string), and the routine tag value, which is encoded
  826.  * as a value. The tag value can evaluate to almost anything, including
  827.  * an imported value.
  828.  *
  829.  * This structure is intended to be over-written with memory pointers
  830.  * and thus function as an arglist value.
  831.  */
  832. typedef union {
  833.     struct {
  834.       caddr_t    pointer ;
  835.       long        val ;
  836.     } mem_item ;            /* item as pointer & value */
  837.     struct {
  838.       DRMOffset    routine ;    /* Offset to routine name string */
  839.       RGMArgValue    routine_tag ;    /* Routine tag value */
  840.     } cb_item ;            /* item as routine & tag */
  841. } RGMCallbackItem, *RGMCallbackItemPtr ;
  842.  
  843.  
  844. /*
  845.  * RGM widget record callback argument descriptor. This list has
  846.  * count + 1 entries so that this structure may be overwritten
  847.  */
  848. #define    DRMCallbackDescriptorValid    107397480
  849. typedef struct {
  850.     unsigned    validation ;    /* DRMCallbackDescriptorValid */
  851.     DRMCount    count ;        /* Number of callback items */
  852.     RGMCallbackItem    item[1] ;    /* First callback item in a list
  853.                        of n = .count+1 items */
  854. } RGMCallbackDesc, *RGMCallbackDescPtr ;
  855.  
  856.  
  857.  
  858. /*
  859.  * RGM widget record text vector item
  860.  *
  861.  * The following represents vectors of either ASCIZ or DDIS text items.
  862.  * each member of the vector is type-tagged so that mixed vectors are possible.
  863.  * This descriptor is a union so that a vector of these items can be over-
  864.  * written to become an in-memory list of pointers. These avoids some
  865.  * allocation problems at widget instantiation.
  866.  */
  867. typedef union {
  868.     caddr_t        pointer ;    /* for use as memory pointer */
  869.     struct {
  870.       DRMType    rep_type ;    /* RGMrTypeChar8 or RGMrTypeDDISitem */
  871.       DRMOffset    offset ;    /* offset of item in record */
  872.     } text_item ;            /* for use as item type & offset */
  873. } RGMTextEntry, *RGMTextEntryPtr ;
  874.  
  875.  
  876. /*
  877.  * The text Vector. This is designed to allow the vector of text entries
  878.  * to be over-written into an in-memory vector of pointers. Thus this list
  879.  * has one extra entry to provide a terminating null.
  880.  */
  881. #define    DRMTextVectorValid    34966592
  882. typedef struct {
  883.     unsigned    validation ;    /* DRMTextVectorValid */
  884.     DRMCount    count ;        /* Number of text items in vector */
  885.     RGMTextEntry    item[1] ;    /* first text item in a vector of
  886.                        n = .count+1 items */
  887. } RGMTextVector, *RGMTextVectorPtr ;
  888.  
  889.  
  890.  
  891. /*
  892.  * RGM widget record child descriptor
  893.  */
  894. typedef struct {
  895.     DRMFlag        manage ;    /* true if child is managed by parent
  896.                        at initialization */
  897.     DRMCode        access ;    /* DRMaPublic or DRMaPrivate */
  898.     DRMCode        class ;        /* from DRMwc..., or DRMtNul */
  899.     DRMCode        type ;        /* specifier type - DRMrIndex or
  900.                        DRMrRID */
  901.     union {
  902.       int        index_offs ;    /* index string offset (DRMrIndex) */
  903.       DRMResource_id    id ;    /* IDB resource id (DRMrRID) */
  904.     } key ;                /* key to widget by index or id */
  905. } RGMChildDesc, *RGMChildDescPtr ;
  906.  
  907.  
  908. /*
  909.  * RGM widget record children list descriptor
  910.  */
  911. typedef struct {
  912.     DRMCount    count ;        /* number of children */
  913.     DRMCode        access ;    /* Public/private - DRMaPublic or
  914.                        DRMaPrivate (i.e. the access value
  915.                        for the parent widget) */
  916.     RGMChildDesc    child[1] ;    /* First child descriptor in a list of
  917.                        n = .count descriptors. */
  918. } RGMChildrenDesc, *RGMChildrenDescPtr ;
  919.  
  920.  
  921. /*
  922.  * RGM widget record DRM resource descriptor
  923.  */
  924. typedef struct {
  925.     DRMSize        size ;        /* number of bytes in structure */
  926.     DRMFlag        access ;    /* Public/private - DRMaPublic or
  927.                        DRMaPrivate for this resource */
  928.     DRMCode        type ;        /* DRMrIndex or DRMrRID */
  929.     DRMCode        res_group ;    /* resource group */
  930.     DRMCode        res_type ;    /* resource type */
  931.     union {
  932.       char        index[1] ;    /* index for DRMrIndex resource
  933.                        (nul teminated) */
  934.       DRMResource_id    id ;    /* resource id */
  935.     } key ;                /* key to resource by index or id */
  936. } RGMResourceDesc, *RGMResourceDescPtr ;
  937.  
  938.  
  939.  
  940. /*
  941.  * Interface module descriptor
  942.  *
  943.  * An interface module is currently the only type of resource set defined.
  944.  * It defines the topmost widgets for some application (there is no
  945.  * requirement that there be only one interface module for an application).
  946.  */
  947.  
  948. /*
  949.  * A topmost widget descriptor. These are currently required to be
  950.  * accessed by index only, and the index is currently the only information
  951.  * saved. The index is stored as a fixed-length entry to simplify the
  952.  * layout of an interface module.
  953.  *
  954.  * The widgets referenced in an interface module are those who have
  955.  * no parent in the interface definition. Commonly these will have
  956.  * the top-level widget as their parent at runtime, but this is not
  957.  * required.
  958.  */
  959. typedef struct {
  960.     char        index[DRMMaxIndexLen1] ;
  961.                     /* Index (name) of widget */
  962. } RGMTopmostDesc, *RGMTopmostDescPtr ;
  963.  
  964.  
  965. #define DRMInterfaceModuleValid    408427447
  966. typedef struct {
  967.     unsigned    validation ;    /* DRMInterfaceModuleValid */
  968.     DRMCount    count ;        /* number of topmost widgets */
  969.     RGMTopmostDesc    topmost[1] ;    /* First topmost descriptor in a
  970.                        list of n= .count descriptors */
  971. } RGMModuleDesc, *RGMModuleDescPtr ;
  972.  
  973.  
  974. /*
  975.  * Validation macro
  976.  */
  977. #define    DwtDrmInterfaceModuleValid(module)        \
  978.     ((module)->validation==DRMInterfaceModuleValid)
  979.  
  980.  
  981.  
  982. /*
  983.  * Definitions of a bitmap corresponding to a RGMrTypeBitmapImage
  984.  * representation. The pointer to the bit vector is used dynamically
  985.  * in the bitmap editor. The immediate vector form is used for disk storage.
  986.  * Both bitmap representations and pixmap representations (TBD) have
  987.  * validation fields, which may be used to distinguish them.
  988.  */
  989.  
  990. #define    DRMBitMapValid    519087610
  991. typedef struct {
  992.     unsigned    validation ;    /* DRMBitMapValid */
  993.     int        width ;        /* # bits wide */
  994.     int        height ;    /* # bits high */
  995.     int        hot_x, hot_y ;    /* location of hot spot */
  996.     char        *bit_ptr ;    /* pointer to bits. For images
  997.                        read from disk, this is bit_vec */
  998.     char        bit_vec[1] ;    /* First byte in bitmap. (for disk) */
  999. } DRMBitMap, *DRMBitMapPtr ;
  1000.  
  1001.  
  1002.  
  1003. /*
  1004.  * Definitions for the widget class information retrieval package
  1005.  */
  1006.  
  1007. /*
  1008.  * Widget class argument descriptor
  1009.  *
  1010.  * An argument descriptor holds the information required for
  1011.  * a single argument descriptor for some widget class. Any string
  1012.  * referenced in this and the class descriptor is either allocated
  1013.  * with DwtDrm__UT_Malloc(size,DRMcMiscZone), or is a pointer returned
  1014.  * by DwtDrm_CompressString.
  1015.  */
  1016.  
  1017.  
  1018. /*
  1019.  * An argument id is the index of the argument's descriptor in the vector
  1020.  * of descriptors attaced to a class.
  1021.  */
  1022. typedef    unsigned short int    WCIArgId ;
  1023.  
  1024.  
  1025. /*
  1026.  * An argument may have permissible values specified as:
  1027.  *    a range of integer values
  1028.  *    a range of floating point values
  1029.  *    an enumerated set of strings and matching codes
  1030.  *    no specification of permissible values
  1031.  *
  1032.  * Exactly one of the four cases applies, as defined by the codes below.
  1033.  */
  1034. #define    WCIvtMin        1
  1035. #define    WCIvtUnspecified    1    /* no value specification */
  1036. #define    WCIvtIntegerRange    2    /* value is integer range */
  1037. #define    WCIvtFloatRange        3    /* value is floating point range */
  1038. #define    WCIvtEnum        4    /* value is ENUM of strings/codes */
  1039. #define    WCIvtMax        4
  1040.  
  1041. typedef struct {
  1042.     WCIArgId    my_id ;        /* Argid of this entry */
  1043.     DRMCode        tag_code ;    /* Compressed code for argument tag.
  1044.                        DRMcUnknown if not compressible */
  1045.     String        tag_name ;    /* Uncompressed string for tag. If
  1046.                        the tag can be compressed, this
  1047.                        is the pointer returned by
  1048.                        DwtDrm_CompressString. Else it
  1049.                        as an allocated string copied from
  1050.                        the class record. */
  1051.     DRMType        if_group ;    /* logical group for interface,
  1052.                        from DRMifr... */
  1053.     WCIArgId    rel_id ;    /* pointer to related arg */
  1054.     String        res_type ;    /* resource type from class record */
  1055.     String        res_class ;    /* resource class from class record */
  1056.     DRMCode        cvt_code ;    /* destination type for conversions,
  1057.                        from DRMcd... */
  1058.     DRMCode        editor_type ;    /* editor used to edit this argument's
  1059.                        value in DWICS, from DRMet... */
  1060.     DRMCode        rep_type ;    /* DRM representation for value,
  1061.                        from RGMrType... */
  1062.     DRMFlag        set_value ;    /* TRUE if DWICS should SetValues this
  1063.                        argument on user modification */
  1064.     String        prompt ;    /* Allocated prompt string from
  1065.                        class record */
  1066.     DRMCode        value_type ;    /* from WCIvt... */
  1067.     DRMFlag        cant_set ;    /* if TRUE, then this field can't be
  1068.                        interactively modified from a
  1069.                        DWICS editor */
  1070.     DRMFlag        recreate_wid ;    /* if TRUE, then modification of this
  1071.                        field will require a destroy/
  1072.                        recreate of the widget instance */
  1073.     union {
  1074.       struct {
  1075.         long int    min_ival ;    /* minimum integer value */
  1076.         long int    max_ival ;    /* maximum integer value */
  1077.       } int_range ;            /* Integer range - WCIvtIntegerRange*/
  1078.       struct {
  1079.         double    min_fval ;    /* minimum floating value */
  1080.         double    max_fval ;    /* maximum floating value */
  1081.       } float_range ;        /* float range - WCIvtFloatRange */
  1082.       struct {
  1083.         DRMCount    count ;        /* # entries in ENUM set */
  1084.         String    *strings ;    /* list of strings in ENUM set */
  1085.         DRMCount    *codes ;    /* list of matching codes */
  1086.       } enum_set ;            /* ENUM set - WCIvtEnum */
  1087.     } permit_values ;        /* permitted values */
  1088. } WCIArgDesc, *WCIArgDescPtr ;
  1089.  
  1090.  
  1091. /*
  1092.  * Accessors for the fields of an argument descriptor. All take a pointer
  1093.  * to a class descriptor and the argument id (index).
  1094.  */
  1095. #define    WciArgnMyId(cld,argid) ((cld)->arg_list[(argid)].my_id)
  1096. #define    WciArgnTagCode(cld,argid) ((cld)->arg_list[(argid)].tag_code)
  1097. #define    WciArgnTagName(cld,argid) ((cld)->arg_list[(argid)].tag_name)
  1098. #define    WciArgnIfGroup(cld,argid) ((cld)->arg_list[(argid)].if_group)
  1099. #define    WciArgnRelId(cld,argid) ((cld)->arg_list[(argid)].rel_id)
  1100. #define    WciArgnResType(cld,argid) ((cld)->arg_list[(argid)].res_type)
  1101. #define    WciArgnResClass(cld,argid) ((cld)->arg_list[(argid)].res_class)
  1102. #define    WciArgnCvtCode(cld,argid) ((cld)->arg_list[(argid)].cvt_code)
  1103. #define    WciArgnEdType(cld,argid) ((cld)->arg_list[(argid)].editor_type)
  1104. #define    WciArgnRepType(cld,argid) ((cld)->arg_list[(argid)].rep_type)
  1105. #define    WciArgnSetValue(cld,argid) ((cld)->arg_list[(argid)].set_value)
  1106. #define    WciArgnPrompt(cld,argid) ((cld)->arg_list[(argid)].prompt)
  1107. #define    WciArgnValType(cld,argid) ((cld)->arg_list[(argid)].value_type)
  1108. #define WciArgnCantSet(cld,argid) ((cld)->arg_list[(argid)].cant_set)
  1109. #define WciARgnMustRecreate(cld,argid) ((cld)->arg_list[(argid)].recreate_wid)
  1110. #define    WciArgnMinIval(cld,argid)        \
  1111.     ((cld)->arg_list[(argid)].permit_values.int_range.min_ival)
  1112. #define    WciArgnMaxIval(cld,argid)        \
  1113.     ((cld)->arg_list[(argid)].permit_values.int_range.max_ival)
  1114. #define    WciArgnMinFval(cld,argid)        \
  1115.     ((cld)->arg_list[(argid)].permit_values.fl_range.min_fval)
  1116. #define    WciArgnMaxFval(cld,argid)        \
  1117.     ((cld)->arg_list[(argid)].permit_values.fl_range.max_fval)
  1118. #define    WciArgnEnumCount(cld,argid)        \
  1119.     ((cld)->arg_list[(argid)].permit_values.enum_set.count)
  1120. #define    WciArgnEnumStrings(cld,argid)        \
  1121.     ((cld)->arg_list[(argid)].permit_values.enum_set.strings)
  1122. #define    WciArgnEnumCodes(cld,argid)        \
  1123.     ((cld)->arg_list[(argid)].permit_values.enum_set.codes)
  1124.  
  1125.  
  1126.  
  1127. /*
  1128.  * Literal sets referenced in the widget class argument descriptor
  1129.  */
  1130.  
  1131.  
  1132. /*
  1133.  * Destination types for conversions. These usually specify the conversion
  1134.  * of a string (or DDIS?) into an X object.
  1135.  */
  1136. #define    DRMcdMin    1
  1137. #define    DRMcdNone    1        /* no conversion */
  1138. #define    DRMcdColor    2        /* string to color */
  1139. #define    DRMcdFont    3        /* string to font */
  1140. #define    DRMcdPixmap    4        /* something to pixmap */
  1141. #define    DRMcdAddrName    5        /* string to address */
  1142. #define    DRMcdClassRec    6        /* string to class record pointer */
  1143. #define    DRMcdTranslate    7        /* string to translation table */
  1144. #define    DRMcdPixel    8        /* string to pixel */
  1145. #define    DRMcdMax    8
  1146.  
  1147.  
  1148. /*
  1149.  * DWICS editor types. Each specifies a specific editor, and expects a
  1150.  * specific representation for the value.
  1151.  */
  1152. #define    DRMetMin    1
  1153. #define    DRMetFallback    1        /* can't handle value, use string */
  1154. #define    DRMetInteger    2        /* integer editor, handles range */
  1155. #define    DRMetBoolean    3        /* boolean values editor */
  1156. #define    DRMetString    4        /* text string, handles range */
  1157. #define    DRMetCallback    5        /* handles callback specifiers */
  1158. #define    DRMetTranslate    6        /* handles translation tables */
  1159. #define    DRMetPixmap    7        /* pixmap/bitmap editor */
  1160. #define    DRMetStringVec    8        /* string array editor */
  1161. #define    DRMetWidgetPtr    9        /* widget pointer editor */
  1162. #define    DRMetMenuEntry    10        /* menu entry editor */
  1163. #define    DRMetEnumerated    11        /* enumerated set, Enum... values */
  1164. #define    DRMetMax    11
  1165.  
  1166.  
  1167. /*
  1168.  * Logical groups for interface. These determine how resources are clustered
  1169.  * in editor interfaces for modifying widgets in a given class.
  1170.  */
  1171. #define    DRMifrNull    0
  1172.                        
  1173.  
  1174.  
  1175.  
  1176. /*
  1177.  * Widget class descriptor
  1178.  *
  1179.  * A widget class descriptor retains information about a widget class.
  1180.  * This includes the low-level creation routine for the class, and
  1181.  * a vector of argument descriptors.
  1182.  */
  1183. #define    DRMWCIClassDescValid    39963371
  1184. typedef struct _WCIClassDesc {
  1185.     unsigned    validation ;    /* DRMWCIClassDescValid */
  1186.     struct _WCIClassDesc *next_desc ;
  1187.                     /* next descriptor in chain of
  1188.                        descriptors for this class code */
  1189.     DRMType        type ;        /* From DRMwc... */
  1190.     WidgetClass    class_record ;    /* class record */
  1191.     DRMType        if_group ;    /* logical group for interface,
  1192.                        from DRMifc... */
  1193.     String        class_name ;    /* Class name for display purposes */
  1194.     String        clrec_name ;    /* Class name in class record */
  1195.     Widget        (*creator) () ;    /* low-level create routine. This is
  1196.                        also the class identifier (name)
  1197.                        used to match user classes. */
  1198.     String        creator_name ;    /* create routine name. This is also
  1199.                        the accessor key for non-toolkit
  1200.                        widget classes. */
  1201.     String        dflt_trans ;    /* Default translation table from
  1202.                        class record */
  1203.     DRMCount    num_args ;    /* number of args for class */
  1204.     WCIArgDesc    *arg_list ;    /* vector of argument descriptors */
  1205.     WCIArgId    *argids ;    /* To quickly get argid for DRMc... */
  1206. } WCIClassDesc, *WCIClassDescPtr ;
  1207.  
  1208.  
  1209. /*
  1210.  * Initialize levels for WCI class descriptors
  1211.  */
  1212. #define    DRMwciUserLevel        1    /* user/application code only */
  1213. #define    DRMwciDWICSLevel    2    /* DWICS level (more info) */
  1214.  
  1215.  
  1216. /*
  1217.  * Callback routine to name reference vector
  1218.  *
  1219.  * A callback reference structure preserves a vector of callback routine
  1220.  * names and their corresponding addresses. The structure consists of
  1221.  * a vector of name/address pairs, where each name is a pointer to a string
  1222.  * allocated in a heap following the vector. The structure is marked to
  1223.  * indicate whether or not the names are in ascending lexicographic order,
  1224.  * suitable for binary search.
  1225.  */
  1226.  
  1227. typedef struct {
  1228.     String        rtn_name ;    /* the callback routine name */
  1229.     caddr_t        rtn_addr ;    /* the callback routine address */
  1230. } WCICallbackRef, *WCICallbackRefPtr ;
  1231.  
  1232. typedef struct {
  1233.     DRMCount    count ;        /* number of entries in vector */
  1234.     DRMCode        ordered ;    /* TRUE if ordered, else FALSE */
  1235.     WCICallbackRef    rtnvec[1] ;    /* first of n=.count vector items.
  1236.                        The name heap follows the vector */
  1237. } WCICallbackList, *WCICallbackListPtr ;
  1238.  
  1239.  
  1240.  
  1241. /*
  1242.  * Literal definitions associated with class descriptors
  1243.  *
  1244.  * Logical interface groups used to cluster classes for interfaces
  1245.  */
  1246. #define    DRMifcNull    0
  1247.  
  1248.  
  1249. /*
  1250.  * WCI codes for resource types (used to improve search times)
  1251.  */
  1252. #define    WCIrtMin        1
  1253. #define    WCIrtInt        1    /* XtRInt */
  1254. #define    WCIrtOrientation    2    /* DwtROrientation */
  1255. #define    WCIrtTranslationTable    3    /* DwtRTranslationTable */
  1256. #define    WCIrtAlignment        4    /* DwtRAlignment */
  1257. #define    WCIrtMenuPacking    5    /* DwtRMenuPacking */
  1258. #define    WCIrtWindow        6    /* XtRWindow */
  1259. #define    WCIrtMenuWidget        7    /* DwtRMenuWidget */
  1260. #define    WCIrtString        8    /* XtRString */
  1261. #define    WCIrtPixmap        9    /* XtRPixmap */
  1262. #define    WCIrtBoolean        10    /* XtRBoolean */
  1263. #define    WCIrtFontStruct        11    /* XtRFontStruct */
  1264. #define    WCIrtColor        12    /* XtRColor */
  1265. #define    WCIrtLabelType        13    /* DwtRLabelType */
  1266. #define    WCIrtMenuType        14    /* DwtRMenuType */
  1267. #define    WCIrtPointer        15    /* XtRPointer */
  1268. #define    WCIrtPixel        16    /* XtRPixel */
  1269. #define    WCIrtMax        16
  1270.  
  1271. /*
  1272.  * WCI codes for resource classes (used to improve search times)
  1273.  */
  1274. #define    WCIrcMin        1
  1275. #define    WCIrcOrientation    1    /* DwtCOrientation */
  1276. #define    WCIrcMenuEntryClass    2    /* DwtCMenuEntryClass */
  1277. #define    WCIrcLabelType        3    /* DwtCLabelType */
  1278. #define    WCIrcSystemPreference    4    /* DwtCSystemPreference */
  1279. #define    WCIrcDefaultPushbutton    5    /* DwtCDefaultPushbutton */
  1280. #define    WCIrcShape        6    /* DwtCShape */
  1281. #define    WCIrcUnits        7    /* DwtCUnits */
  1282. #define    WCIrcStyle        8    /* DwtCStyle */
  1283. #define    WCIrcCallback        9    /* XtCCallback */
  1284. #define    WCIrcDefaultPosition    10    /* DwtCDefaultPosition */
  1285. #define    WCIrcVisibleWhenOff    11    /* DwtCVisibleWhenOff */
  1286. #define    WCIrcMenuRadio        12    /* DwtCMenuRadio */
  1287. #define    WCIrcMenuIsHomogeneous    13    /* DwtCMenuIsHomogeneous */
  1288. #define    WCIrcRadioAlwaysOne    14    /* DwtCRadioAlwaysOne */
  1289. #define    WCIrcAdjustMargin    15    /* DwtCAdjustMargin */
  1290. #define    WCIrcMenuAlignment    16    /* DwtCMenuAlignment */
  1291. #define    WCIrcPropagateColors    17    /* DwtCPropagateColors */
  1292. #define    WCIrcAutoUnmanage    18    /* DwtCAutoUnmanage */
  1293. #define    WCIrcHelpIcon        19    /* DwtCHelpIcon */
  1294. #define    WCIrcItems        20    /* DwtCItems */
  1295. #define    WCIrcSelectedItems    21    /* DwtCSelectedItems */
  1296. #define    WCIrcMax        21
  1297.  
  1298.  
  1299.  
  1300. /*
  1301.  * Definitions for message resources
  1302.  *
  1303.  * The following defines the basic data structure which represents all
  1304.  * message stored in the DRmgMessage group. All messages have a standard
  1305.  * header, which provides:
  1306.  *    o The severity level
  1307.  *    o the representation type
  1308.  *
  1309.  * Then there is a representation of the actual message.
  1310.  *
  1311.  * There is currently just one message type, RGMmtType1
  1312.  */
  1313.  
  1314. /*
  1315.  * message header
  1316.  */
  1317. #define    DRMMessageValid        416604345
  1318. typedef struct {
  1319.     unsigned    validation ;    /* DRMMessageValid */
  1320.     DRMCode        severity ;    /* severity level, RGMms... */
  1321.     DRMCode        rep_type ;    /* representation type, from
  1322.                        RGMrType... */
  1323.     DRMSize        size ;        /* # bytes in message */
  1324. } RGMMessageHeader, *RGMMessageHeaderPtr ;
  1325.  
  1326. /*
  1327.  * message body
  1328.  */
  1329. typedef struct {
  1330.     RGMMessageHeader    msg_hdr ;    /* message header */
  1331.     char            msg_buf[1] ;    /* buffer for message */
  1332. } RGMMessageT1, *RGMMessageT1Ptr ;
  1333.  
  1334. /*
  1335.  * Accessors for parts of a message. All take a pointer to a T1 message.
  1336.  */
  1337. #define    DwtDrmMessageT1Severity(msg) ((msg)->msg_hdr.severity)
  1338. #define    DwtDrmMessageT1RepType(msg) ((msg)->msg_hdr.rep_type)
  1339. #define    DwtDrmMessageT1MsgBuf(msg) ((msg)->msg_buf)
  1340.     
  1341.  
  1342.  
  1343. /*
  1344.  * Function prototypes for DRM routines
  1345.  */
  1346.  
  1347.  
  1348. /*
  1349.  * Defined in DWTDRMVM.c
  1350.  */
  1351. extern int    DwtDrm__UT_VMInit () ;
  1352. extern caddr_t DwtDrm__UT_Malloc () ;
  1353. extern caddr_t DwtDrm__UT_Calloc () ;
  1354. extern int    DwtDrm__UT_Free () ;
  1355. extern int    DwtDrm__UT_Cfree () ;
  1356. extern int    DwtDrm__UT_VMEnd () ;
  1357. extern caddr_t    DwtDrm__UT_Sdesc_Null () ;
  1358. extern int    DwtDrm__UT_Null_Free () ;
  1359. extern String DwtDrm__UT_AllocString () ;
  1360. extern caddr_t DwtDrm__UT_AllocThing () ;
  1361. extern int DwtDrm__UT_FreeThing () ;
  1362.  
  1363.  
  1364. /*
  1365.  * Defined in DRMCONTEXT.c
  1366.  */
  1367. extern Cardinal DwtDrmGetResourceContext () ;
  1368. extern Cardinal DwtDrmResizeResourceContext () ;
  1369. extern Cardinal DwtDrmFreeResourceContext () ;
  1370. extern char *DwtDrm__DefaultMalloc () ;
  1371. extern Cardinal DwtDrm__DefaultFree () ;
  1372.  
  1373. /*
  1374.  * Defined in DRMPTRLIST.c
  1375.  */
  1376. extern Cardinal DwtDrmPlistInit () ;
  1377. extern Cardinal DwtDrmPlistResize () ;
  1378. extern Cardinal DwtDrmPlistFree () ;
  1379. extern Cardinal DwtDrmPlistFreeContents () ;
  1380. extern Cardinal DwtDrmPlistAppendPointer () ;
  1381. extern Cardinal DwtDrmPlistAppendString () ;
  1382. extern DRMCount DwtDrmPlistFindString () ;
  1383.  
  1384. /*
  1385.  * Defined in DRMERROR.c
  1386.  */
  1387. extern Cardinal DwtDrm__UT_SignalError () ;
  1388. extern Cardinal DwtDrm__UT_SetErrorReport () ;
  1389. extern DRMCode DwtDrm__UT_LatestErrorCode () ;
  1390. extern String DwtDrm__UT_LatestErrorMessage () ;
  1391.  
  1392. /*
  1393.  * Defined in DWTDRMTIME.c
  1394.  */
  1395. extern void DwtDrm__UT_Time () ;
  1396. extern void DwtDrm__PTIME_TimingMark () ;
  1397. extern void DwtDrm__PTIME_ReportTiming () ;
  1398.  
  1399. /*
  1400.  * Defined in DRMAPPL.c
  1401.  */
  1402. extern void DwtInitializeDRM () ;
  1403. extern Cardinal DwtOpenHierarchy () ;
  1404. extern Cardinal DwtCloseHierarchy () ;
  1405. extern Cardinal DwtRegisterClass () ;
  1406. extern Cardinal DwtRegisterDRMCallbacks () ;
  1407. extern Cardinal DwtFetchInterfaceModule () ;
  1408. extern Cardinal DwtFetchWidget () ;
  1409. extern Cardinal DwtFetchWidgetOverride () ;
  1410.  
  1411. /*
  1412.  * Defined in DRMWIDGET_READ.c
  1413.  */
  1414. extern Cardinal DwtDrmHGetWidget () ;
  1415. extern Cardinal DwtDrmGetIndexedWidget () ;
  1416. extern Cardinal DwtDrmGetRIDWidget () ;
  1417.  
  1418. /*
  1419.  * Defined in DRMWIDGET_CREATE.c
  1420.  */
  1421. extern Cardinal DwtDrmCreateWidgetTree () ;
  1422. extern Cardinal DwtDrmCreateWidgetInstance () ;
  1423. extern Cardinal DwtDrm__CreateArglist () ;
  1424. extern void DwtDrm__EvaluateValue () ;
  1425. extern void DwtDrm__FixupCallback () ;
  1426. extern void DwtDrm__EvaluateResource () ;
  1427.  
  1428. /*
  1429.  * Defined in DRMWIDGET_CWR.c
  1430.  */
  1431. extern Cardinal DwtDrmCWRInit () ;
  1432. extern Cardinal DwtDrmCWRSetClass () ;
  1433. extern Cardinal DwtDrmCWRInitArglist () ;
  1434. extern Cardinal DwtDrmCWRSetCompressedArgTag () ;
  1435. extern Cardinal DwtDrmCWRSetUncompressedArgTag () ;
  1436. extern Cardinal DwtDrmCWRSetArgValue () ;
  1437. extern Cardinal DwtDrmCWRSetArgResourceRef () ;
  1438. extern Cardinal DwtDrmCWRSetArgChar8Vec () ;
  1439. extern Cardinal DwtDrmCWRSetArgDDISVec () ;
  1440. extern Cardinal DwtDrmCWRSetArgCallback () ;
  1441. extern Cardinal DwtDrmCWRSetCallbackItem () ;
  1442. extern Cardinal DwtDrmCWRSetCallbackItemRes () ;
  1443. extern Cardinal DwtDrmCWRInitChildren () ;
  1444. extern Cardinal DwtDrmCWRSetChild () ;
  1445. extern Cardinal DwtDrmCWRSetComment () ;
  1446. extern Cardinal DwtDrmCWRSetCreationCallback () ;
  1447. extern Cardinal DwtDrmCWR__AppendString () ;
  1448. extern Cardinal DwtDrmCWR__AppendDDIS () ;
  1449. extern Cardinal DwtDrmCWR__GuaranteeSpace () ;
  1450. extern Cardinal DwtDrmCWR__AppendResource () ;
  1451.  
  1452. /*
  1453.  * Defined in DRMWIDGET_WRITE.c
  1454.  */
  1455. extern Cardinal DwtDrmPutIndexedWidget () ;
  1456. extern Cardinal DwtDrmPutRIDWidget () ;
  1457.  
  1458. /*
  1459.  * Defined in DRMHIERARCHY.c
  1460.  */
  1461. extern Cardinal DwtDrm__OpenHierarchy () ;
  1462. extern Cardinal DwtDrm__CloseHierarchy () ;
  1463. extern Cardinal DwtDrmHGetIndexedResource () ;
  1464.  
  1465. /*
  1466.  * Defined in DRMCOMPRESS.c
  1467.  */
  1468. extern DRMType        DwtDrm_CompressString () ;
  1469. extern Cardinal DwtDrm_UncompressString () ;
  1470.  
  1471.  
  1472. /*
  1473.  * Defined in DRMIFMODULE.c
  1474.  */
  1475. extern Cardinal DwtDrmIFMInitModule () ;
  1476. extern Cardinal DwtDrmIFMSetTopmost () ;
  1477. extern Cardinal DwtDrmIFMPutModule () ;
  1478. extern Cardinal DwtDrmIFMHGetModule () ;
  1479. extern Cardinal DwtDrmIFMGetModule () ;
  1480.  
  1481. /*
  1482.  * Defined in DRMWIDGET_WCI.c
  1483.  */
  1484. extern Cardinal DwtDrm__WCI_RegisterClass () ;
  1485. extern Cardinal DwtDrm__WCI_RegisterCallbacks () ;
  1486. extern Cardinal DwtDrm__WCI_GetClassDescriptor () ;
  1487. extern Cardinal DwtDrm__WCI_GetArgDescriptor () ;
  1488. extern WidgetClass DwtDrm__WCI_GetClRecOfName () ;
  1489. extern String DwtDrm__WCI_GetNameOfClRec () ;
  1490. extern Cardinal DwtDrm__WCI_GetDRMCallback () ;
  1491. extern DRMCode DwtDrm__UT_FindOrderedString () ;
  1492.  
  1493. /*
  1494.  * Defined in DRMWIDGET_DUMP.c
  1495.  */
  1496. extern Cardinal DwtDrm__DumpInterfaceFile () ;
  1497. extern Cardinal DwtDrm__DumpInterfaceModule () ;
  1498. extern Cardinal DwtDrm__DumpWidgetTree () ;
  1499. extern Cardinal DwtDrm__TypeWidgetRecord () ;
  1500. extern Cardinal DwtDrm__DumpWidgetRecord () ;
  1501.  
  1502. /*
  1503.  * Defined in DRMLITERAL*.c
  1504.  */
  1505. extern Cardinal DwtDrmPutIndexedInteger () ;
  1506. extern Cardinal DwtDrmPutRIDInteger () ;
  1507. extern Cardinal DwtDrmPutIndexedBoolean () ;
  1508. extern Cardinal DwtDrmPutRIDBoolean () ;
  1509. extern Cardinal DwtDrmPutIndexed8Bit () ;
  1510. extern Cardinal DwtDrmPutRID8Bit () ;
  1511. extern Cardinal DwtDrmPutIndexed8BitVec () ;
  1512. extern Cardinal DwtDrmPutRID8BitVec () ;
  1513. extern Cardinal DwtDrmPutIndexedDDISitem () ;
  1514. extern Cardinal DwtDrmPutRIDDDISitem () ;
  1515. extern Cardinal DwtDrmPutIndexedDDISitemVec () ;
  1516. extern Cardinal DwtDrmPutRIDDDISitemVec () ;
  1517. extern Cardinal DwtDrmPutIndexedFloat () ;
  1518. extern Cardinal DwtDrmPutRIDFloat () ;
  1519. extern Cardinal DwtDrmPutIndexedPixmapImage () ;
  1520. extern Cardinal DwtDrmPutRIDPixmapImage () ;
  1521. extern Cardinal DwtDrmPutIndexedPixmapDDIF () ;
  1522. extern Cardinal DwtDrmPutRIDPixmapDDIF () ;
  1523. extern Cardinal DwtDrmPutIndexedLiteral () ;
  1524. extern Cardinal DwtDrmPutRIDLiteral () ;
  1525. extern Cardinal DwtDrmHGetIndexedLiteral () ;
  1526. extern Cardinal DwtDrmGetIndexedLiteral () ;
  1527. extern Cardinal DwtDrmGetRIDLiteral () ;
  1528.  
  1529. /*
  1530.  * Functions defined in DRMMESSAGE.c
  1531.  */
  1532. extern Cardinal DwtDrmCMSInit () ;
  1533. extern Cardinal DwtDrmCMSSetMsgValue () ;
  1534. extern Cardinal DwtDrmPutIndexedMessage () ;
  1535. extern Cardinal DwtDrmHGetIndexedMessage () ;
  1536. extern Cardinal DwtDrmGetIndexedMessage () ;
  1537.  
  1538. /*
  1539.  * Functions defined in DRMBITMAPIMAGE.c
  1540.  */
  1541. extern Pixmap DwtDrmCreatePixmap () ;
  1542. extern DRMBitMapPtr DwtDrmCopyBitmap () ;
  1543. extern DRMBitMapPtr DwtDrmCopyAllocatedBitmap () ;
  1544. extern Pixel DwtDrm__UT_GetNamedColorPixel () ;
  1545. extern Cardinal DwtDrmBitmapSize () ;
  1546.  
  1547.  
  1548. /*
  1549.  * Functions defined in IDBTOPLEVEL.c
  1550.  */
  1551. extern Cardinal DwtIdbOpenFileRead () ;
  1552. extern Cardinal DwtIdbOpenFileWrite () ;
  1553. extern Cardinal DwtIdbCloseFile () ;
  1554. extern Cardinal DwtIdbPutIndexedResource () ;
  1555. extern Cardinal DwtIdbGetIndexedResource () ;
  1556. extern Cardinal DwtIdbFindIndexedResource () ;
  1557. extern Cardinal DwtIdbPutRIDResource () ;
  1558. extern Cardinal DwtIdbGetRIDResource () ;
  1559. extern Cardinal DwtIdbGetResourceID () ;
  1560. extern Cardinal DwtIdb__FIL_Valid () ;
  1561.  
  1562. /*
  1563.  * Defined in DRMWIDGET_WCI_DUMP.c
  1564.  */
  1565. extern void DwtDrm__WCI_DumpWCI () ;
  1566. extern void DwtDrm__WCI_DumpClass () ;
  1567. extern void DwtDrm__WCI_DumpArgument () ;
  1568. /* DEC/CMS REPLACEMENT HISTORY, Element DECWDRM.H*/
  1569. /* *39   22-FEB-1988 17:37:59 FANEUF "firewall #define externaldef"*/
  1570. /* *38   21-FEB-1988 15:13:12 FANEUF "Update to latest version of DwtC.., new WCI fields"*/
  1571. /* *37   19-FEB-1988 12:57:55 FANEUF "general upgrade for DWICS integration"*/
  1572. /* *36   19-JAN-1988 16:22:06 FANEUF "Add DwtDrmRCSetErrRpt"*/
  1573. /* *35   18-JAN-1988 17:35:14 FANEUF "ULTRIX compatibility update"*/
  1574. /* *34   11-JAN-1988 17:31:00 FANEUF "Add date string sizing (DRMhsDate)"*/
  1575. /* *33   11-JAN-1988 11:00:51 FANEUF "Added message group support"*/
  1576. /* *32    7-JAN-1988 16:45:45 FANEUF "Conform to toolkit #include standards"*/
  1577. /* *31    5-JAN-1988 22:24:05 FANEUF "CREATE implementation complete"*/
  1578. /* *30    5-JAN-1988 12:56:26 FANEUF "Revised IDB open file, pointer lists, various other"*/
  1579. /* *29   30-DEC-1987 23:18:40 FANEUF "Ready to complete create"*/
  1580. /* *28   30-DEC-1987 15:20:45 FANEUF "Added WCI support"*/
  1581. /* *27   30-DEC-1987 15:07:53 FANEUF "Added WCI support"*/
  1582. /* *26   29-DEC-1987 22:40:33 MULLEN "Added OS specific open parameter structure"*/
  1583. /* *25   29-DEC-1987 15:40:16 FANEUF "Naming conventions update"*/
  1584. /* *24   29-DEC-1987 11:28:27 FANEUF ".h restructure complete"*/
  1585. /* *23   28-DEC-1987 22:19:05 FANEUF "Initial implementation of CWR complete"*/
  1586. /* *22   28-DEC-1987 16:49:25 FANEUF "Restore WR resource descriptor"*/
  1587. /* *21   28-DEC-1987 13:09:55 FANEUF "CWR development"*/
  1588. /* *20   24-DEC-1987 10:40:19 FANEUF "widget build implemented"*/
  1589. /* *19   23-DEC-1987 14:18:38 FANEUF "To install latest values for UIL compiler"*/
  1590. /* *18   21-DEC-1987 13:11:33 FANEUF "New codes, minor changes during IDB debugging"*/
  1591. /* *17   17-DEC-1987 00:09:26 FANEUF "Debugging continues..."*/
  1592. /* *16   16-DEC-1987 14:24:18 FANEUF "Fixed IDBFile defn"*/
  1593. /* *15   16-DEC-1987 13:56:35 MULLEN "Minor macro fix"*/
  1594. /* *14   16-DEC-1987 13:46:06 FANEUF "Error prototypes added, IDBFile defined"*/
  1595. /* *13   16-DEC-1987 11:21:21 FANEUF "New values for return codes"*/
  1596. /* *12   15-DEC-1987 20:22:04 FANEUF "Improve context accessors, add context mgt prototypes"*/
  1597. /* *11   15-DEC-1987 18:05:09 FANEUF "Improved context access/set macros"*/
  1598. /* *10   14-DEC-1987 21:37:15 FANEUF "More return codes, MAX, MIN"*/
  1599. /* *9    14-DEC-1987 09:05:16 FANEUF "More return codes"*/
  1600. /* *8    11-DEC-1987 15:56:24 FANEUF "Redefine groups and other format changes"*/
  1601. /* *7    11-DEC-1987 14:41:15 FANEUF "Changed zone literal names"*/
  1602. /* *6    11-DEC-1987 10:52:03 MULLEN "Make ZONE ID constants."*/
  1603. /* *5    10-DEC-1987 15:27:51 MULLEN "Add memory ulitity zone id externals"*/
  1604. /* *4    10-DEC-1987 15:01:22 FANEUF ""*/
  1605. /* *3    10-DEC-1987 09:33:13 MULLEN "Add in RAF's edit. Redo DRMReadAccess change."*/
  1606. /* *2     8-DEC-1987 12:16:55 MULLEN "Change DRMReadAccess"*/
  1607. /* *1     8-DEC-1987 10:17:36 MULLEN "Initial entry"*/
  1608. /* DEC/CMS REPLACEMENT HISTORY, Element DECWDRM.H*/
  1609.