00001 /* 00002 * squareball: A general-purpose library for C99. 00003 * Copyright (C) 2014-2018 Rafael G. Martins <rafael@rafaelmartins.eng.br> 00004 * 00005 * This program can be distributed under the terms of the BSD License. 00006 * See the file LICENSE. 00007 */ 00008 00009 #ifndef _SQUAREBALL_STRING_H 00010 #define _SQUAREBALL_STRING_H 00011 00012 #include <stdarg.h> 00013 #include <stdbool.h> 00014 #include <stdlib.h> 00015 00027 typedef struct { 00028 00033 char *str; 00034 00038 size_t len; 00039 00044 size_t allocated_len; 00045 00046 } sb_string_t; 00047 00053 sb_string_t* sb_string_new(void); 00054 00066 char* sb_string_free(sb_string_t *str, bool free_str); 00067 00074 sb_string_t* sb_string_dup(sb_string_t *str); 00075 00085 sb_string_t* sb_string_append_len(sb_string_t *str, const char *suffix, size_t len); 00086 00094 sb_string_t* sb_string_append(sb_string_t *str, const char *suffix); 00095 00103 sb_string_t* sb_string_append_c(sb_string_t *str, char c); 00104 00113 sb_string_t* sb_string_append_printf(sb_string_t *str, const char *format, ...); 00114 00123 sb_string_t* sb_string_append_escaped(sb_string_t *str, const char *suffix); 00124 00127 #endif /* _SQUAREBALL_STRING_H */