#ifndef SK_PROG_H #define SK_PROG_H #include "commons.h" #include "value.h" #define SK_NO_PARAM (-1) #define OPCODE(G) \ G(OP_PUSH) SK_ENUM_H(Opcode, OPCODE); struct prog { struct vec opcodes; struct vec params; struct vec constants; }; void prog_init(struct prog* self); void prog_free(struct prog* self); size_t prog_add_instr(struct prog* self, Opcode opcode, size_t param); size_t prog_add_constant(struct prog* self, struct value* new_value); #endif