diff options
Diffstat (limited to 'include/program.h')
-rw-r--r-- | include/program.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/include/program.h b/include/program.h index cbd9432..f251fbc 100644 --- a/include/program.h +++ b/include/program.h @@ -4,11 +4,31 @@ #include "std/buffer.h" #include "bytecode/bytecode.h" +#define AMAL_PROGRAM_OK 0 +#define AMAL_PROGRAM_INVALID_HEADER -1 +#define AMAL_PROGRAM_INVALID_MAGIC_NUMBER -2 +#define AMAL_PROGRAM_INCOMPATIBLE -3 +#define AMAL_PROGRAM_INVALID_INTERMEDIATES -4 +#define AMAL_PROGRAM_INVALID_INTERMEDIATES_SIZE -5 +#define AMAL_PROGRAM_INVALID_STRINGS -6 +#define AMAL_PROGRAM_INVALID_STRINGS_SIZE -7 +#define AMAL_PROGRAM_STRING_ALLOC_FAILURE -8 +#define AMAL_PROGRAM_INVALID_INSTRUCTIONS_SIZE -9 + +#define AMAL_PROGRAM_MAGIC_NUMBER (u32)0xdec05eba +#define AMAL_PROGRAM_MAJOR_VERSION 1 +#define AMAL_PROGRAM_MINOR_VERSION 0 +#define AMAL_PROGRAM_PATCH_VERSION 0 + typedef struct { Buffer/*<...>*/ data; + Buffer/*<u32>*/ string_indices; + char *intermediates_start; + char *strings_start; + usize read_index; } amal_program; -void amal_program_init(amal_program *self); +CHECK_RESULT int amal_program_init(amal_program *self); void amal_program_deinit(amal_program *self); CHECK_RESULT int amal_program_append_bytecode(amal_program *self, Bytecode *bytecode); |