typedef struct Position Position;
typedef struct String String;
typedef struct Stringset Stringset;
typedef struct Undo Undo;
enum{
Noop,
Insert,
Delete,
Split,
Join,
};
enum
{
Nextalso,
};
struct Position
{
int str;
int rn;
};
struct Undo
{
int n;
int op;
int flags;
Position p;
String *s;
Undo *next;
Undo *prev;
};
struct String
{
char *context;
Rune *r;
int n;
int ref;
};
struct Stringset
{
QLock;
Control *c;
String **string;
int nstring;
int nalloc;
String **snarf;
int nsnarf;
int undogrouplevel;
Undo undohome;
Undo *undobegin;
Undo *undostate;
};
String* allocstring(char*, char*);
void cut(Stringset *ss, Position, Position);
void delete(Stringset *ss, int);
void freestring(String*);
void freestringset(Stringset*);
void insert(Stringset*, int, String*);
void join(Stringset*, Position);
Stringset* newstringset(char*);
void paste(Stringset*, Position, String**, int);
void redo(Stringset*);
void snarf(Stringset*, Position, Position);
void split(Stringset*s, Position);
Stringset* stringsetnamed(char*);
String* stringof(Stringset*, Position);
void undo(Stringset*);
|