libcute 0.1
Loading...
Searching...
No Matches
string.h
1#pragma once
2
3#include <stdbool.h>
4#include <stddef.h>
5
6#include "memory/allocator.h"
7#include "nostd.h"
8#include "object/optional.h"
9#include "object/result.h"
10
14typedef enum {
15 CU_STRING_ERROR_NONE = 0,
16 CU_STRING_ERROR_OOM,
17} cu_String_Error;
18
24typedef struct cu_String {
26 char *data;
27 size_t length;
28 size_t capacity;
29} cu_String;
30
32CU_RESULT_DECL(cu_String, cu_String, cu_String_Error)
34
35
36cu_String cu_String_init(cu_Allocator allocator);
37
39void cu_String_destroy(cu_String *str);
40
42void cu_String_clear(cu_String *str);
43
45cu_String_Result cu_String_from_cstr(cu_Allocator allocator, const char *cstr);
46
48cu_String_Result cu_String_from_slice(cu_Allocator allocator, cu_Slice slice);
49
51cu_String_Result cu_String_copy(cu_Allocator allocator, const cu_String *src);
52
54cu_String_Error cu_String_reserve(cu_String *str, size_t capacity);
55
57cu_String_Error cu_String_append_slice(cu_String *str, cu_Slice slice);
58
60cu_String_Error cu_String_append_cstr(cu_String *str, const char *cstr);
61
63cu_String_Error cu_String_append(cu_String *str, const cu_String *other);
64
66cu_Slice cu_String_as_slice(const cu_String *str);
67
69cu_String_Result cu_String_substring(
70 const cu_String *str, size_t off, size_t len);
71
73cu_Slice cu_String_subslice(const cu_String *str, size_t off, size_t len);
#define CU_OPTIONAL_DECL(NAME, T)
Definition optional.h:25
#define CU_RESULT_DECL(NAME, T, E)
Definition result.h:23
Definition allocator.h:24
Definition error.h:27
Definition nostd.h:27
Dynamically allocated UTF-8 string.
Definition string.h:24
size_t length
Definition string.h:27
cu_Allocator allocator
Definition string.h:25
size_t capacity
Definition string.h:28
char * data
Definition string.h:26