45 lines
1.4 KiB
C
45 lines
1.4 KiB
C
#ifndef STRING_BUFFER_H
|
|
#define STRING_BUFFER_H
|
|
|
|
#include "fort_utils.h"
|
|
|
|
|
|
/*****************************************************************************
|
|
* STRING BUFFER
|
|
* ***************************************************************************/
|
|
enum str_buf_type {
|
|
CharBuf,
|
|
WCharBuf
|
|
};
|
|
|
|
struct string_buffer;
|
|
typedef struct string_buffer string_buffer_t;
|
|
struct string_buffer {
|
|
union {
|
|
char *cstr;
|
|
wchar_t *wstr;
|
|
void *data;
|
|
} str;
|
|
size_t data_sz;
|
|
enum str_buf_type type;
|
|
};
|
|
|
|
string_buffer_t *create_string_buffer(size_t number_of_chars, enum str_buf_type type);
|
|
void destroy_string_buffer(string_buffer_t *buffer);
|
|
fort_status_t realloc_string_buffer_without_copy(string_buffer_t *buffer);
|
|
|
|
fort_status_t fill_buffer_from_string(string_buffer_t *buffer, const char *str);
|
|
fort_status_t fill_buffer_from_wstring(string_buffer_t *buffer, const wchar_t *str);
|
|
|
|
|
|
size_t buffer_text_height(string_buffer_t *buffer);
|
|
size_t string_buffer_capacity(const string_buffer_t *buffer);
|
|
void *buffer_get_data(string_buffer_t *buffer);
|
|
|
|
|
|
size_t buffer_text_width(string_buffer_t *buffer);
|
|
int buffer_printf(string_buffer_t *buffer, size_t buffer_row, char *buf, size_t buf_len, const context_t *context);
|
|
int buffer_wprintf(string_buffer_t *buffer, size_t buffer_row, wchar_t *buf, size_t buf_len, const context_t *context);
|
|
|
|
#endif /* STRING_BUFFER_H */
|