#ifndef COMPILER_H #define COMPILER_H #include "probe.h" #include "typecheck.h" typedef struct { char** argv; size_t argc; const char* subtitle_output; bool clip_subtitles; double clip_duration; const char* concat_list; const char* concat_left; const char* concat_right; } StagedCommand; typedef struct { Arena arena; char** argv; size_t argc; StagedCommand* stages; size_t stage_count; size_t stage_capacity; const char** temporary_paths; size_t temporary_count; size_t temporary_capacity; const char** temporary_directories; size_t temporary_directory_count; size_t temporary_directory_capacity; const char* executable_path; const char* filter_complex; const char* shell_command; } CompiledCommand; bool compile_program(const Program* program, const TypedProgram* typed, ProbeCache* probes, const char* output_path, CompiledCommand* out, Error* error); void compiled_command_destroy(CompiledCommand* command); bool execute_command(const CompiledCommand* command, int* exit_code, Error* error); bool subtitle_clip_file(const char* path, double duration, Error* error); bool subtitle_write_concat_list(const char* path, const char* left, const char* right, Error* error); bool write_generated_file(const char* path, const char* contents, Error* error); bool write_generated_hex_file(const char* path, const char* contents, Error* error); bool copy_generated_file(const char* source, const char* destination, Error* error); bool ensure_generated_directory(const char* path, Error* error); #endif