kuro/dat.h

92 lines
No EOL
1.2 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>
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
} SubFrame;
typedef struct Aux {
FileType type;
char* data;
int count;
} Aux;
typedef struct {
Opcode opcode;
void* data;
} Instruction;
typedef void (*Handler)(void*, void*);
typedef struct {
uvlong id;
WindowStatus status;
Image* img;
Screen* screen;
char filepath[512];
Rune* tag;
uint tag_len;
Rune* body;
uint body_len;
} KuroMemory;
typedef struct {
uvlong id;
int fd;
Channel* cpu; /* chan(Instruction) */
Handler* handlers;
KuroMemory* memory;
Channel* status; /* chan(WidowStatus) */
} Node;