#ifndef SNDLLCOMMONS
#define SNDLLCOMMONS

#define STACKSIZE  10  // Stack size

// standard key sizes
#define KEYWT	30
#define KEYHT	30

// return values
#define PULLSTACK  -1  // * number of values to pull
#define PUSHSTACK   1  // * number of values to push
#define NOACTION	0

// row and column of button pressed
#define R1C1		1
#define R1C2		2
#define R1C3		3
#define R2C1		9
#define R2C2		10
#define R2C3		11
#define R3C1		17
#define R3C2		18
#define R3C3		19
#define R4C1		25
#define R4C2		26
#define R4C3		27
#define R5C1		33
#define R5C2		34
#define R5C3		35
#define R6C1		41
#define R6C2		42
#define R6C3		43

#define MODKEYSIZE  100 // 100 + rowcolumn ID

typedef struct {
	short x;
	short y;
	short dx;
	short dy;
} KLRECT;

typedef struct  {
	double* vars;	  // array of variables [20] - first five are (A,B,C,T,N)
	bool*  flags;	  // array of flag values  (STOFLAG, DEGFLAG, ALTFLAG, spare, spare)
	HWND   editWnd;	  // handle to the edit window
	HWND   appWnd;	  // application window handle - post errors to this window
	KLRECT* keyRect;  // key rectangle - change this value if required
	LPARAM reserved;
	LPARAM reserved2;
} DLLEXTRAS;

// flags
#define NFLAGS   5
#define STOFLAG  0
#define DEGFLAG 1
#define ALTFLAG  2

// first 5 variable names
#define NVARS 20
#define VARA  0
#define VARB  1
#define VARC  2
#define VART  3
#define VARN  4


#define PI 3.14159265359


#endif