/************
 *
 * Includes:
 *
 ************/

#include <exec/types.h> 
#include <intuition/intuition.h>

/***********
 *
 * Defines:
 *
 ***********/

#define MAXWIDTH 80
#define EVENLEN(x) (((x)+1)&-2)

/*******************
 *
 * Data structures:
 *
 *******************/

struct Zline
{
	struct Zline *succ;
	struct Zline *pred;
	UBYTE flags;
	UBYTE len;
};

#define ZLF_USED 128

struct ZList
{
	struct Zline *head;
	struct Zline *tail;
	struct Zline *tailpred;
};

struct Memorysection
{
	struct Memorysection *succ;
	struct Memorysection *pred;
	UWORD len;
};

struct FList
{
	struct Memorysection *head;
	struct Memorysection *tail;
	struct Memorysection *tailpred;
};

struct Memoryblock
{
	struct Memoryblock *succ;
	struct Memoryblock *pred;
	ULONG length;
	ULONG free;
	struct FList freeliste;
};

struct BList
{
	struct Memoryblock *head;
	struct Memoryblock *tail;
	struct Memoryblock *tailpred;
};

struct Editor
{
	struct Editor *succ;
	struct Editor *pred;
	struct Window *window;
	struct BList block;
	struct ZList zlines;
	UBYTE buffer[MAXWIDTH];
	UBYTE tabstring[MAXWIDTH];
	UWORD num_lines;
	struct Zline *actual;
	struct Zline *top;
	UWORD toppos;
	UWORD xpos,ypos;
	UWORD changed:1;
	UWORD insert:1;
};

struct EList
{
	struct Editor *head;
	struct Editor *tail;
	struct Editor *tailpred;
};
