home *** CD-ROM | disk | FTP | other *** search
- /* VC A Table Calculator
- * Common definitions
- *
- * original by James Gosling, September 1982
- * modified by Mark Weiser and Bruce Israel,
- * University of Maryland
- * OS/2 Modifications by Brady Flowers, 7/19/90
- *
- */
-
- #include<stdio.h>
-
- /* #ifdef MCH_AMIGA */
- /* #define ROWS 23 */
- /* #define COLS 79 */
- /* #else */
- /* #define ROWS 24 */
- /* #define COLS 80 */
- /* #endif */
-
- #ifdef OS2
- #define VOID void
- #else
- #define VOID
- #ifndef NULL
- #define NULL 0L
- #endif
- #endif
-
- #define MAXROWS 200
- #define MAXCOLS 40
-
- struct ent {
- double v;
- char *label;
- struct enode *expr;
- short flags;
- short row, col;
- struct ent *next;
- };
-
-
- struct enode {
- int op;
- union {
- double k;
- struct ent *v;
- struct {
- struct enode *left, *right;
- } o;
- } e;
- };
-
- /* op values */
- #define O_VAR 'v'
- #define O_CONST 'k'
- #define O_REDUCE(c) (c+0200)
-
- /* flag values */
- #define is_valid 0001
- #define is_changed 0002
- #define is_lchanged 0004
- #define is_leftflush 0010
- #define is_deleted 0020
-
- /* NOTE: The original construct for teh ctl macro was
- * #define ctl(c) ('c'&037)
- * which doesn't work under ANSI C. The macro has
- * been replaced and all occurances of the construct
- * ctl(c) replaced with ctl('c')
- */
- #define ctl(c) (c&037)
-
- struct ent *tbl[MAXROWS][MAXCOLS];
-
- int strow, stcol;
- int currow, curcol;
- int savedrow, savedcol;
- int FullUpdate;
- int maxrow, maxcol;
- int fwidth[MAXCOLS];
- int precision[MAXCOLS];
- char hidden_col[MAXCOLS];
- char hidden_row[MAXROWS];
- char line[1000];
- int linelim;
- int changed;
- struct ent *to_fix;
- #ifndef OS2
- struct enode *new();
- struct ent *lookat();
- struct enode *copye();
- #endif
- char *coltoa();
-
- int modflg;
-
- #ifdef OS2
-
- /* Prototype! */
- /* sc.c */
- VOID error(char *fmt, ...);
- VOID yyerror(char *err);
- struct ent *lookat(int row, int col);
- VOID free_ent(register struct ent *p);
- VOID flush_saved(void);
- VOID update(void);
- void quit(void);
- int main(int argc, char **argv);
- int modcheck(char *endstr);
- VOID writefile(char *fname);
- VOID readfile(char *fname, int eraseflg);
- VOID erasedb(void);
-
- /* cmds.c */
- VOID duprow(void);
- VOID dupcol(void);
- VOID insertrow(int arg);
- VOID deleterow(int arg);
- VOID insertcol(int arg);
- VOID deletecol(int arg);
- VOID valueizerow(int arg);
- VOID valueizecol(int arg);
- VOID erase_area(int sr, int sc, int er, int ec);
- VOID valueize_area(int sr, int sc, int er, int ec);
- VOID pullcells(int to_insert);
- VOID showcol_op(void);
- VOID showrow_op(void);
- int get_qual(void);
- VOID openrow(int rs);
- VOID closerow(register int r);
- VOID opencol(int cs);
- VOID closecol(int cs);
-
- /* lex.c */
- int yylex(void);
- VOID initkbd(void);
- int nmgetch(void);
- VOID debug(char *fmt, ... );
- char *strtof(register char *p, double *res);
- VOID help(void);
-
- /* gram.c */
- int yyparse(void);
-
- /* interp.c */
- double dosum(int minr, int minc, int maxr, int maxc);
- double doprod(int minr, int minc, int maxr, int maxc);
- double doavg(int minr, int minc, int maxr, int maxc);
- double eval(register struct enode *e);
- VOID EvalAll(void);
- int RealEvalAll(void);
- #ifndef GRAM_C
- struct enode *new(int op, void *a1, void *a2);
- #endif
- VOID copy(struct ent *dv, struct ent *v1, struct ent *v2);
- VOID let(struct ent *v, struct enode *e);
- VOID clearent(struct ent *v);
- int constant(register struct enode *e);
- VOID efree(register struct enode *e);
- VOID label(register struct ent *v, register char *s, int flushdir);
- VOID decodev(register struct ent *v);
- char *coltoa(int col);
- VOID decompile(register struct enode *e, int priority);
- VOID editv(int row, int col);
- VOID editexp(int row, int col);
- VOID edits(int row, int col);
- VOID printfile(char *fname);
- VOID tblprintfile(char *fname);
- struct enode *copye(register struct enode *e, int Rdelta, int Cdelta);
- VOID sync_refs(void);
- VOID sync_ref(register struct enode *e);
- VOID hiderow(int arg);
- VOID hidecol(int arg);
- VOID showrow(int r1, int r2);
- VOID showcol(int c1, int c2);
-
- #endif
-
-