#include #include #include #include #include #include <9p.h> #include #include #include #include #include typedef enum { CTL = 0, CPU = 1, MEMORY = 2 } FileType; typedef enum { KURO_RUNS = 0, KURO_QUITS } WindowStatus; typedef enum { PORT_MOUSE, PORT_RESIZE, PORT_KBD, PORT_STATUS, TOTAL_PORTS } Port; typedef enum { INIT, OPEN_FILE, SAVE_FILE, MOUSE, KEYBOARD, SCROLL, CURSOR, SELECT, INSERT, DELETE, CUT, COPY, PASTE, EXEC, PLUMB, INDICATE, SPLIT, PARTITION, TOTAL_OPCODES } Opcode; typedef enum { TAGF, BODYF, SHELLF, TOTAL_SUBF } FrameType; typedef struct Aux { FileType type; char* data; int count; } Aux; typedef struct { Opcode opcode; void* data; } Instruction; typedef void (*Handler)(void*, void*); typedef struct { Rune* text; uint text_len; Frame* frame; } SubFrame; typedef struct { uvlong id; WindowStatus status; Image* img; Screen* screen; char filepath[512]; SubFrame* editorState[TOTAL_SUBF]; } KuroMemory; typedef struct { uvlong id; int fd; Channel* cpu; /* chan(Instruction) */ Handler* handlers; KuroMemory* memory; Channel* status; /* chan(WidowStatus) */ } Node; Image* tagcols[NCOL]; Image* textcols[NCOL];