Blame tools/wml/wml.h

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
/*   $XConsortium: wml.h /main/9 1995/08/29 11:10:33 drk $ */
Packit b099d7
/*
Packit b099d7
*  (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * This file contains the structure and literal definitions required
Packit b099d7
 * by the WML processor
Packit b099d7
 */
Packit b099d7
Packit b099d7
#if defined(__STDC__)
Packit b099d7
#include <stddef.h>
Packit b099d7
#else
Packit b099d7
#include <stdio.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#define TRUE		1
Packit b099d7
#define FALSE		0
Packit b099d7
#define SUCCESS		1
Packit b099d7
#define FAILURE		0
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Generic object pointer
Packit b099d7
 */
Packit b099d7
typedef	char	*ObjectPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * True and False for attributes, so setting is explicit
Packit b099d7
 */
Packit b099d7
#define	WmlAttributeUnspecified		0
Packit b099d7
#define	WmlAttributeTrue		1
Packit b099d7
#define	WmlAttributeFalse		2
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Values of character set direction
Packit b099d7
 */
Packit b099d7
#define	WmlCharSetDirectionLtoR		1
Packit b099d7
#define	WmlCharSetDirectionRtoL		2
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Values of character set character size
Packit b099d7
 */
Packit b099d7
#define	WmlCharSizeOneByte		1
Packit b099d7
#define	WmlCharSizeTwoByte		2
Packit b099d7
#define	WmlCharSizeMixed1_2Byte		3
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Upper case and lower case converters
Packit b099d7
 */
Packit b099d7
#define _upper(c)	((c) >= 'a' && (c) <= 'z' ? (c) & 0x5F:(c))
Packit b099d7
#define _lower(c)	((c) >= 'A' && (c) <= 'Z' ? (c) | 0x20:(c))
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * The Uil token classes which are dealt with WML. Matched to definitions
Packit b099d7
 * in UilKeyDef.h, although this isn't required.
Packit b099d7
 */
Packit b099d7
#define	WmlTokenClassArgument	1
Packit b099d7
#define	WmlTokenClassCharset	2
Packit b099d7
#define	WmlTokenClassColor	3
Packit b099d7
#define	WmlTokenClassEnumval	4
Packit b099d7
#define	WmlTokenClassFont	5
Packit b099d7
#define	WmlTokenClassIdentifier	6
Packit b099d7
#define	WmlTokenClassKeyword	7
Packit b099d7
#define	WmlTokenClassLiteral	8
Packit b099d7
#define	WmlTokenClassReason	9
Packit b099d7
#define	WmlTokenClassReserved	10
Packit b099d7
#define	WmlTokenClassSpecial	11
Packit b099d7
#define	WmlTokenClassUnused	12
Packit b099d7
#define	WmlTokenClassClass	13
Packit b099d7
#define WmlTokenClassChild	14
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Structures for WML objects. Two kinds are created for each object
Packit b099d7
 * recognized and built as a WML description is read:
Packit b099d7
 *	- A syntactic descriptor, which captures the information parse
Packit b099d7
 *	  from the input in pretty much its raw form
Packit b099d7
 *	- A semantically resolved descriptor, in which pointers to
Packit b099d7
 *	  other descriptors have been resolved, ordering is done, 
Packit b099d7
 *	  superclass inheritance is complete, etc.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Syntactic structures. These are constructred during input parse.
Packit b099d7
 */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A dummy holding only a header. Allows access to the validation field.
Packit b099d7
 */
Packit b099d7
typedef struct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* a unique validation code */
Packit b099d7
    ObjectPtr		rslvdef;	/* the resolved object pointer */
Packit b099d7
    } WmlSynDef, *WmlSynDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A class resource descriptor. This a subset of a full resource descriptor,
Packit b099d7
 * which captures those elements which can be overridden in a class declaration
Packit b099d7
 */
Packit b099d7
#define WmlClassResDefValid	871253
Packit b099d7
Packit b099d7
typedef struct WmlSynClassResDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlClassResDefValid */
Packit b099d7
    struct WmlSynClassResDefStruct
Packit b099d7
			*next;		/* next descriptor in chain */
Packit b099d7
    char		*name;		/* resource name */
Packit b099d7
    char		*type;		/* override type name */
Packit b099d7
    char		*dflt;		/* override default value */
Packit b099d7
    short int		exclude;	/* WmlAttributeTrue if to be excluded */
Packit b099d7
    } WmlSynClassResDef, *WmlSynClassResDefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A class child descriptor. 
Packit b099d7
 */
Packit b099d7
#define WmlClassChildDefValid	780344
Packit b099d7
Packit b099d7
typedef struct WmlSynClassChildDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlClassChildDefValid */
Packit b099d7
    struct WmlSynClassChildDefStruct
Packit b099d7
			*next;		/* next descriptor in chain */
Packit b099d7
    char		*name;		/* child name */
Packit b099d7
    } WmlSynClassChildDef, *WmlSynClassChildDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A class controls descriptor. It contains elements which can be added
Packit b099d7
 * to a controls reference.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define WmlClassCtrlDefValid	7132320
Packit b099d7
Packit b099d7
typedef struct WmlSynClassCtrlDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlClassCtrlDefValid */
Packit b099d7
    struct WmlSynClassCtrlDefStruct
Packit b099d7
			*next;		/* next descriptor in chain */
Packit b099d7
    char		*name;		/* controlled class name */
Packit b099d7
    } WmlSynClassCtrlDef, *WmlSynClassCtrlDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A class structure. One exists for each Class statement in a WML
Packit b099d7
 * description.
Packit b099d7
 */
Packit b099d7
#define WmlClassDefValid	93741
Packit b099d7
Packit b099d7
#define WmlClassTypeMetaclass	1
Packit b099d7
#define	WmlClassTypeWidget	2
Packit b099d7
#define	WmlClassTypeGadget	3
Packit b099d7
Packit b099d7
typedef struct WmlSynClassDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlClassDefValid */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    short int		type;		/* from WmlClassType... */
Packit b099d7
    short int		dialog;		/* TRUE if a dialog class (has
Packit b099d7
					   window manager decoration, etc) */
Packit b099d7
    char		*name;		/* class name */
Packit b099d7
    char		*superclass;	/* superclass name */
Packit b099d7
    char		*parentclass;	/* parentclass name */
Packit b099d7
    char		*widgetclass;	/* widget class name */
Packit b099d7
    char		*int_lit;	/* internal literal name */
Packit b099d7
    char		*convfunc;	/* convenience function name */
Packit b099d7
    char		*docname;	/* name for docs */
Packit b099d7
    char		*ctrlmapto;	/* resource controls map to */
Packit b099d7
    short int		alias_cnt;	/* alias count */
Packit b099d7
    char		**alias_list;	/* vector of aliass */
Packit b099d7
    WmlSynClassCtrlDefPtr
Packit b099d7
			controls;	/* list of controlled classes */
Packit b099d7
    WmlSynClassResDefPtr
Packit b099d7
			resources;	/* list of resources from input */
Packit b099d7
    WmlSynClassChildDefPtr
Packit b099d7
                        children;	/* list of automatic children */
Packit b099d7
    } WmlSynClassDef, *WmlSynClassDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A controls list structure. One is created for each ControlsList statement
Packit b099d7
 * in a WML description.
Packit b099d7
 */
Packit b099d7
#define WmlCtrlListDefValid	621298
Packit b099d7
Packit b099d7
typedef struct WmlSynCtrlListDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlCtrlListDefValid */
Packit b099d7
    struct WmlCtrlListDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    char		*name;		/* controls list name */
Packit b099d7
    WmlSynClassCtrlDefPtr
Packit b099d7
			controls;	/* list of controlled classes */
Packit b099d7
    } WmlSynCtrlListDef, *WmlSynCtrlListDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resource descriptor. One is created for each Resource statement
Packit b099d7
 * in a WML description
Packit b099d7
 */
Packit b099d7
#define WmlResourceDefValid	310538
Packit b099d7
Packit b099d7
#define WmlResourceTypeArgument		1
Packit b099d7
#define	WmlResourceTypeReason		2
Packit b099d7
#define	WmlResourceTypeConstraint	3
Packit b099d7
#define	WmlResourceTypeSubResource	4
Packit b099d7
Packit b099d7
typedef struct WmlSynResourceDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlResourceDefValid */
Packit b099d7
    struct WmlResourceDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    short int		type;		/* from WmlResourceType... */
Packit b099d7
    char		*name;		/* resource name */
Packit b099d7
    char		*datatype;	/* resource data type */
Packit b099d7
    char		*int_lit;	/* internal literal name */
Packit b099d7
    char		*resliteral;	/* resource name literal */
Packit b099d7
    char		*enumset;	/* enumeration set name */
Packit b099d7
    char		*docname;	/* name for docs */
Packit b099d7
    char		*related;	/* names related resource */
Packit b099d7
    char		*dflt;		/* default value */
Packit b099d7
    short int		xrm_support;	/* WmlAttributeTrue if can be
Packit b099d7
					   Xrm resource */
Packit b099d7
    short int		alias_cnt;	/* alias count */
Packit b099d7
    char		**alias_list;	/* vector of aliass */
Packit b099d7
    } WmlSynResourceDef, *WmlSynResourceDefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A child descriptor. One is created for each Child statement
Packit b099d7
 * in a WML description
Packit b099d7
 */
Packit b099d7
#define WmlChildDefValid	229629
Packit b099d7
Packit b099d7
typedef struct WmlSynChildDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlResourceDefValid */
Packit b099d7
    struct WmlChildDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    char		*name;		/* child name */
Packit b099d7
    char		*class;		/* child class */
Packit b099d7
    } WmlSynChildDef, *WmlSynChildDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A datatype descriptor
Packit b099d7
 */
Packit b099d7
#define WmlDataTypeDefValid	714210
Packit b099d7
Packit b099d7
typedef struct WmlSynDataTypeDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlDataTypeDefValid */
Packit b099d7
    struct WmlDataTypeDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    char		*name;		/* data type name */
Packit b099d7
    char		*int_lit;	/* internal literal name */
Packit b099d7
    char		*docname;	/* name for docs */
Packit b099d7
    short int		xrm_support;	/* WmlAttributeTrue if can be
Packit b099d7
					   Xrm resource */
Packit b099d7
    } WmlSynDataTypeDef, *WmlSynDataTypeDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * An enumeration set values descriptor, as it occurs in the list for
Packit b099d7
 * an enumeration set descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlSynEnumSetValDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlEnumValueDefValid */
Packit b099d7
    struct WmlSynEnumSetValDefStruct
Packit b099d7
			*next;		/* next descriptor in chain */
Packit b099d7
    char		*name;		/* enumeration value name */
Packit b099d7
    } WmlSynEnumSetValDef, *WmlSynEnumSetValDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * An enumeration set descriptor
Packit b099d7
 */
Packit b099d7
#define	WmlEnumSetDefValid	931184
Packit b099d7
Packit b099d7
typedef struct WmlSynEnumSetDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlEnumSetDefValid */
Packit b099d7
    struct WmlEnumSetDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    char		*name;		/* enumeration set name */
Packit b099d7
    char		*datatype;	/* enumeration set data type */
Packit b099d7
    WmlSynEnumSetValDefPtr
Packit b099d7
			values;		/* list of values in set */
Packit b099d7
    } WmlSynEnumSetDef, *WmlSynEnumSetDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * An enumeration value descriptor
Packit b099d7
 */
Packit b099d7
#define	WmlEnumValueDefValid	172938
Packit b099d7
Packit b099d7
typedef struct WmlSynEnumValueDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlEnumValueDefValid */
Packit b099d7
    struct WmlEnumValueDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    char		*name;		/* enumeration value name */
Packit b099d7
    char		*enumlit;	/* name of defining literal */
Packit b099d7
    } WmlSynEnumValueDef, *WmlSynEnumValueDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A charset descriptor
Packit b099d7
 */
Packit b099d7
#define WmlCharSetDefValid	110983
Packit b099d7
Packit b099d7
typedef struct WmlSynCharSetDefStruct
Packit b099d7
    {
Packit b099d7
    int			validation;	/* WmlCharSetDefValid */
Packit b099d7
    struct WmlCharSetDefStruct
Packit b099d7
			*rslvdef;	/* resolved definition */
Packit b099d7
    char		*name;		/* data type name */
Packit b099d7
    char		*int_lit;	/* internal literal name */
Packit b099d7
    char		*xms_name;	/* identifying XmString name */
Packit b099d7
    short int		direction;	/* WmlCharSetDirection... */
Packit b099d7
    short int		parsedirection;	/* WmlCharSetDirection... */
Packit b099d7
    short int		charsize;	/* WmlCharSize... */
Packit b099d7
    short int		alias_cnt;	/* alias count */
Packit b099d7
    char		**alias_list;	/* vector of aliases */
Packit b099d7
    } WmlSynCharSetDef, *WmlSynCharSetDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Data structures constructed during semantic validation. Each points
Packit b099d7
 * as required to syntactic data structures. These are typically accessed
Packit b099d7
 * from ordered pointer vectors.
Packit b099d7
 */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A datatype descriptor. It extends the syntactic element by assigning
Packit b099d7
 * a code to the descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlDataTypeDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynDataTypeDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    char		*tkname;	/* name for generating literals */
Packit b099d7
    } WmlDataTypeDef, *WmlDataTypeDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A charset descriptor. It extends the syntactic element by assigning
Packit b099d7
 * a code to the descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlCharSetDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynCharSetDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    char		*tkname;	/* name for generating literals */
Packit b099d7
    short int		sym_code;	/* code value for literals */
Packit b099d7
    } WmlCharSetDef, *WmlCharSetDefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A child descriptor. It extends the syntactic element by assigning
Packit b099d7
 * a code and a pointer to the class to the descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlChildDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynChildDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    char		*tkname;	/* name for generating literals */
Packit b099d7
    short int		sym_code;	/* code value for literals */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
                        *class;		/* class structure */
Packit b099d7
    struct WmlClassChildDefStruct
Packit b099d7
			*ref_ptr;	/* used dynamically for search */
Packit b099d7
    } WmlChildDef, *WmlChildDefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * An element in the values list of an enumeration set. These elements have
Packit b099d7
 * separate lists in order to deal with the possibility of an enumeration
Packit b099d7
 * value which is a member of more than one list.
Packit b099d7
 */
Packit b099d7
typedef struct WmlEnumSetValDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlEnumSetValDefStruct
Packit b099d7
			*next;		/* next value in list */
Packit b099d7
    struct WmlEnumValueDefStruct
Packit b099d7
			*value;		/* value descriptor for element */
Packit b099d7
    } WmlEnumSetValDef, *WmlEnumSetValDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resolved enumeration set descriptor
Packit b099d7
 */
Packit b099d7
typedef struct WmlEnumSetDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynEnumSetDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    char		*tkname;	/* name for generating literals */
Packit b099d7
    short int		sym_code;	/* code value for literals */
Packit b099d7
    WmlDataTypeDefPtr	dtype_def;	/* data type */
Packit b099d7
    short int		values_cnt;	/* count of # of values in set */
Packit b099d7
    WmlEnumSetValDefPtr
Packit b099d7
			values;		/* list of values in set */
Packit b099d7
    } WmlEnumSetDef, *WmlEnumSetDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resolved enumeration value descriptor
Packit b099d7
 */
Packit b099d7
typedef struct WmlEnumValueDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynEnumValueDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    short int		sym_code;	/* code value for literals */
Packit b099d7
    } WmlEnumValueDef, *WmlEnumValueDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resource descriptor
Packit b099d7
 */
Packit b099d7
typedef struct WmlResourceDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynResourceDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    char		*tkname;	/* name for generating literals */
Packit b099d7
    short int		sym_code;	/* code value for literals */
Packit b099d7
    WmlDataTypeDefPtr	dtype_def;	/* data type for base definition */
Packit b099d7
    WmlEnumSetDefPtr	enumset_def;	/* enumeration set if specified */
Packit b099d7
    short int		related_code;	/* if non-0, the sym_code for the
Packit b099d7
					   related (count) argument */
Packit b099d7
    short int		xrm_support;	/* if AttributeTrue, then the resource
Packit b099d7
					   can be set in Xrm. Resolved
Packit b099d7
					   from either explicit setting or
Packit b099d7
					   data type setting */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*ref_class;	/* used for membership sort */
Packit b099d7
    struct WmlClassResDefStruct
Packit b099d7
			*ref_ptr;	/* used dynamically for search */
Packit b099d7
    } WmlResourceDef, *WmlResourceDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resource descriptor with overrides which is a member of the resource
Packit b099d7
 * list of a class descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlClassResDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlClassResDefStruct
Packit b099d7
			*next;		/* next resource in list */
Packit b099d7
    WmlResourceDefPtr	act_resource;	/* actual resource descriptor */
Packit b099d7
    WmlDataTypeDefPtr	over_dtype;	/* overriding data type */
Packit b099d7
    char		*dflt;		/* overriding default */
Packit b099d7
    int			exclude;	/* WmlAttributeTrue if to be excluded */
Packit b099d7
    } WmlClassResDef, *WmlClassResDefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A child descriptor which is a member of the children
Packit b099d7
 * list of a class descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlClassChildDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlClassChildDefStruct
Packit b099d7
			*next;		/* next child in list */
Packit b099d7
    WmlChildDefPtr	act_child;	/* actual child descriptor */
Packit b099d7
  } WmlClassChildDef, *WmlClassChildDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * An element for the controls list of a resolved class descriptor
Packit b099d7
 */
Packit b099d7
typedef struct WmlClassCtrlDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlClassCtrlDefStruct
Packit b099d7
			*next;		/* next control in list */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*ctrl;		/* class being controlled */
Packit b099d7
    } WmlClassCtrlDef, *WmlClassCtrlDefPtr;
Packit b099d7
    
Packit b099d7
    
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resolved class descriptor. It has a pointer to its superclass, and
Packit b099d7
 * a resource list consisting of its inherited resources followed by
Packit b099d7
 * its own resources.
Packit b099d7
 */
Packit b099d7
typedef struct WmlClassDefStruct
Packit b099d7
    {
Packit b099d7
    struct WmlSynClassDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*superclass;	/* superclass structure */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*parentclass;	/* parentclass structure */
Packit b099d7
    char		*tkname;	/* name to be used in literals.
Packit b099d7
					   int_lit or name if no int_lit */
Packit b099d7
    short int		sym_code;	/* code value for literals */
Packit b099d7
    short int		inherit_done;	/* TRUE when inheritance complete */
Packit b099d7
    WmlClassResDefPtr	arguments;	/* linked argument list */
Packit b099d7
    WmlClassResDefPtr	reasons;	/* lined reason list */
Packit b099d7
    WmlClassCtrlDefPtr	controls;	/* list of controlled classes.
Packit b099d7
					   Controls list references will
Packit b099d7
					   be expanded into this list. */
Packit b099d7
    WmlClassChildDefPtr	children;	/* list of automatic children */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*variant;	/* the gadget class for a widget */
Packit b099d7
    struct WmlClassDefStruct
Packit b099d7
			*nondialog;	/* the non-dialog ancestor of a
Packit b099d7
					   dialog widget */
Packit b099d7
    WmlResourceDefPtr	ctrlmapto;	/* the resource controls map to */
Packit b099d7
    struct WmlClassCtrlDefStruct
Packit b099d7
			*ref_ptr;	/* used dynamically for search */
Packit b099d7
    } WmlClassDef, *WmlClassDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A resolved controls list descriptor.
Packit b099d7
 */
Packit b099d7
typedef struct WmlCtrlListDefStruct
Packit b099d7
   {
Packit b099d7
   struct WmlSynCtrlListDefStruct
Packit b099d7
			*syndef;	/* syntactic definition */
Packit b099d7
   WmlClassCtrlDefPtr	controls;	/* list of controlled classes */
Packit b099d7
   } WmlCtrlListDef, *WmlCtrlListDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Data structures used to locate and order objects in various ways.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Token structure used to create ordered token lists for generation of
Packit b099d7
 * UilKeyTab.h. The token string is in the order vector.
Packit b099d7
 */
Packit b099d7
typedef struct WmlKeyWTokenStruct
Packit b099d7
    {
Packit b099d7
    int			class;		/* token class, WmlTokenClass... */
Packit b099d7
    ObjectPtr		objdef;		/* object definition (resolved) */
Packit b099d7
    } WmlKeyWToken, *WmlKeyWTokenPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A grammar token as obtained from the UIL grammar file (Uil.y)
Packit b099d7
 */
Packit b099d7
typedef struct WmlGrammarTokenStruct
Packit b099d7
    {
Packit b099d7
    int			class;		/* token class, WmlTokenClass... */
Packit b099d7
    char		*token;		/* token name (literal) */
Packit b099d7
    int			val;		/* token id as value */
Packit b099d7
    } WmlGrammarToken, *WmlGrammarTokenPtr;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A list element which allows association of a name with an object.
Packit b099d7
 * Typically used to construct ordered lists.
Packit b099d7
 */
Packit b099d7
typedef struct
Packit b099d7
    {
Packit b099d7
    char		*objname;	/* object name */
Packit b099d7
    ObjectPtr		objptr;		/* the object */
Packit b099d7
    } ObjectHandleDef, *ObjectHandleDefPtr;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * A dynamic handle element list, extensible by malloc'ing more space.
Packit b099d7
 */
Packit b099d7
typedef struct
Packit b099d7
    {
Packit b099d7
    int			cnt;		/* # entries in use */
Packit b099d7
    int			max;		/* max # entries available */
Packit b099d7
    int			ordered;	/* TRUE if list is lexicographically
Packit b099d7
					   ordered by object name */
Packit b099d7
    ObjectHandleDefPtr	hvec;		/* vector of handle entries */
Packit b099d7
    } DynamicHandleListDef, *DynamicHandleListDefPtr;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 * Global declarations
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Defined in wml.c
Packit b099d7
 */
Packit b099d7
extern int		wml_err_count;		/* total errors */
Packit b099d7
extern int		wml_line_count;		/* lines read from input */
Packit b099d7
extern DynamicHandleListDefPtr
Packit b099d7
			wml_synobj_ptr;		/* syntactic object list */
Packit b099d7
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_datatype_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_enumval_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_enumset_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_reason_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_arg_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_child_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_allclass_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_class_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_ctrlist_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_obj_charset_ptr;
Packit b099d7
Packit b099d7
extern DynamicHandleListDefPtr	wml_tok_sens_ptr;
Packit b099d7
extern DynamicHandleListDefPtr	wml_tok_insens_ptr;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Defined in wmlutils.c
Packit b099d7
 */
Packit b099d7
extern char *wmlAllocateString ();		/* dynamic string copy */
Packit b099d7
extern void wmlUpperCaseString ();		/* convert to upper case */
Packit b099d7
extern void wmlInitHList ();			/* init dynamic list */
Packit b099d7
extern void wmlResizeHList ();			/* resize a list */
Packit b099d7
extern void wmlClearHList ();			/* clear a list for reuse */
Packit b099d7
extern int wmlFindInHList ();			/* find name in list */
Packit b099d7
extern void wmlInsertInHList ();		/* generic list insert */
Packit b099d7
extern void wmlInsertInKeyList ();		/* specialized list insert */
Packit b099d7
extern WmlClassResDefPtr wmlResolveResIsMember ();
Packit b099d7
						/* is resource in class? */
Packit b099d7
extern WmlClassChildDefPtr wmlResolveChildIsMember ();
Packit b099d7
						/* is child in class? */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Defined in wmlsynbld.c
Packit b099d7
 */
Packit b099d7
extern char		yystringval[];		/* any string value */
Packit b099d7
extern char		yynameval[];		/* any name (identifier) */
Packit b099d7
extern int		yytknval1;		/* terminal token value 1 */
Packit b099d7
extern int		yytknval2;		/* terminal token value 2 */
Packit b099d7
extern ObjectPtr	wml_cur_obj;		/* object being constructed */
Packit b099d7
extern ObjectPtr	wml_cur_subobj;		/* current subobject */
Packit b099d7
extern void wmlCreateClass ();
Packit b099d7
extern void wmlAddClassAttribute ();
Packit b099d7
extern void wmlAddClassResource ();
Packit b099d7
extern void wmlAddClassResourceAttribute ();
Packit b099d7
extern void wmlAddClassControl ();
Packit b099d7
extern void wmlAddCtrList ();
Packit b099d7
extern void wmlCreateResource ();
Packit b099d7
extern void wmlCreateDatatype ();
Packit b099d7
extern void wmlAddResourceAttribute ();
Packit b099d7
extern void wmlAddDatatypeAttribute ();
Packit b099d7
extern void wmlAddCtrListControl ();
Packit b099d7
extern void wmlCreateEnumSet ();
Packit b099d7
extern void wmlAddEnumSetValue ();
Packit b099d7
extern void wmlCreateEnumValue ();
Packit b099d7
extern void wmlAddEnumValueAttribute ();
Packit b099d7
extern void wmlCreateCharset ();
Packit b099d7
extern void wmlAddCharsetAttribute ();
Packit b099d7
extern void LexIssueError ();
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Defined in wmlresolve.c
Packit b099d7
 */
Packit b099d7
extern void wmlResolveDescriptors ();
Packit b099d7
extern void wmlMarkReferencePointers ();
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Defined in wmlouth.c
Packit b099d7
 */
Packit b099d7
extern void wmlOutputHFiles ();
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Defined in wmloutdat.c
Packit b099d7
 */
Packit b099d7
extern void wmlOutputDatFiles ();
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Define in wmloutp1 or wmloutp2
Packit b099d7
 */
Packit b099d7
extern void wmlOutput ();