kuro/dat.h

103 lines
1.3 KiB
C
Raw Normal View History

2024-01-22 07:50:23 +00:00
#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 = 1
} 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;
typedef struct NodeRef NodeRef;
struct NodeRef {
int fd[2];
uvlong id;
NodeRef* next;
};
typedef struct {
NodeRef* data[256];
} NodeTable;