/* parc * Copyright (C) 2025 Ekaitz Zarraga * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "text-buffer.h" void text_buffer_init (text_buffer *tb) { tb->used = 0; tb->size = 0; tb->contents = NULL; } void text_buffer_resize (text_buffer *tb, size_t size) { tb->size = size; tb->contents = realloc (tb->contents, sizeof (*tb->contents) * size); } void text_buffer_append (text_buffer *tb, char c) { size_t base_size = 1024; if (tb->size == 0) { tb->contents = malloc (sizeof (*tb->contents) * base_size); tb->size = base_size; } else if (tb->size == tb->used) text_buffer_resize (tb, tb->size * 2); tb->contents[tb->used++] = c; } char text_buffer_index (text_buffer *tb, size_t pos) { assert (pos < tb->used); return tb->contents[pos]; } void text_buffer_clear (text_buffer *tb) { free (tb->contents); text_buffer_init (tb); } void text_buffer_fill (text_buffer *tb, char *fill, size_t size) { size_t i; tb->used = size; tb->size = size; free (tb->contents); tb->contents = malloc (sizeof (*tb->contents) * size); for (i=0; icontents[i] = fill[i]; } }