1 /* acme */ 2 typedef struct Event Event; 3 typedef struct Window Window; 4 5 enum 6 { 7 STACK = 8192, 8 EVENTSIZE = 256, 9 NEVENT = 5, 10 }; 11 12 struct Event 13 { 14 int c1; 15 int c2; 16 int q0; 17 int q1; 18 int flag; 19 int nb; 20 int nr; 21 char b[EVENTSIZE*UTFmax+1]; 22 Rune r[EVENTSIZE+1]; 23 }; 24 25 struct Window 26 { 27 /* file descriptors */ 28 int ctl; 29 int event; 30 int addr; 31 int data; 32 Biobuf *body; 33 34 /* event input */ 35 char buf[512]; 36 char *bufp; 37 int nbuf; 38 Event e[NEVENT]; 39 40 int dirtied; 41 int id; 42 int open; 43 Channel *cevent; /* chan(Event*) */ 44 }; 45 46 extern Window* newwindow(void); 47 extern int winopenfile(Window*, char*); 48 extern void winopenbody(Window*, int); 49 extern void winclosebody(Window*); 50 extern void wintagwrite(Window*, char*, int); 51 extern void winname(Window*, char*); 52 extern void winwriteevent(Window*, Event*); 53 extern void winread(Window*, uint, uint, char*); 54 extern int windel(Window*, int); 55 extern void wingetevent(Window*, Event*); 56 extern void wineventproc(void*); 57 extern void winwritebody(Window*, char*, int); 58 extern void winclean(Window*); 59 extern int winselect(Window*, char*, int); 60 extern int winsetaddr(Window*, char*, int); 61 extern char* winreadbody(Window*, int*); 62 extern void windormant(Window*); 63 extern void winsetdump(Window*, char*, char*); 64 65 extern char* readfile(char*, char*, int*); 66 extern void ctlprint(int, char*, ...); 67 extern void* emalloc(uint); 68 extern char* estrdup(char*); 69 extern char* estrstrdup(char*, char*); 70 extern char* estrstrstrdup(char*, char*, char*); 71 extern char* egrow(char*, char*, char*); 72 extern char* eappend(char*, char*, char*); 73 extern void error(char*, ...); 74 extern int tokenizec(char*, char**, int, char*); 75 76