37 lines
933 B
C
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);
|
|
}
|