Return StringUpdate from the dstr update functions
This commit is contained in:
parent
e75846a507
commit
bb2db0d30d
@ -54,9 +54,9 @@ String *wapp_dstr_from_string(const char *str, Arena *arena) {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
String *wapp_dstr_update(String **dst, const char *src, Arena *arena) {
|
StringUpdate wapp_dstr_update(String **dst, const char *src, Arena *arena) {
|
||||||
if (!dst || !(*dst)) {
|
if (!dst || !(*dst)) {
|
||||||
return *dst;
|
return (StringUpdate){.updated = false, .str = *dst};
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 length = strlen(src);
|
u64 length = strlen(src);
|
||||||
@ -65,15 +65,15 @@ String *wapp_dstr_update(String **dst, const char *src, Arena *arena) {
|
|||||||
|
|
||||||
if (length >= str->capacity) {
|
if (length >= str->capacity) {
|
||||||
if (!arena) {
|
if (!arena) {
|
||||||
return *dst;
|
return (StringUpdate){.updated = false, .str = *dst};
|
||||||
}
|
}
|
||||||
|
|
||||||
String *new_str = wapp_dstr_from_string(src, arena);
|
String *new_str = wapp_dstr_from_string(src, arena);
|
||||||
if (!new_str) {
|
if (!new_str) {
|
||||||
return *dst;
|
return (StringUpdate){.updated = false, .str = *dst};
|
||||||
}
|
}
|
||||||
|
|
||||||
return new_str;
|
return (StringUpdate){.updated = true, .str = new_str};
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(str->buf, 0, str->capacity);
|
memset(str->buf, 0, str->capacity);
|
||||||
@ -82,17 +82,17 @@ String *wapp_dstr_update(String **dst, const char *src, Arena *arena) {
|
|||||||
|
|
||||||
strncpy(str->buf, src, length + 1);
|
strncpy(str->buf, src, length + 1);
|
||||||
|
|
||||||
return *dst;
|
return (StringUpdate){.updated = true, .str = *dst};
|
||||||
}
|
}
|
||||||
|
|
||||||
String *wapp_dstr_concat(String **dst, const char *src, Arena *arena) {
|
StringUpdate wapp_dstr_concat(String **dst, const char *src, Arena *arena) {
|
||||||
if (!dst || !(*dst)) {
|
if (!dst || !(*dst)) {
|
||||||
return *dst;
|
return (StringUpdate){.updated = false, .str = *dst};
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 src_length = strlen(src);
|
u64 src_length = strlen(src);
|
||||||
if (src_length == 0) {
|
if (src_length == 0) {
|
||||||
return *dst;
|
return (StringUpdate){.updated = false, .str = *dst};
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 new_length = (*dst)->size + src_length;
|
u64 new_length = (*dst)->size + src_length;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "aliases.h"
|
#include "aliases.h"
|
||||||
#include "mem_arena.h"
|
#include "mem_arena.h"
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -10,10 +11,16 @@ extern "C" {
|
|||||||
|
|
||||||
typedef struct dstr String;
|
typedef struct dstr String;
|
||||||
|
|
||||||
|
typedef struct string_update StringUpdate;
|
||||||
|
struct string_update {
|
||||||
|
bool updated;
|
||||||
|
String *str;
|
||||||
|
};
|
||||||
|
|
||||||
String *wapp_dstr_with_capacity(u64 capacity, Arena *arena);
|
String *wapp_dstr_with_capacity(u64 capacity, Arena *arena);
|
||||||
String *wapp_dstr_from_string(const char *str, Arena *arena);
|
String *wapp_dstr_from_string(const char *str, Arena *arena);
|
||||||
String *wapp_dstr_update(String **dst, const char *src, Arena *arena);
|
StringUpdate wapp_dstr_update(String **dst, const char *src, Arena *arena);
|
||||||
String *wapp_dstr_concat(String **dst, const char *src, Arena *arena);
|
StringUpdate wapp_dstr_concat(String **dst, const char *src, Arena *arena);
|
||||||
void wapp_dstr_clear(String *str);
|
void wapp_dstr_clear(String *str);
|
||||||
void wapp_dstr_print(const String *str);
|
void wapp_dstr_print(const String *str);
|
||||||
i64 wapp_dstr_find(const String *str, const char *substr);
|
i64 wapp_dstr_find(const String *str, const char *substr);
|
||||||
|
Loading…
Reference in New Issue
Block a user