Implemented lz_sb_to_cstr

This commit is contained in:
cannoli-fruit 2026-07-19 20:43:28 -04:00
commit 5bb6ab1d1b
2 changed files with 24 additions and 0 deletions

16
examples/sb_to_cstr.c Normal file
View file

@ -0,0 +1,16 @@
#include <stdio.h>
#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;
}

8
lazy.h
View file

@ -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);\