#ifndef AMALGAM_COMPILER_H #define AMALGAM_COMPILER_H #include "std/misc.h" #include "std/buffer.h" #include "std/buffer_view.h" #include "std/scoped_allocator.h" #include "std/thread.h" #include "defs.h" #define AMAL_COMPILER_OK 0 /* General error */ #define AMAL_COMPILER_ERR -1 struct amal_compiler { ScopedAllocator allocator; ScopedAllocator main_thread_allocator; Buffer parsers; Buffer queued_files; ParserThreadData *threads; int usable_thread_count; bool started; amal_mutex mutex; int generic_work_object_index; }; CHECK_RESULT int amal_compiler_init(amal_compiler *self); CHECK_RESULT int amal_compiler_deinit(amal_compiler *self); /* Not thread-safe */ CHECK_RESULT int amal_compiler_load_file(amal_compiler *self, BufferView filepath); /* TODO: amal_compiler_unload_file */ #endif