/*      VC      A Table Calculator
 *              Common definitions
 *
 *              original by James Gosling, September 1982
 *              modified by Mark Weiser and Bruce Israel,
 *                      University of Maryland
 *
 */

#include<stdio.h>

#ifdef MCH_AMIGA
extern int ROWS;
#define COLS    79
#else
#define ROWS    24
#define COLS    80
#endif

/* define one and only one of these */
/* #define ENGLISH */
#define GERMAN

#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

#define ctl(c) (c&0x1f)

extern struct ent *tbl[MAXROWS][MAXCOLS];

extern int strow, stcol;
extern int currow, curcol;
extern int savedrow, savedcol;
extern int FullUpdate;
extern int maxrow, maxcol;
extern int fwidth[MAXCOLS];
extern int precision[MAXCOLS];
extern char hidden_col[MAXCOLS];
extern char hidden_row[MAXROWS];
extern char line[1000];
extern int linelim;
extern int changed;
extern struct ent *to_fix;
extern struct enode *new();
extern struct ent *lookat();
extern struct enode *copye();
extern char *coltoa();

extern int modflg;
