Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/include/util/hb_buffer.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef HERB_BUFFER_H
#define HERB_BUFFER_H

#include "hb_string.h"
#include <stdbool.h>
#include <stdlib.h>

Expand All @@ -14,6 +15,7 @@ bool hb_buffer_init(hb_buffer_T* buffer, size_t capacity);

void hb_buffer_append(hb_buffer_T* buffer, const char* text);
void hb_buffer_append_with_length(hb_buffer_T* buffer, const char* text, size_t length);
void hb_buffer_append_string(hb_buffer_T* buffer, hb_string_T string);
void hb_buffer_append_char(hb_buffer_T* buffer, char character);
void hb_buffer_append_whitespace(hb_buffer_T* buffer, size_t length);
void hb_buffer_prepend(hb_buffer_T* buffer, const char* text);
Expand Down
4 changes: 4 additions & 0 deletions src/util/hb_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,10 @@ void hb_buffer_append_with_length(hb_buffer_T* buffer, const char* text, const s
buffer->value[buffer->length] = '\0';
}

void hb_buffer_append_string(hb_buffer_T* buffer, hb_string_T string) {
if (!hb_string_is_empty(string)) { hb_buffer_append_with_length(buffer, string.data, string.length); }
}

void hb_buffer_append_char(hb_buffer_T* buffer, const char character) {
static char string[2];

Expand Down
14 changes: 14 additions & 0 deletions test/c/test_hb_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,19 @@ TEST(test_hb_buffer_concat)
free(buffer2.value);
END

// Test concatenating two buffers
TEST(test_hb_buffer_append_string)
hb_buffer_T buffer;
hb_buffer_init(&buffer, 1);

hb_buffer_append_string(&buffer, hb_string_from_c_string("Hello, world"));

ck_assert_str_eq(buffer.value, "Hello, world");
ck_assert_int_eq(buffer.length, 12);

free(buffer.value);
END

TEST(test_hb_buffer_resizing_behavior)
hb_buffer_T buffer;
hb_buffer_init(&buffer, 1024);
Expand Down Expand Up @@ -185,6 +198,7 @@ TCase *hb_buffer_tests(void) {
tcase_add_test(buffer, test_hb_buffer_append);
tcase_add_test(buffer, test_hb_buffer_prepend);
tcase_add_test(buffer, test_hb_buffer_concat);
tcase_add_test(buffer, test_hb_buffer_append_string);
tcase_add_test(buffer, test_hb_buffer_resizing_behavior);
tcase_add_test(buffer, test_hb_buffer_clear);
tcase_add_test(buffer, test_hb_buffer_free);
Expand Down
Loading