taisei/src/util/strbuf.h
2023-03-30 03:38:07 +02:00

37 lines
933 B
C

/*
* This software is licensed under the terms of the MIT License.
* See COPYING for further information.
* ---
* Copyright (c) 2011-2019, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2019, Andrei Alexeyev <akari@taisei-project.org>.
*/
#pragma once
#include "taisei.h"
#include <stdarg.h>
typedef struct StringBuffer {
char *start;
char *pos;
size_t buf_size;
} StringBuffer;
int strbuf_printf(StringBuffer *strbuf, const char *format, ...)
attr_printf(2, 3) attr_nonnull(1, 2);
int strbuf_vprintf(StringBuffer *strbuf, const char *format, va_list args)
attr_nonnull(1, 2);
void strbuf_clear(StringBuffer *strbuf)
attr_nonnull(1);
void strbuf_free(StringBuffer *strbuf)
attr_nonnull(1);
int strbuf_ncat(StringBuffer *strbuf, size_t datasize, const char data[datasize])
attr_nonnull(1, 3);
INLINE int strbuf_cat(StringBuffer *strbuf, const char *str) {
return strbuf_ncat(strbuf, strlen(str), str);
}