#ifndef SOURCE_CC #define SOURCE_CC #include "common.cc" #include "memory.cc" typedef u32 Source_Id; struct Span { Source_Id id; usize start, end; Span(Source_Id id, usize start, usize end) : id(id), start(start), end(end) {} }; struct Buffer { String file; String content; Link link; }; bool buffer_init(Buffer* buffer, const Allocator* allocator, const String* content_in, const String* file_in) { String content, file; bool ret = slice_copy(allocator, content_in, &content); if(unlikely(ret == false)) return false; ret = slice_copy(allocator, file_in, &file); if(unlikely(ret == false)) { slice_deallocate(allocator, &content); return false; } buffer->file = file; buffer->content = content; buffer->link = {}; return true; } void buffer_deinit(Buffer* buffer, const Allocator* allocator) { slice_deallocate(allocator, &buffer->file); slice_deallocate(allocator, &buffer->content); } struct Buffer_Stack { Link* buffers; usize nbuffers; }; #endif