e.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. enum charclass {
  5. OTHER, OLET, ILET, DIG, LPAR, RPAR, SLASH, PLUS, ILETF, ILETJ, VBAR,
  6. NONE, LAST
  7. };
  8. extern int class[LAST][LAST];
  9. #define dprintf if (dbg) printf
  10. #define max(x,y) (((x) >= (y)) ? (x) : (y)) /* beware of side effects */
  11. #define min(x,y) (((x) <= (y)) ? (x) : (y))
  12. extern char errbuf[200];
  13. extern char *cmdname;
  14. #define ERROR sprintf(errbuf,
  15. #define FATAL ), error(1, errbuf)
  16. #define WARNING ), error(0, errbuf)
  17. #define SYNTAX ), yyerror(errbuf)
  18. #define ROM '1'
  19. #define ITAL '2'
  20. #define BLD '3'
  21. #define BDIT '4'
  22. #define DEFGAP -999 /* default gap in piles */
  23. extern int dbg;
  24. extern int ct;
  25. extern int lp[];
  26. extern int used[]; /* available registers */
  27. extern int ps; /* dflt init pt size */
  28. extern int deltaps; /* default change in ps */
  29. extern int dps_set; /* 1 => -p option used */
  30. extern int gsize; /* global size */
  31. extern int ft; /* default font */
  32. extern int display; /* 1 => inline, 0 => .EQ/.EN */
  33. extern int synerr; /* 1 if syntax error in this eqn */
  34. extern char *typesetter; /* typesetter name for -T... */
  35. extern int minsize; /* min size it can print */
  36. extern int ttype; /* actual type of typesetter: */
  37. #define DEVCAT 1
  38. #define DEV202 2
  39. #define DEVAPS 3
  40. #define DEVPOST 4
  41. extern double eht[];
  42. extern double ebase[];
  43. extern int lfont[];
  44. extern int rfont[];
  45. extern int lclass[];
  46. extern int rclass[];
  47. extern int yyval;
  48. extern int yylval;
  49. extern int eqnreg;
  50. extern double eqnht;
  51. extern int lefteq, righteq;
  52. extern int markline; /* 1 if this EQ/EN contains mark or lineup */
  53. #define TBLSIZE 100
  54. typedef struct s_tbl {
  55. char *name; /* e.g., "max" or "sum" */
  56. char *cval; /* e.g., "\\f1max\\fP" */
  57. int ival; /* or SUM */
  58. struct s_tbl *next;
  59. } tbl;
  60. extern char *spaceval; /* use in place of normal \x (for pic) */
  61. #define String 01
  62. #define Macro 02
  63. #define File 04
  64. #define Char 010
  65. #define Free 040
  66. typedef struct infile {
  67. FILE *fin;
  68. char *fname;
  69. int lineno;
  70. } Infile;
  71. typedef struct { /* input source */
  72. int type; /* Macro, String, File */
  73. char *sp; /* if String or Macro */
  74. } Src;
  75. extern Src src[], *srcp; /* input source stack */
  76. #define MAXARGS 20
  77. typedef struct { /* argument stack */
  78. char *argstk[MAXARGS]; /* pointers to args */
  79. char *argval; /* points to space containing args */
  80. } Arg;
  81. typedef struct { /* font number and name */
  82. int ft;
  83. char name[10];
  84. } Font;
  85. extern Font ftstack[];
  86. extern Font *ftp;
  87. extern int szstack[];
  88. extern int nszstack;
  89. extern Infile infile[10];
  90. extern Infile *curfile;
  91. extern tbl *lookup(tbl **tblp, char *name);
  92. extern void install(tbl **tblp, char *name, char *cval, int ival);
  93. extern tbl *keytbl[], *deftbl[], *restbl[], *ftunetbl[];
  94. extern int salloc(void);
  95. extern void sfree(int);
  96. extern void nrwid(int, int, int);
  97. extern char *ABSPS(int);
  98. extern char *DPS(int, int);
  99. extern int EFFPS(int);
  100. extern double EM(double, int);
  101. extern double REL(double, int);
  102. extern char *pad(int);
  103. extern void getstr(char *, int);
  104. extern char *strsave(char *);
  105. extern int input(void);
  106. extern int unput(int);
  107. extern void pbstr(char *);
  108. extern void error(int, char *);
  109. extern void yyerror(char *);
  110. extern void diacrit(int, int);
  111. extern void eqnbox(int, int, int);
  112. extern void setfont(char *);
  113. extern void font(int, int);
  114. extern void globfont(void);
  115. extern void fatbox(int);
  116. extern void fromto(int, int, int);
  117. extern void funny(int);
  118. extern void integral(int, int, int);
  119. extern void setintegral(void);
  120. extern void pushsrc(int, char *);
  121. extern void popsrc(void);
  122. extern void putout(int);
  123. extern void text(int, char *);
  124. extern void subsup(int, int, int);
  125. extern void bshiftb(int, int, int);
  126. extern void shift2(int, int, int);
  127. extern void setsize(char *);
  128. extern void size(int, int);
  129. extern void globsize(void);
  130. extern void sqrt(int);
  131. extern void text(int, char *);
  132. extern void boverb(int, int);
  133. extern void lineup(int);
  134. extern void mark(int);
  135. extern void paren(int, int, int);
  136. extern void move(int, int, int);
  137. extern void pile(int);
  138. extern int startcol(int);
  139. extern void column(int, int);
  140. extern void matrix(int);