/* sgmldecl.h: SGML declaration parsing. */

#define QATTCNT 0 
#define QATTSPLEN 1 
#define QBSEQLEN 2 
#define QDTAGLEN 3 
#define QDTEMPLEN 4 
#define QENTLVL 5 
#define QGRPCNT 6 
#define QGRPGTCNT 7 
#define QGRPLVL 8 
#define QLITLEN 9 
#define QNAMELEN 10
#define QNORMSEP 11
#define QPILEN 12
#define QTAGLEN 13
#define QTAGLVL 14

#define NQUANTITY (QTAGLVL+1)

#define TOTALCAP 0 
#define ENTCAP 1 
#define ENTCHCAP 2 
#define ELEMCAP 3 
#define GRPCAP 4 
#define EXGRPCAP 5 
#define EXNMCAP 6 
#define ATTCAP 7 
#define ATTCHCAP 8 
#define AVGRPCAP 9 
#define NOTCAP 10
#define NOTCHCAP 11
#define IDCAP 12
#define IDREFCAP 13
#define MAPCAP 14
#define LKSETCAP 15
#define LKNMCAP 16

extern char *captab[];

struct sgmldecl {
     long capacity[NCAPACITY];
     long subdoc;
     UNCH formal;
     UNCH omittag;
     UNCH shorttag;
     UNCH shortref;
     UNCH namecase[2];		/* case translation of general/entity names */
     int quantity[NQUANTITY];
};

extern struct sgmldecl sd;

#define OMITTAG (sd.omittag)
#define SUBDOC (sd.subdoc)
#define SHORTTAG (sd.shorttag)
#define FORMAL (sd.formal)

#define ATTCNT (sd.quantity[QATTCNT])
#define ATTSPLEN (sd.quantity[QATTSPLEN])
#define BSEQLEN (sd.quantity[QBSEQLEN])
#define ENTLVL (sd.quantity[QENTLVL])
#define GRPGTCNT (sd.quantity[QGRPGTCNT])
#define GRPCNT (sd.quantity[QGRPCNT])
#define GRPLVL (sd.quantity[QGRPLVL])
#define LITLEN (sd.quantity[QLITLEN])
#define NAMELEN (sd.quantity[QNAMELEN])
#define NORMSEP (sd.quantity[QNORMSEP])
#define PILEN (sd.quantity[QPILEN])
#define TAGLEN (sd.quantity[QTAGLEN])
#define TAGLVL (sd.quantity[QTAGLVL])

#define NAMECASE (sd.namecase[0])
#define ENTCASE (sd.namecase[1])

#define YES 1
#define NO 0

#define UNUSED -1
#define UNKNOWN -2
#define UNDESC -3
#define UNKNOWN_SET -4

extern int asciicharset[];
