kuro/dat.h

99 lines
No EOL
1.3 KiB
C

#include <u.h>
#include <libc.h>
#include <stdio.h>
#include <fcall.h>
#include <thread.h>
#include <9p.h>
#include <draw.h>
#include <cursor.h>
#include <mouse.h>
#include <keyboard.h>
#include <frame.h>
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];