2
* @OPENGROUP_COPYRIGHT@
4
* Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
5
* Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
6
* ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
7
* the full copyright text.
9
* This software is subject to an open license. It may only be
10
* used on, with or for operating systems which are themselves open
11
* source systems. You must contact The Open Group for a license
12
* allowing distribution and sublicensing of this software on, with,
13
* or for operating systems which are not Open Source programs.
15
* See http://www.opengroup.org/openmotif/license for full
16
* details of the license agreement. Any use, reproduction, or
17
* distribution of the program constitutes recipient's acceptance of
20
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
21
* PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
22
* KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
23
* WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
24
* OR FITNESS FOR A PARTICULAR PURPOSE
26
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
27
* NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
28
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
* DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
30
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
* ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
33
* EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
34
* POSSIBILITY OF SUCH DAMAGES.
39
/* $XConsortium: wml.h /main/9 1995/08/29 11:10:33 drk $ */
41
* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
44
* This file contains the structure and literal definitions required
45
* by the WML processor
60
* Generic object pointer
62
typedef char *ObjectPtr;
66
* True and False for attributes, so setting is explicit
68
#define WmlAttributeUnspecified 0
69
#define WmlAttributeTrue 1
70
#define WmlAttributeFalse 2
73
* Values of character set direction
75
#define WmlCharSetDirectionLtoR 1
76
#define WmlCharSetDirectionRtoL 2
79
* Values of character set character size
81
#define WmlCharSizeOneByte 1
82
#define WmlCharSizeTwoByte 2
83
#define WmlCharSizeMixed1_2Byte 3
87
* Upper case and lower case converters
89
#define _upper(c) ((c) >= 'a' && (c) <= 'z' ? (c) & 0x5F:(c))
90
#define _lower(c) ((c) >= 'A' && (c) <= 'Z' ? (c) | 0x20:(c))
94
* The Uil token classes which are dealt with WML. Matched to definitions
95
* in UilKeyDef.h, although this isn't required.
97
#define WmlTokenClassArgument 1
98
#define WmlTokenClassCharset 2
99
#define WmlTokenClassColor 3
100
#define WmlTokenClassEnumval 4
101
#define WmlTokenClassFont 5
102
#define WmlTokenClassIdentifier 6
103
#define WmlTokenClassKeyword 7
104
#define WmlTokenClassLiteral 8
105
#define WmlTokenClassReason 9
106
#define WmlTokenClassReserved 10
107
#define WmlTokenClassSpecial 11
108
#define WmlTokenClassUnused 12
109
#define WmlTokenClassClass 13
110
#define WmlTokenClassChild 14
115
* Structures for WML objects. Two kinds are created for each object
116
* recognized and built as a WML description is read:
117
* - A syntactic descriptor, which captures the information parse
118
* from the input in pretty much its raw form
119
* - A semantically resolved descriptor, in which pointers to
120
* other descriptors have been resolved, ordering is done,
121
* superclass inheritance is complete, etc.
125
* Syntactic structures. These are constructred during input parse.
130
* A dummy holding only a header. Allows access to the validation field.
134
int validation; /* a unique validation code */
135
ObjectPtr rslvdef; /* the resolved object pointer */
136
} WmlSynDef, *WmlSynDefPtr;
141
* A class resource descriptor. This a subset of a full resource descriptor,
142
* which captures those elements which can be overridden in a class declaration
144
#define WmlClassResDefValid 871253
146
typedef struct WmlSynClassResDefStruct
148
int validation; /* WmlClassResDefValid */
149
struct WmlSynClassResDefStruct
150
*next; /* next descriptor in chain */
151
char *name; /* resource name */
152
char *type; /* override type name */
153
char *dflt; /* override default value */
154
short int exclude; /* WmlAttributeTrue if to be excluded */
155
} WmlSynClassResDef, *WmlSynClassResDefPtr;
158
* A class child descriptor.
160
#define WmlClassChildDefValid 780344
162
typedef struct WmlSynClassChildDefStruct
164
int validation; /* WmlClassChildDefValid */
165
struct WmlSynClassChildDefStruct
166
*next; /* next descriptor in chain */
167
char *name; /* child name */
168
} WmlSynClassChildDef, *WmlSynClassChildDefPtr;
172
* A class controls descriptor. It contains elements which can be added
173
* to a controls reference.
176
#define WmlClassCtrlDefValid 7132320
178
typedef struct WmlSynClassCtrlDefStruct
180
int validation; /* WmlClassCtrlDefValid */
181
struct WmlSynClassCtrlDefStruct
182
*next; /* next descriptor in chain */
183
char *name; /* controlled class name */
184
} WmlSynClassCtrlDef, *WmlSynClassCtrlDefPtr;
188
* A class structure. One exists for each Class statement in a WML
191
#define WmlClassDefValid 93741
193
#define WmlClassTypeMetaclass 1
194
#define WmlClassTypeWidget 2
195
#define WmlClassTypeGadget 3
197
typedef struct WmlSynClassDefStruct
199
int validation; /* WmlClassDefValid */
200
struct WmlClassDefStruct
201
*rslvdef; /* resolved definition */
202
short int type; /* from WmlClassType... */
203
short int dialog; /* TRUE if a dialog class (has
204
window manager decoration, etc) */
205
char *name; /* class name */
206
char *superclass; /* superclass name */
207
char *parentclass; /* parentclass name */
208
char *widgetclass; /* widget class name */
209
char *int_lit; /* internal literal name */
210
char *convfunc; /* convenience function name */
211
char *docname; /* name for docs */
212
char *ctrlmapto; /* resource controls map to */
213
short int alias_cnt; /* alias count */
214
char **alias_list; /* vector of aliass */
215
WmlSynClassCtrlDefPtr
216
controls; /* list of controlled classes */
218
resources; /* list of resources from input */
219
WmlSynClassChildDefPtr
220
children; /* list of automatic children */
221
} WmlSynClassDef, *WmlSynClassDefPtr;
225
* A controls list structure. One is created for each ControlsList statement
226
* in a WML description.
228
#define WmlCtrlListDefValid 621298
230
typedef struct WmlSynCtrlListDefStruct
232
int validation; /* WmlCtrlListDefValid */
233
struct WmlCtrlListDefStruct
234
*rslvdef; /* resolved definition */
235
char *name; /* controls list name */
236
WmlSynClassCtrlDefPtr
237
controls; /* list of controlled classes */
238
} WmlSynCtrlListDef, *WmlSynCtrlListDefPtr;
242
* A resource descriptor. One is created for each Resource statement
243
* in a WML description
245
#define WmlResourceDefValid 310538
247
#define WmlResourceTypeArgument 1
248
#define WmlResourceTypeReason 2
249
#define WmlResourceTypeConstraint 3
250
#define WmlResourceTypeSubResource 4
252
typedef struct WmlSynResourceDefStruct
254
int validation; /* WmlResourceDefValid */
255
struct WmlResourceDefStruct
256
*rslvdef; /* resolved definition */
257
short int type; /* from WmlResourceType... */
258
char *name; /* resource name */
259
char *datatype; /* resource data type */
260
char *int_lit; /* internal literal name */
261
char *resliteral; /* resource name literal */
262
char *enumset; /* enumeration set name */
263
char *docname; /* name for docs */
264
char *related; /* names related resource */
265
char *dflt; /* default value */
266
short int xrm_support; /* WmlAttributeTrue if can be
268
short int alias_cnt; /* alias count */
269
char **alias_list; /* vector of aliass */
270
} WmlSynResourceDef, *WmlSynResourceDefPtr;
273
* A child descriptor. One is created for each Child statement
274
* in a WML description
276
#define WmlChildDefValid 229629
278
typedef struct WmlSynChildDefStruct
280
int validation; /* WmlResourceDefValid */
281
struct WmlChildDefStruct
282
*rslvdef; /* resolved definition */
283
char *name; /* child name */
284
char *class; /* child class */
285
} WmlSynChildDef, *WmlSynChildDefPtr;
289
* A datatype descriptor
291
#define WmlDataTypeDefValid 714210
293
typedef struct WmlSynDataTypeDefStruct
295
int validation; /* WmlDataTypeDefValid */
296
struct WmlDataTypeDefStruct
297
*rslvdef; /* resolved definition */
298
char *name; /* data type name */
299
char *int_lit; /* internal literal name */
300
char *docname; /* name for docs */
301
short int xrm_support; /* WmlAttributeTrue if can be
303
} WmlSynDataTypeDef, *WmlSynDataTypeDefPtr;
307
* An enumeration set values descriptor, as it occurs in the list for
308
* an enumeration set descriptor.
310
typedef struct WmlSynEnumSetValDefStruct
312
int validation; /* WmlEnumValueDefValid */
313
struct WmlSynEnumSetValDefStruct
314
*next; /* next descriptor in chain */
315
char *name; /* enumeration value name */
316
} WmlSynEnumSetValDef, *WmlSynEnumSetValDefPtr;
320
* An enumeration set descriptor
322
#define WmlEnumSetDefValid 931184
324
typedef struct WmlSynEnumSetDefStruct
326
int validation; /* WmlEnumSetDefValid */
327
struct WmlEnumSetDefStruct
328
*rslvdef; /* resolved definition */
329
char *name; /* enumeration set name */
330
char *datatype; /* enumeration set data type */
331
WmlSynEnumSetValDefPtr
332
values; /* list of values in set */
333
} WmlSynEnumSetDef, *WmlSynEnumSetDefPtr;
338
* An enumeration value descriptor
340
#define WmlEnumValueDefValid 172938
342
typedef struct WmlSynEnumValueDefStruct
344
int validation; /* WmlEnumValueDefValid */
345
struct WmlEnumValueDefStruct
346
*rslvdef; /* resolved definition */
347
char *name; /* enumeration value name */
348
char *enumlit; /* name of defining literal */
349
} WmlSynEnumValueDef, *WmlSynEnumValueDefPtr;
353
* A charset descriptor
355
#define WmlCharSetDefValid 110983
357
typedef struct WmlSynCharSetDefStruct
359
int validation; /* WmlCharSetDefValid */
360
struct WmlCharSetDefStruct
361
*rslvdef; /* resolved definition */
362
char *name; /* data type name */
363
char *int_lit; /* internal literal name */
364
char *xms_name; /* identifying XmString name */
365
short int direction; /* WmlCharSetDirection... */
366
short int parsedirection; /* WmlCharSetDirection... */
367
short int charsize; /* WmlCharSize... */
368
short int alias_cnt; /* alias count */
369
char **alias_list; /* vector of aliases */
370
} WmlSynCharSetDef, *WmlSynCharSetDefPtr;
375
* Data structures constructed during semantic validation. Each points
376
* as required to syntactic data structures. These are typically accessed
377
* from ordered pointer vectors.
382
* A datatype descriptor. It extends the syntactic element by assigning
383
* a code to the descriptor.
385
typedef struct WmlDataTypeDefStruct
387
struct WmlSynDataTypeDefStruct
388
*syndef; /* syntactic definition */
389
char *tkname; /* name for generating literals */
390
} WmlDataTypeDef, *WmlDataTypeDefPtr;
394
* A charset descriptor. It extends the syntactic element by assigning
395
* a code to the descriptor.
397
typedef struct WmlCharSetDefStruct
399
struct WmlSynCharSetDefStruct
400
*syndef; /* syntactic definition */
401
char *tkname; /* name for generating literals */
402
short int sym_code; /* code value for literals */
403
} WmlCharSetDef, *WmlCharSetDefPtr;
406
* A child descriptor. It extends the syntactic element by assigning
407
* a code and a pointer to the class to the descriptor.
409
typedef struct WmlChildDefStruct
411
struct WmlSynChildDefStruct
412
*syndef; /* syntactic definition */
413
char *tkname; /* name for generating literals */
414
short int sym_code; /* code value for literals */
415
struct WmlClassDefStruct
416
*class; /* class structure */
417
struct WmlClassChildDefStruct
418
*ref_ptr; /* used dynamically for search */
419
} WmlChildDef, *WmlChildDefPtr;
422
* An element in the values list of an enumeration set. These elements have
423
* separate lists in order to deal with the possibility of an enumeration
424
* value which is a member of more than one list.
426
typedef struct WmlEnumSetValDefStruct
428
struct WmlEnumSetValDefStruct
429
*next; /* next value in list */
430
struct WmlEnumValueDefStruct
431
*value; /* value descriptor for element */
432
} WmlEnumSetValDef, *WmlEnumSetValDefPtr;
436
* A resolved enumeration set descriptor
438
typedef struct WmlEnumSetDefStruct
440
struct WmlSynEnumSetDefStruct
441
*syndef; /* syntactic definition */
442
char *tkname; /* name for generating literals */
443
short int sym_code; /* code value for literals */
444
WmlDataTypeDefPtr dtype_def; /* data type */
445
short int values_cnt; /* count of # of values in set */
447
values; /* list of values in set */
448
} WmlEnumSetDef, *WmlEnumSetDefPtr;
452
* A resolved enumeration value descriptor
454
typedef struct WmlEnumValueDefStruct
456
struct WmlSynEnumValueDefStruct
457
*syndef; /* syntactic definition */
458
short int sym_code; /* code value for literals */
459
} WmlEnumValueDef, *WmlEnumValueDefPtr;
463
* A resource descriptor
465
typedef struct WmlResourceDefStruct
467
struct WmlSynResourceDefStruct
468
*syndef; /* syntactic definition */
469
char *tkname; /* name for generating literals */
470
short int sym_code; /* code value for literals */
471
WmlDataTypeDefPtr dtype_def; /* data type for base definition */
472
WmlEnumSetDefPtr enumset_def; /* enumeration set if specified */
473
short int related_code; /* if non-0, the sym_code for the
474
related (count) argument */
475
short int xrm_support; /* if AttributeTrue, then the resource
476
can be set in Xrm. Resolved
477
from either explicit setting or
479
struct WmlClassDefStruct
480
*ref_class; /* used for membership sort */
481
struct WmlClassResDefStruct
482
*ref_ptr; /* used dynamically for search */
483
} WmlResourceDef, *WmlResourceDefPtr;
487
* A resource descriptor with overrides which is a member of the resource
488
* list of a class descriptor.
490
typedef struct WmlClassResDefStruct
492
struct WmlClassResDefStruct
493
*next; /* next resource in list */
494
WmlResourceDefPtr act_resource; /* actual resource descriptor */
495
WmlDataTypeDefPtr over_dtype; /* overriding data type */
496
char *dflt; /* overriding default */
497
int exclude; /* WmlAttributeTrue if to be excluded */
498
} WmlClassResDef, *WmlClassResDefPtr;
501
* A child descriptor which is a member of the children
502
* list of a class descriptor.
504
typedef struct WmlClassChildDefStruct
506
struct WmlClassChildDefStruct
507
*next; /* next child in list */
508
WmlChildDefPtr act_child; /* actual child descriptor */
509
} WmlClassChildDef, *WmlClassChildDefPtr;
513
* An element for the controls list of a resolved class descriptor
515
typedef struct WmlClassCtrlDefStruct
517
struct WmlClassCtrlDefStruct
518
*next; /* next control in list */
519
struct WmlClassDefStruct
520
*ctrl; /* class being controlled */
521
} WmlClassCtrlDef, *WmlClassCtrlDefPtr;
526
* A resolved class descriptor. It has a pointer to its superclass, and
527
* a resource list consisting of its inherited resources followed by
530
typedef struct WmlClassDefStruct
532
struct WmlSynClassDefStruct
533
*syndef; /* syntactic definition */
534
struct WmlClassDefStruct
535
*superclass; /* superclass structure */
536
struct WmlClassDefStruct
537
*parentclass; /* parentclass structure */
538
char *tkname; /* name to be used in literals.
539
int_lit or name if no int_lit */
540
short int sym_code; /* code value for literals */
541
short int inherit_done; /* TRUE when inheritance complete */
542
WmlClassResDefPtr arguments; /* linked argument list */
543
WmlClassResDefPtr reasons; /* lined reason list */
544
WmlClassCtrlDefPtr controls; /* list of controlled classes.
545
Controls list references will
546
be expanded into this list. */
547
WmlClassChildDefPtr children; /* list of automatic children */
548
struct WmlClassDefStruct
549
*variant; /* the gadget class for a widget */
550
struct WmlClassDefStruct
551
*nondialog; /* the non-dialog ancestor of a
553
WmlResourceDefPtr ctrlmapto; /* the resource controls map to */
554
struct WmlClassCtrlDefStruct
555
*ref_ptr; /* used dynamically for search */
556
} WmlClassDef, *WmlClassDefPtr;
560
* A resolved controls list descriptor.
562
typedef struct WmlCtrlListDefStruct
564
struct WmlSynCtrlListDefStruct
565
*syndef; /* syntactic definition */
566
WmlClassCtrlDefPtr controls; /* list of controlled classes */
567
} WmlCtrlListDef, *WmlCtrlListDefPtr;
572
* Data structures used to locate and order objects in various ways.
576
* Token structure used to create ordered token lists for generation of
577
* UilKeyTab.h. The token string is in the order vector.
579
typedef struct WmlKeyWTokenStruct
581
int class; /* token class, WmlTokenClass... */
582
ObjectPtr objdef; /* object definition (resolved) */
583
} WmlKeyWToken, *WmlKeyWTokenPtr;
587
* A grammar token as obtained from the UIL grammar file (Uil.y)
589
typedef struct WmlGrammarTokenStruct
591
int class; /* token class, WmlTokenClass... */
592
char *token; /* token name (literal) */
593
int val; /* token id as value */
594
} WmlGrammarToken, *WmlGrammarTokenPtr;
598
* A list element which allows association of a name with an object.
599
* Typically used to construct ordered lists.
603
char *objname; /* object name */
604
ObjectPtr objptr; /* the object */
605
} ObjectHandleDef, *ObjectHandleDefPtr;
608
* A dynamic handle element list, extensible by malloc'ing more space.
612
int cnt; /* # entries in use */
613
int max; /* max # entries available */
614
int ordered; /* TRUE if list is lexicographically
615
ordered by object name */
616
ObjectHandleDefPtr hvec; /* vector of handle entries */
617
} DynamicHandleListDef, *DynamicHandleListDefPtr;
622
* Global declarations
628
extern int wml_err_count; /* total errors */
629
extern int wml_line_count; /* lines read from input */
630
extern DynamicHandleListDefPtr
631
wml_synobj_ptr; /* syntactic object list */
633
extern DynamicHandleListDefPtr wml_obj_datatype_ptr;
634
extern DynamicHandleListDefPtr wml_obj_enumval_ptr;
635
extern DynamicHandleListDefPtr wml_obj_enumset_ptr;
636
extern DynamicHandleListDefPtr wml_obj_reason_ptr;
637
extern DynamicHandleListDefPtr wml_obj_arg_ptr;
638
extern DynamicHandleListDefPtr wml_obj_child_ptr;
639
extern DynamicHandleListDefPtr wml_obj_allclass_ptr;
640
extern DynamicHandleListDefPtr wml_obj_class_ptr;
641
extern DynamicHandleListDefPtr wml_obj_ctrlist_ptr;
642
extern DynamicHandleListDefPtr wml_obj_charset_ptr;
644
extern DynamicHandleListDefPtr wml_tok_sens_ptr;
645
extern DynamicHandleListDefPtr wml_tok_insens_ptr;
651
* Defined in wmlutils.c
653
extern char *wmlAllocateString (); /* dynamic string copy */
654
extern void wmlUpperCaseString (); /* convert to upper case */
655
extern void wmlInitHList (); /* init dynamic list */
656
extern void wmlResizeHList (); /* resize a list */
657
extern void wmlClearHList (); /* clear a list for reuse */
658
extern int wmlFindInHList (); /* find name in list */
659
extern void wmlInsertInHList (); /* generic list insert */
660
extern void wmlInsertInKeyList (); /* specialized list insert */
661
extern WmlClassResDefPtr wmlResolveResIsMember ();
662
/* is resource in class? */
663
extern WmlClassChildDefPtr wmlResolveChildIsMember ();
664
/* is child in class? */
667
* Defined in wmlsynbld.c
669
extern char yystringval[]; /* any string value */
670
extern char yynameval[]; /* any name (identifier) */
671
extern int yytknval1; /* terminal token value 1 */
672
extern int yytknval2; /* terminal token value 2 */
673
extern ObjectPtr wml_cur_obj; /* object being constructed */
674
extern ObjectPtr wml_cur_subobj; /* current subobject */
675
extern void wmlCreateClass ();
676
extern void wmlAddClassAttribute ();
677
extern void wmlAddClassResource ();
678
extern void wmlAddClassResourceAttribute ();
679
extern void wmlAddClassControl ();
680
extern void wmlAddCtrList ();
681
extern void wmlCreateResource ();
682
extern void wmlCreateDatatype ();
683
extern void wmlAddResourceAttribute ();
684
extern void wmlAddDatatypeAttribute ();
685
extern void wmlAddCtrListControl ();
686
extern void wmlCreateEnumSet ();
687
extern void wmlAddEnumSetValue ();
688
extern void wmlCreateEnumValue ();
689
extern void wmlAddEnumValueAttribute ();
690
extern void wmlCreateCharset ();
691
extern void wmlAddCharsetAttribute ();
692
extern void LexIssueError ();
696
* Defined in wmlresolve.c
698
extern void wmlResolveDescriptors ();
699
extern void wmlMarkReferencePointers ();
703
* Defined in wmlouth.c
705
extern void wmlOutputHFiles ();
709
* Defined in wmloutdat.c
711
extern void wmlOutputDatFiles ();
714
* Define in wmloutp1 or wmloutp2
716
extern void wmlOutput ();