📄 entity.h
字号:
/* 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"#include "catalog.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 13struct 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 17struct 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. */ int swcap; /* 1=report capcity errors */ 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. */ CATALOG catalog; /* Catalog for generating system identifiers. */};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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -