home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 10
/
Fresh_Fish_10_2352.bin
/
new
/
dev
/
lang
/
sgmls
/
src
/
sgmlmain.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-07-10
|
5KB
|
102 lines
/* SGMLMAIN: Main interface to SGML services.
Preprocessor variable names are the only supported interface
to data maintained by SGML. They are defined in this file or in adl.h.
*/
/* Return control block types (RCBTYPE) from calls to parser (SGML):
Names and strings follow the convention for the IPBs.
*/
enum sgmlevent {
SGMLEOD, /* End of document. */
SGMLDAF, /* Data found. */
SGMLSTG, /* Start-tag found. */
SGMLETG, /* End-tag found. */
SGMLREF, /* Record end found. */
SGMLPIS, /* Processing instruction (string). */
SGMLAPP /* APPINFO (string) */
};
struct rcbdata { /* Return control block: DAF EOD REF PIS APP. */
UNS contersw; /* 1=context error; 2,4,8=data type; 0=not. */
UNS datalen; /* Length of data or PI (0=single nonchar). */
UNCH *data; /* Data, PI, single nonSGML, or NDATA ecb ptr. */
};
struct rcbtag { /* Return control block for STG and ETG. */
UNS contersw; /* 1=context error; 2=NET enabled; 0/0=not. */
UNS tagmin; /* Minim: NONE NULL NET DATA; implied by S/ETAG */
UNCH *curgi; /* Start-tag (or end-tag) GI. */
union {
struct ad *al; /* Start-tag: attribute list. */
UNCH *oldgi; /* End-tag: resumed GI. */
} ru;
struct ad *lal; /* Start-tag: link attribute list (UNUSED). */
UNS format; /* Format class for default processing. */
struct etd *tagreal; /* Dummy etd or ptr to GI that implied this tag.*/
int etictr; /* Number of elements on stack with NET enabled.*/
UNCH *srmnm; /* Current SHORTREF map name (NULL=#EMPTY). */
};
/* Accessors for rcbdata and rcbtag. */
/* Datatype abbreviations: C=unsigned char S=string U=unsigned int L=4 bytes
A=array P=ptr to structure N=name (see sgmlcb.h)
*/
/* Data control block fields: processing instructions (SGMLPIS).
*/
#define PDATA(d) ((d).data) /*S PI string. */
#define PDATALEN(d) ((d).datalen) /*U Length of PI string. */
#define PIESW(d) (((d).contersw & 4)) /*U 1=PIDATA entity returned. */
/* Data control block fields: other data types.
*/
#define CDATA(d) ((d).data) /*S CDATA content string. */
#define CDATALEN(d) ((d).datalen) /*U Length of CDATA content string. */
#define CONTERSW(d) (((d).contersw &1))/*U 1=CDATA or TAG out of context. */
#define CDESW(d) (((d).contersw & 2)) /*U 1=CDATA entity returned. */
#define SDESW(d) (((d).contersw & 4)) /*U 1=SDATA entity returned. */
#define NDESW(d) (((d).contersw & 8)) /*U 1=NDATA entity returned. */
#define NEPTR(d) ((PNE)(d).data) /*P Ptr to NDATA control block. */
#define MARKUP(d) ((d).data) /*A Markup delimiter strings. */
#define DTYPELEN(d) ((d).datalen) /*U Length of doc type name +len+EOS. */
#define DOCTYPE(d) ((d).data) /*S Document type name (with len+EOS). */
#define ADATA(d) ((d).data) /*S APPINFO */
#define ADATALEN(d) ((d).datalen) /*U Length of APPINFO string. */
/* Tag control block fields.
*/
#define ALPTR(t) ((t).ru.al) /*P Ptr to SGML attribute list. */
#define CURGI(t) ((t).curgi+1) /*N GI of started or ended element. */
#define OLDGI(t) ((t).ru.oldgi) /*S GI of resumed element. */
#define TAGMIN(t) (t).tagmin /*U Minimization for current tag. */
#define TAGREAL(t) ((t).tagreal) /*P Dummy etd that implied this tag. */
#define TAGRLNM(t) ((UNCH *)(t).tagreal) /*P GI of tag that implied this tag.*/
#define ETISW(t) (((t).contersw & 2)) /*U 1=NET delimiter enabled by ETI. */
#define PEXSW(t) (((t).contersw & 4)) /*U 1=Element was plus exception. */
#define MTYSW(t) (((t).contersw & 8)) /*U 1=Element is empty. */
#define ETICTR(t) ((t).etictr) /*U Number of active NET delimiters. */
#define SRMNM(t) ((t).srmnm) /*S Name of current SHORTREF map. */
#define SRMCNT(t) ((t).contersw) /*U Number of SHORTREF maps defined. */
#define FORMAT(t) ((t).format) /*U Format class.*/
/* These function names are chosen so as to be distinct in the first 6
letters. */
/* Initialize. */
struct markup *sgmlset P((struct switches *));
/* Cleanup and return capacity usage statistics. */
VOID sgmlend P((struct sgmlcap *));
/* Set document entity. */
int sgmlsdoc P((UNIV));
/* Get entity. */
int sgmlgent P((UNCH *, PNE *, UNCH **));
/* Mark an entity. Return is non-zero if already marked.*/
int sgmlment P((UNCH *));
/* Get the next sgml event. */
enum sgmlevent sgmlnext P((struct rcbdata *, struct rcbtag *));
/* Get the error count. */
int sgmlgcnterr P((void));
/* Get the current location. */
int sgmlloc P((unsigned long *, char **));
/* Write out the SGML declaration. */
VOID sgmlwrsd P((FILE *));
/* Note subdocument capacity usage. */
VOID sgmlsubcap P((long *));