1
0
Fork 0
libfort/src/string_buffer.h

83 lines
2.1 KiB
C

#ifndef STRING_BUFFER_H
#define STRING_BUFFER_H
#include "fort_utils.h"
/*****************************************************************************
* STRING BUFFER
* ***************************************************************************/
struct f_string_buffer {
union {
char *cstr;
#ifdef FT_HAVE_WCHAR
wchar_t *wstr;
#endif
#ifdef FT_HAVE_UTF8
void *u8str;
#endif
void *data;
} str;
size_t data_sz;
enum f_string_type type;
};
FT_INTERNAL
f_string_buffer_t *create_string_buffer(size_t number_of_chars, enum f_string_type type);
FT_INTERNAL
void destroy_string_buffer(f_string_buffer_t *buffer);
FT_INTERNAL
f_string_buffer_t *copy_string_buffer(const f_string_buffer_t *buffer);
FT_INTERNAL
f_status realloc_string_buffer_without_copy(f_string_buffer_t *buffer);
FT_INTERNAL
f_status fill_buffer_from_string(f_string_buffer_t *buffer, const char *str);
#ifdef FT_HAVE_WCHAR
FT_INTERNAL
f_status fill_buffer_from_wstring(f_string_buffer_t *buffer, const wchar_t *str);
#endif /* FT_HAVE_WCHAR */
#ifdef FT_HAVE_UTF8
FT_INTERNAL
f_status fill_buffer_from_u8string(f_string_buffer_t *buffer, const void *str);
#endif /* FT_HAVE_UTF8 */
FT_INTERNAL
size_t buffer_text_visible_width(const f_string_buffer_t *buffer);
FT_INTERNAL
size_t buffer_text_visible_height(const f_string_buffer_t *buffer);
FT_INTERNAL
size_t string_buffer_cod_width_capacity(const f_string_buffer_t *buffer);
FT_INTERNAL
size_t string_buffer_raw_capacity(const f_string_buffer_t *buffer);
FT_INTERNAL
size_t string_buffer_width_capacity(const f_string_buffer_t *buffer);
FT_INTERNAL
void *buffer_get_data(f_string_buffer_t *buffer);
FT_INTERNAL
int buffer_check_align(f_string_buffer_t *buffer);
FT_INTERNAL
int buffer_printf(f_string_buffer_t *buffer, size_t buffer_row, f_conv_context_t *cntx, size_t cod_width,
const char *content_style_tag, const char *reset_content_style_tag);
#ifdef FT_HAVE_UTF8
FT_INTERNAL
void buffer_set_u8strwid_func(int (*u8strwid)(const void *beg, const void *end, size_t *width));
#endif /* FT_HAVE_UTF8 */
#endif /* STRING_BUFFER_H */