213 lines
10 KiB
C
213 lines
10 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these libraries and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/* $XConsortium: entity.h /main/3 1996/06/19 17:14:51 drk $ */
|
|
/* Struct dcncb: attribute list added to support data attributes. */
|
|
#ifndef ENTITY_H /* Don't include this file more than once. */
|
|
#define ENTITY_H
|
|
/* ENTITY.H: Definitions and control block templates for entity management.
|
|
*/
|
|
#include "tools.h" /* Definitions for type declarations, etc. */
|
|
#include "msgcat.h"
|
|
|
|
#define STDINNAME "-" /* File name that refers to standard input. */
|
|
|
|
#define EOS '\0' /* NONCHAR: EE (entity end: strings). */
|
|
|
|
#define AVALCASE 2 /* 2=untranslated string of name characters. */
|
|
|
|
#define REFNAMELEN 8 /* reference quantity set NAMELEN */
|
|
#define REFLITLEN 240 /* reference quantity set LITLEN */
|
|
|
|
/* Minimization status of returned tags.
|
|
*/
|
|
#define MINNONE 0 /* Minimization: tag not minimized. */
|
|
#define MINNULL 1 /* Minimization: tag was null. */
|
|
#define MINNET 2 /* Minimization: end-tag was NET delimiter. */
|
|
#define MINDATA 3 /* Minimization: end-tag was data tag. */
|
|
#define MINSTAG 4 /* Minimization: tag implied by start-tag. */
|
|
#define MINETAG 5 /* Minimization: end-tag implied by end-tag. */
|
|
|
|
/* Formal public identifier public text classes.
|
|
*/
|
|
#define FPICAP 1
|
|
#define FPICHARS 2
|
|
#define FPINOT 3
|
|
#define FPISYN 4
|
|
#define FPICMINV 5 /* Minimum fpic value for versionable text. */
|
|
#define FPIDOC 5
|
|
#define FPIDTD 6
|
|
#define FPIELEM 7
|
|
#define FPIENT 8
|
|
#define FPILPD 9
|
|
#define FPINON 10
|
|
#define FPISHORT 11
|
|
#define FPISUB 12
|
|
#define FPITEXT 13
|
|
struct fpi { /* Formal public identifier. */
|
|
UNCH fpiot; /* Owner type: + or - or ! (for ISO). */
|
|
UNS fpiol; /* Length of owner identifier. */
|
|
UNS fpio; /* Offset in pubis of owner identifier (no EOS).*/
|
|
int fpic; /* Public text class. */
|
|
UNCH fpitt; /* Text type: - or + (for available). */
|
|
UNS fpitl; /* Length of text identifier. */
|
|
UNS fpit; /* Offset in pubis of text identifier (no EOS). */
|
|
UNS fpill; /* Language/designating sequence length. */
|
|
UNS fpil; /* Offset in pubis of language. */
|
|
UNS fpivl; /* Length of display version . */
|
|
UNS fpiv; /* Offset in pubis of display version (no EOS). */
|
|
int fpiversw; /* 1=use best ver; 0=use stated ver; -1=error. */
|
|
UNCH *fpinm; /* Entity/DCN name (EOS, no length). */
|
|
UNCH fpistore; /* 1=NDATA 2=general 3=parm 4=DTD 5=LPD 6=DCN. */
|
|
/* Name of the entity's DCN. Valid only when fpistore == 1.
|
|
NULL if it's a SUBDOC. */
|
|
UNCH *fpinedcn;
|
|
UNCH *fpipubis; /* Public ID string (EOS). */
|
|
UNCH *fpisysis; /* System ID string (EOS). */
|
|
};
|
|
#define FPISZ sizeof(struct fpi)
|
|
typedef struct fpi *PFPI; /* Ptr to FPI control block. */
|
|
|
|
/* General control blocks.
|
|
*/
|
|
#define NONONCH 1 /* Character references to non-chars invalid. */
|
|
#define OKNONCH 0 /* Character references to non-chars allowed. */
|
|
struct parse { /* Parse control block. */
|
|
char *pname; /* Parse name; content, tag, etc. */
|
|
UNCH *plex; /* Lexical analysis table. */
|
|
UNCH **ptab; /* State and action table. */
|
|
UNS state; /* State. */
|
|
UNS input; /* Input. */
|
|
UNS action; /* Action. */
|
|
UNS newstate; /* Next state. */
|
|
};
|
|
struct restate {
|
|
UNS sstate; /* State. */
|
|
UNS sinput; /* Input. */
|
|
UNS saction; /* Action. */
|
|
UNS snext; /* Next state. */
|
|
};
|
|
struct map {
|
|
UNCH *mapnm; /* Name followed by EOS. */
|
|
int mapdata; /* Data associated with that name. */
|
|
};
|
|
struct hash { /* Dummy structure for function arguments. */
|
|
struct hash *enext; /* Next entry in chain. */
|
|
UNCH *ename; /* Entry name with size and EOS. */
|
|
};
|
|
typedef struct hash *PHASH; /* Ptr to hash table entry. */
|
|
typedef struct hash **THASH; /* Ptr to hash table. */
|
|
|
|
struct fwdref { /* A forward id reference. */
|
|
struct fwdref *next; /* Pt to next reference in chain. */
|
|
UNIV msg; /* Ptr to saved error messsage. */
|
|
};
|
|
#define FWDREFSZ sizeof(struct fwdref)
|
|
|
|
struct dcncb { /* Data content notation control block. */
|
|
struct dcncb *enext; /* Next DCN in chain. */
|
|
UNCH *ename; /* Notation name followed by EOS. */
|
|
UNCH mark; /* For use by application. */
|
|
UNCH entsw; /* Entity defined with this notation? */
|
|
UNCH defined; /* Has this notation been defined. */
|
|
UNCH *sysid; /* System identifier of notation. */
|
|
UNCH *pubid; /* Public identifier of notation. */
|
|
struct ad *adl; /* Data attribute list (NULL if none). */
|
|
};
|
|
#define DCBSZ sizeof(struct dcncb)
|
|
#define DCNMARK(p) ((p)->mark ? 1 : ((p)->mark = 1, 0))
|
|
|
|
typedef struct dcncb *PDCB; /* Ptr to DCN control block. */
|
|
|
|
/* Number of capacities in a capacity set. */
|
|
|
|
#define NCAPACITY 17
|
|
|
|
struct sgmlcap {
|
|
char **name;
|
|
UNCH *points;
|
|
long *number;
|
|
long *limit;
|
|
};
|
|
|
|
struct sgmlstat { /* Document statistics. */
|
|
UNS dcncnt; /* Number of data content notations defined. */
|
|
UNS pmexgcnt; /* Number of plus or minus exception groups. */
|
|
UNS etdcnt; /* Number of element types declared. */
|
|
UNS etdercnt; /* Number of element types defined by default. */
|
|
UNS pmexcnt; /* Number of plus/minus exception grp members. */
|
|
UNS modcnt; /* Number of content model tokens defined. */
|
|
UNS attcnt; /* Number of attributes defined. */
|
|
UNS attdef; /* Characters of attribute defaults defined. */
|
|
UNS attgcnt; /* Number of att value grp members (incl dcn). */
|
|
UNS idcnt; /* Number of ID attributes specified. */
|
|
UNS idrcnt; /* Number of ID references specified. */
|
|
UNS ecbcnt; /* Number of entities declared. */
|
|
UNS ecbtext; /* Characters of entity text defined. */
|
|
UNS srcnt; /* Number of short reference tables defined. */
|
|
UNS dcntext; /* Characters of notation identifiers defined. */
|
|
};
|
|
struct switches { /* Parser control switches (1=non-standard). */
|
|
int swdupent; /* 1=msg if duplicate ENTITY def attempted;0=no.*/
|
|
int swcommnt; /* 1=return comment declarations as data; 0=no. */
|
|
int swrefmsg; /* 1=msg if undeclared ref is defaulted; 0=no. */
|
|
UNS swbufsz; /* Size of source file buffer for READ(). */
|
|
int swenttr; /* 1=trace entity stack in error messages; 0=no.*/
|
|
int sweltr; /* 1=trace element stack in error messages; 0=no. */
|
|
int swambig; /* 1=check content model ambiguity */
|
|
int swundef; /* 1=warn about undefined elements and notations. */
|
|
char *prog; /* Program name for error messages. */
|
|
#ifdef TRACE
|
|
char *trace; /* What to trace in the body. */
|
|
char *ptrace; /* What to trace in the prolog. */
|
|
#endif /* TRACE */
|
|
nl_catd catd; /* Message catalog descriptor. */
|
|
long nopen; /* Number of open document entities */
|
|
int onlypro; /* Parse only the prolog. */
|
|
char **includes; /* List of parameter entities to be defined
|
|
as "INCLUDE"; NULL terminated.*/
|
|
VOID (*die) P((void)); /* Function to call on fatal error. */
|
|
};
|
|
struct markup { /* Delimiter strings for text processor. */
|
|
UNCH *cro; /* LEXCON markup string: CRO */
|
|
UNCH *dso; /* LEXCON markup string: DSO */
|
|
UNCH *ero; /* LEXCON markup string: ERO */
|
|
UNCH *etag; /* LEXMARK markup string: end-tag */
|
|
UNCH *lit; /* LEXMARK markup string: LIT */
|
|
UNCH *lita; /* LEXMARK markup string: LITA */
|
|
UNCH *mdc; /* LEXCON markup string: MDC */
|
|
UNCH *mdo; /* LEXCON markup string: MDO */
|
|
UNCH *mse; /* LEXCON markup string: mse */
|
|
UNCH *mss; /* LEXCON markup string: mss */
|
|
UNCH *mssc; /* LEXCON markup string: mss CDATA */
|
|
UNCH *mssr; /* LEXCON markup string: mss RCDATA */
|
|
UNCH *pic; /* LEXCON markup string: PIC */
|
|
UNCH *pio; /* LEXCON markup string: PIO */
|
|
UNCH *refc; /* LEXGRP markup string: REFC */
|
|
UNCH *stag; /* LEXMARK markup string: start-tag */
|
|
UNCH *tagc; /* LEXMARK markup string: TAGC */
|
|
UNCH *vi; /* LEXMARK markup string: VI */
|
|
int lennet; /* LEXMARK markup string length: null end-tag. */
|
|
int lennst; /* LEXMARK markup string length: null start-tag.*/
|
|
};
|
|
#endif /* ndef ENTITY_H */
|