~ubuntu-branches/ubuntu/quantal/openmotif/quantal

« back to all changes in this revision

Viewing changes to tools/wml/wml.h

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Bauer
  • Date: 2010-06-23 12:12:31 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20100623121231-u89gxdp51sg9wjj2
Tags: 2.3.0-1
* New Maintainer (Closes: #379258) 
* Acknowledge NMU changes
* New upstream release (Closes: #494375)
* Get rid of security patches as they are already part of new upstream
  release (00-xpmvuln.openmotif.patch, 342092-CVE-2005-3964.patch)
* Bump Standards to 3.8.4
* Added {misc:Depends} to make the package lintian cleaner
* Fix weak-library-dev-dependency by adding ${binary:Version}) for the
  -dev Package of openmotif
* Let package depend on autotools-dev to use newer autotools-helper-files
* Work around an autoconf-bug (Gentoo-Bug #1475)
* Added Client-side anti-aliased fonts support via XFT
* Added UTF-8 and UTF8_STRING atom support
* Ability to show text and pixmaps in Label, LabelGadget and all
  derived widgets
* Support of PNG/JPEG image formats in the same way as XPM is supported
* Increase FILE_OFFSET_BITS to 64 to show files >2GB in file-selector
  Idea taken from Magne Oestlyngen (Closes: #288537)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
 *  @OPENGROUP_COPYRIGHT@
 
3
 *  COPYRIGHT NOTICE
 
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.
 
8
 *  
 
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.
 
14
 *  
 
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
 
18
 *  this agreement.
 
19
 *  
 
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
 
25
 *  
 
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.
 
35
*/ 
 
36
/* 
 
37
 * HISTORY
 
38
*/ 
 
39
/*   $XConsortium: wml.h /main/9 1995/08/29 11:10:33 drk $ */
 
40
/*
 
41
*  (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
 
42
 
 
43
/*
 
44
 * This file contains the structure and literal definitions required
 
45
 * by the WML processor
 
46
 */
 
47
 
 
48
#if defined(__STDC__)
 
49
#include <stddef.h>
 
50
#else
 
51
#include <stdio.h>
 
52
#endif
 
53
 
 
54
#define TRUE            1
 
55
#define FALSE           0
 
56
#define SUCCESS         1
 
57
#define FAILURE         0
 
58
 
 
59
/*
 
60
 * Generic object pointer
 
61
 */
 
62
typedef char    *ObjectPtr;
 
63
 
 
64
 
 
65
/*
 
66
 * True and False for attributes, so setting is explicit
 
67
 */
 
68
#define WmlAttributeUnspecified         0
 
69
#define WmlAttributeTrue                1
 
70
#define WmlAttributeFalse               2
 
71
 
 
72
/*
 
73
 * Values of character set direction
 
74
 */
 
75
#define WmlCharSetDirectionLtoR         1
 
76
#define WmlCharSetDirectionRtoL         2
 
77
 
 
78
/*
 
79
 * Values of character set character size
 
80
 */
 
81
#define WmlCharSizeOneByte              1
 
82
#define WmlCharSizeTwoByte              2
 
83
#define WmlCharSizeMixed1_2Byte         3
 
84
 
 
85
 
 
86
/*
 
87
 * Upper case and lower case converters
 
88
 */
 
89
#define _upper(c)       ((c) >= 'a' && (c) <= 'z' ? (c) & 0x5F:(c))
 
90
#define _lower(c)       ((c) >= 'A' && (c) <= 'Z' ? (c) | 0x20:(c))
 
91
 
 
92
 
 
93
/*
 
94
 * The Uil token classes which are dealt with WML. Matched to definitions
 
95
 * in UilKeyDef.h, although this isn't required.
 
96
 */
 
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
 
111
 
 
112
 
 
113
 
 
114
/*
 
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.
 
122
 */
 
123
 
 
124
/*
 
125
 * Syntactic structures. These are constructred during input parse.
 
126
 */
 
127
 
 
128
 
 
129
/*
 
130
 * A dummy holding only a header. Allows access to the validation field.
 
131
 */
 
132
typedef struct
 
133
    {
 
134
    int                 validation;     /* a unique validation code */
 
135
    ObjectPtr           rslvdef;        /* the resolved object pointer */
 
136
    } WmlSynDef, *WmlSynDefPtr;
 
137
 
 
138
 
 
139
 
 
140
/*
 
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
 
143
 */
 
144
#define WmlClassResDefValid     871253
 
145
 
 
146
typedef struct WmlSynClassResDefStruct
 
147
    {
 
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;
 
156
 
 
157
/*
 
158
 * A class child descriptor. 
 
159
 */
 
160
#define WmlClassChildDefValid   780344
 
161
 
 
162
typedef struct WmlSynClassChildDefStruct
 
163
    {
 
164
    int                 validation;     /* WmlClassChildDefValid */
 
165
    struct WmlSynClassChildDefStruct
 
166
                        *next;          /* next descriptor in chain */
 
167
    char                *name;          /* child name */
 
168
    } WmlSynClassChildDef, *WmlSynClassChildDefPtr;
 
169
 
 
170
 
 
171
/*
 
172
 * A class controls descriptor. It contains elements which can be added
 
173
 * to a controls reference.
 
174
 */
 
175
 
 
176
#define WmlClassCtrlDefValid    7132320
 
177
 
 
178
typedef struct WmlSynClassCtrlDefStruct
 
179
    {
 
180
    int                 validation;     /* WmlClassCtrlDefValid */
 
181
    struct WmlSynClassCtrlDefStruct
 
182
                        *next;          /* next descriptor in chain */
 
183
    char                *name;          /* controlled class name */
 
184
    } WmlSynClassCtrlDef, *WmlSynClassCtrlDefPtr;
 
185
 
 
186
 
 
187
/*
 
188
 * A class structure. One exists for each Class statement in a WML
 
189
 * description.
 
190
 */
 
191
#define WmlClassDefValid        93741
 
192
 
 
193
#define WmlClassTypeMetaclass   1
 
194
#define WmlClassTypeWidget      2
 
195
#define WmlClassTypeGadget      3
 
196
 
 
197
typedef struct WmlSynClassDefStruct
 
198
    {
 
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 */
 
217
    WmlSynClassResDefPtr
 
218
                        resources;      /* list of resources from input */
 
219
    WmlSynClassChildDefPtr
 
220
                        children;       /* list of automatic children */
 
221
    } WmlSynClassDef, *WmlSynClassDefPtr;
 
222
 
 
223
 
 
224
/*
 
225
 * A controls list structure. One is created for each ControlsList statement
 
226
 * in a WML description.
 
227
 */
 
228
#define WmlCtrlListDefValid     621298
 
229
 
 
230
typedef struct WmlSynCtrlListDefStruct
 
231
    {
 
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;
 
239
 
 
240
 
 
241
/*
 
242
 * A resource descriptor. One is created for each Resource statement
 
243
 * in a WML description
 
244
 */
 
245
#define WmlResourceDefValid     310538
 
246
 
 
247
#define WmlResourceTypeArgument         1
 
248
#define WmlResourceTypeReason           2
 
249
#define WmlResourceTypeConstraint       3
 
250
#define WmlResourceTypeSubResource      4
 
251
 
 
252
typedef struct WmlSynResourceDefStruct
 
253
    {
 
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
 
267
                                           Xrm resource */
 
268
    short int           alias_cnt;      /* alias count */
 
269
    char                **alias_list;   /* vector of aliass */
 
270
    } WmlSynResourceDef, *WmlSynResourceDefPtr;
 
271
 
 
272
/*
 
273
 * A child descriptor. One is created for each Child statement
 
274
 * in a WML description
 
275
 */
 
276
#define WmlChildDefValid        229629
 
277
 
 
278
typedef struct WmlSynChildDefStruct
 
279
    {
 
280
    int                 validation;     /* WmlResourceDefValid */
 
281
    struct WmlChildDefStruct
 
282
                        *rslvdef;       /* resolved definition */
 
283
    char                *name;          /* child name */
 
284
    char                *class;         /* child class */
 
285
    } WmlSynChildDef, *WmlSynChildDefPtr;
 
286
 
 
287
 
 
288
/*
 
289
 * A datatype descriptor
 
290
 */
 
291
#define WmlDataTypeDefValid     714210
 
292
 
 
293
typedef struct WmlSynDataTypeDefStruct
 
294
    {
 
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
 
302
                                           Xrm resource */
 
303
    } WmlSynDataTypeDef, *WmlSynDataTypeDefPtr;
 
304
 
 
305
 
 
306
/*
 
307
 * An enumeration set values descriptor, as it occurs in the list for
 
308
 * an enumeration set descriptor.
 
309
 */
 
310
typedef struct WmlSynEnumSetValDefStruct
 
311
    {
 
312
    int                 validation;     /* WmlEnumValueDefValid */
 
313
    struct WmlSynEnumSetValDefStruct
 
314
                        *next;          /* next descriptor in chain */
 
315
    char                *name;          /* enumeration value name */
 
316
    } WmlSynEnumSetValDef, *WmlSynEnumSetValDefPtr;
 
317
 
 
318
 
 
319
/*
 
320
 * An enumeration set descriptor
 
321
 */
 
322
#define WmlEnumSetDefValid      931184
 
323
 
 
324
typedef struct WmlSynEnumSetDefStruct
 
325
    {
 
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;
 
334
 
 
335
 
 
336
 
 
337
/*
 
338
 * An enumeration value descriptor
 
339
 */
 
340
#define WmlEnumValueDefValid    172938
 
341
 
 
342
typedef struct WmlSynEnumValueDefStruct
 
343
    {
 
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;
 
350
 
 
351
 
 
352
/*
 
353
 * A charset descriptor
 
354
 */
 
355
#define WmlCharSetDefValid      110983
 
356
 
 
357
typedef struct WmlSynCharSetDefStruct
 
358
    {
 
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;
 
371
 
 
372
 
 
373
 
 
374
/*
 
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.
 
378
 */
 
379
 
 
380
 
 
381
/*
 
382
 * A datatype descriptor. It extends the syntactic element by assigning
 
383
 * a code to the descriptor.
 
384
 */
 
385
typedef struct WmlDataTypeDefStruct
 
386
    {
 
387
    struct WmlSynDataTypeDefStruct
 
388
                        *syndef;        /* syntactic definition */
 
389
    char                *tkname;        /* name for generating literals */
 
390
    } WmlDataTypeDef, *WmlDataTypeDefPtr;
 
391
 
 
392
 
 
393
/*
 
394
 * A charset descriptor. It extends the syntactic element by assigning
 
395
 * a code to the descriptor.
 
396
 */
 
397
typedef struct WmlCharSetDefStruct
 
398
    {
 
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;
 
404
 
 
405
/*
 
406
 * A child descriptor. It extends the syntactic element by assigning
 
407
 * a code and a pointer to the class to the descriptor.
 
408
 */
 
409
typedef struct WmlChildDefStruct
 
410
    {
 
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;
 
420
 
 
421
/*
 
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.
 
425
 */
 
426
typedef struct WmlEnumSetValDefStruct
 
427
    {
 
428
    struct WmlEnumSetValDefStruct
 
429
                        *next;          /* next value in list */
 
430
    struct WmlEnumValueDefStruct
 
431
                        *value;         /* value descriptor for element */
 
432
    } WmlEnumSetValDef, *WmlEnumSetValDefPtr;
 
433
 
 
434
 
 
435
/*
 
436
 * A resolved enumeration set descriptor
 
437
 */
 
438
typedef struct WmlEnumSetDefStruct
 
439
    {
 
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 */
 
446
    WmlEnumSetValDefPtr
 
447
                        values;         /* list of values in set */
 
448
    } WmlEnumSetDef, *WmlEnumSetDefPtr;
 
449
 
 
450
 
 
451
/*
 
452
 * A resolved enumeration value descriptor
 
453
 */
 
454
typedef struct WmlEnumValueDefStruct
 
455
    {
 
456
    struct WmlSynEnumValueDefStruct
 
457
                        *syndef;        /* syntactic definition */
 
458
    short int           sym_code;       /* code value for literals */
 
459
    } WmlEnumValueDef, *WmlEnumValueDefPtr;
 
460
 
 
461
 
 
462
/*
 
463
 * A resource descriptor
 
464
 */
 
465
typedef struct WmlResourceDefStruct
 
466
    {
 
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
 
478
                                           data type setting */
 
479
    struct WmlClassDefStruct
 
480
                        *ref_class;     /* used for membership sort */
 
481
    struct WmlClassResDefStruct
 
482
                        *ref_ptr;       /* used dynamically for search */
 
483
    } WmlResourceDef, *WmlResourceDefPtr;
 
484
 
 
485
 
 
486
/*
 
487
 * A resource descriptor with overrides which is a member of the resource
 
488
 * list of a class descriptor.
 
489
 */
 
490
typedef struct WmlClassResDefStruct
 
491
    {
 
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;
 
499
 
 
500
/*
 
501
 * A child descriptor which is a member of the children
 
502
 * list of a class descriptor.
 
503
 */
 
504
typedef struct WmlClassChildDefStruct
 
505
    {
 
506
    struct WmlClassChildDefStruct
 
507
                        *next;          /* next child in list */
 
508
    WmlChildDefPtr      act_child;      /* actual child descriptor */
 
509
  } WmlClassChildDef, *WmlClassChildDefPtr;
 
510
 
 
511
 
 
512
/*
 
513
 * An element for the controls list of a resolved class descriptor
 
514
 */
 
515
typedef struct WmlClassCtrlDefStruct
 
516
    {
 
517
    struct WmlClassCtrlDefStruct
 
518
                        *next;          /* next control in list */
 
519
    struct WmlClassDefStruct
 
520
                        *ctrl;          /* class being controlled */
 
521
    } WmlClassCtrlDef, *WmlClassCtrlDefPtr;
 
522
    
 
523
    
 
524
 
 
525
/*
 
526
 * A resolved class descriptor. It has a pointer to its superclass, and
 
527
 * a resource list consisting of its inherited resources followed by
 
528
 * its own resources.
 
529
 */
 
530
typedef struct WmlClassDefStruct
 
531
    {
 
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
 
552
                                           dialog widget */
 
553
    WmlResourceDefPtr   ctrlmapto;      /* the resource controls map to */
 
554
    struct WmlClassCtrlDefStruct
 
555
                        *ref_ptr;       /* used dynamically for search */
 
556
    } WmlClassDef, *WmlClassDefPtr;
 
557
 
 
558
 
 
559
/*
 
560
 * A resolved controls list descriptor.
 
561
 */
 
562
typedef struct WmlCtrlListDefStruct
 
563
   {
 
564
   struct WmlSynCtrlListDefStruct
 
565
                        *syndef;        /* syntactic definition */
 
566
   WmlClassCtrlDefPtr   controls;       /* list of controlled classes */
 
567
   } WmlCtrlListDef, *WmlCtrlListDefPtr;
 
568
 
 
569
 
 
570
 
 
571
/*
 
572
 * Data structures used to locate and order objects in various ways.
 
573
 */
 
574
 
 
575
/*
 
576
 * Token structure used to create ordered token lists for generation of
 
577
 * UilKeyTab.h. The token string is in the order vector.
 
578
 */
 
579
typedef struct WmlKeyWTokenStruct
 
580
    {
 
581
    int                 class;          /* token class, WmlTokenClass... */
 
582
    ObjectPtr           objdef;         /* object definition (resolved) */
 
583
    } WmlKeyWToken, *WmlKeyWTokenPtr;
 
584
 
 
585
 
 
586
/*
 
587
 * A grammar token as obtained from the UIL grammar file (Uil.y)
 
588
 */
 
589
typedef struct WmlGrammarTokenStruct
 
590
    {
 
591
    int                 class;          /* token class, WmlTokenClass... */
 
592
    char                *token;         /* token name (literal) */
 
593
    int                 val;            /* token id as value */
 
594
    } WmlGrammarToken, *WmlGrammarTokenPtr;
 
595
 
 
596
 
 
597
/*
 
598
 * A list element which allows association of a name with an object.
 
599
 * Typically used to construct ordered lists.
 
600
 */
 
601
typedef struct
 
602
    {
 
603
    char                *objname;       /* object name */
 
604
    ObjectPtr           objptr;         /* the object */
 
605
    } ObjectHandleDef, *ObjectHandleDefPtr;
 
606
 
 
607
/*
 
608
 * A dynamic handle element list, extensible by malloc'ing more space.
 
609
 */
 
610
typedef struct
 
611
    {
 
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;
 
618
 
 
619
 
 
620
 
 
621
/*
 
622
 * Global declarations
 
623
 */
 
624
 
 
625
/*
 
626
 * Defined in wml.c
 
627
 */
 
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 */
 
632
 
 
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;
 
643
 
 
644
extern DynamicHandleListDefPtr  wml_tok_sens_ptr;
 
645
extern DynamicHandleListDefPtr  wml_tok_insens_ptr;
 
646
 
 
647
 
 
648
 
 
649
 
 
650
/*
 
651
 * Defined in wmlutils.c
 
652
 */
 
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? */
 
665
 
 
666
/*
 
667
 * Defined in wmlsynbld.c
 
668
 */
 
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 ();
 
693
 
 
694
 
 
695
/*
 
696
 * Defined in wmlresolve.c
 
697
 */
 
698
extern void wmlResolveDescriptors ();
 
699
extern void wmlMarkReferencePointers ();
 
700
 
 
701
 
 
702
/*
 
703
 * Defined in wmlouth.c
 
704
 */
 
705
extern void wmlOutputHFiles ();
 
706
 
 
707
 
 
708
/*
 
709
 * Defined in wmloutdat.c
 
710
 */
 
711
extern void wmlOutputDatFiles ();
 
712
 
 
713
/*
 
714
 * Define in wmloutp1 or wmloutp2
 
715
 */
 
716
extern void wmlOutput ();