diff --git a/examples/sb_to_cstr.c b/examples/sb_to_cstr.c new file mode 100644 index 0000000..b483c51 --- /dev/null +++ b/examples/sb_to_cstr.c @@ -0,0 +1,16 @@ +#include +#define LAZY_IMPL +#include "../lazy.h" + +int main() { + Lz_SB x = lz_sb_from_cstr("Hello"); + Lz_SB y = lz_sb_from_cstr(" World"); + + lz_da_concat(x, y); + lz_sb_add_char(&x, '\n'); + + char *s = lz_sb_to_cstr(&x); + printf("%s", s); + free(s); + return 0; +} diff --git a/lazy.h b/lazy.h index 697adb5..3a37530 100644 --- a/lazy.h +++ b/lazy.h @@ -42,6 +42,7 @@ size_t lz_hm_hash_void_get(size_t cap, _Bool *exists, _Bool *tombstones, size_t lz_hm_hash_void_set(size_t cap, _Bool *exists, _Bool *tombstones, void* key, size_t k_s); Lz_Slc lz_slc_from_cstr(char *dat); +char *lz_sb_to_cstr(Lz_SB *sb); void lz_sb_append_cstr(Lz_SB *sb, const char *cstr); void lz_sb_add_char(Lz_SB *sb, char c); char *lz_cstr_dup(const char *s); @@ -404,6 +405,13 @@ Lz_SB lz_sb_from_cstr(const char *dat) { return sb; } +char *lz_sb_to_cstr(Lz_SB *sb) { + char *cstr = malloc(sb->cnt+1); + memcpy(cstr, sb->data, sizeof(char)*sb->cnt); + cstr[sb->cnt] = 0; + return cstr; +} + #define lz_da_append(da, x) do { \ if ((da).cap > (da).cnt) {\ (da).data[(da).cnt++] = (x);\