#include "source_code.h" #include #include Code makeCode(char *filePath, char *code) { const Code result = { .filePath = filePath, .code = code, }; return result; } SourceCode makeSourceCode() { const SourceCode result = { .codes = NULL, .size = 0, }; return result; } SourceCode *newSourceCode() { SourceCode *result = a404m_malloc(sizeof(*result)); result->codes = NULL; result->size = 0; return result; } void pushToSourceCode(SourceCode *sourceCode, Code *code) { size_t size = a404m_malloc_usable_size(sourceCode->codes) / sizeof(Code *); if (sourceCode->size == size) { size += size / 2 + 1; sourceCode->codes = a404m_realloc(sourceCode->codes, size * sizeof(Code *)); } sourceCode->codes[sourceCode->size] = code; sourceCode->size += 1; } void deleteSourceCodeInners(SourceCode sourceCode) { if (sourceCode.size != 0) { for (size_t i = 0; i < sourceCode.size; ++i) { deleteCode(sourceCode.codes[i]); } free(sourceCode.codes); } } void deleteSourceCode(SourceCode *sourceCode) { deleteSourceCodeInners(*sourceCode); free(sourceCode); } void deleteCode(Code *code) { free(code->filePath); free(code->code); free(code); }