switching branches
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 18 Feb 2023 18:51:19 +0000 (12:51 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 24 Mar 2023 01:50:10 +0000 (20:50 -0500)
compiler/src/doc.c

index cf10c8454fc118efb2786d43b68f849222ca4c59..8c92a20f01465ffd445f03c4e96d18a7fcfef569 100644 (file)
@@ -205,11 +205,23 @@ struct Doc {
 
 
 typedef struct DocGenerator {
-
+    bh_buffer string_buffer;
 } DocGenerator;
 
+void doc_gen_init(DocGenerator *gen) {
+    bh_buffer_init(&gen->string_buffer, global_heap_allocator, 256);
+}
+
+void doc_gen_deinit(DocGenerator *gen) {
+    bh_buffer_free(&gen->string_buffer);
+}
+
 u32 doc_gen_add_string(DocGenerator *gen, char *data, u32 len) {
+    u32 offset = gen->string_buffer.length;
+
+    bh_buffer_append(&gen->string_buffer, data, len);
 
+    return offset;
 }
 
 void onyx_docs_emit_odoc(const char *dest) {
@@ -220,6 +232,7 @@ void onyx_docs_emit_odoc(const char *dest) {
     }
 
     DocGenerator gen;
+    doc_gen_init(&gen);
 
     struct Doc final_doc;
 
@@ -243,6 +256,8 @@ void onyx_docs_emit_odoc(const char *dest) {
     final_doc.files.length = 0;
 
     bh_file_write(&doc_file, &final_doc, sizeof(struct Doc));
+
+    doc_gen_deinit(&gen);
     bh_file_close(&doc_file);
 }