htils 1
A small set of utilities for C programming.
Loading...
Searching...
No Matches
string.h
Go to the documentation of this file.
1#ifndef HTILS_STRING_H
2#define HTILS_STRING_H
3
4/***********************************/
5
6#include <htils/arena.h>
7#include <htils/basictypes.h>
8
9/***********************************/
10
12#define print_string ".*s"
14#define print_string_arg(string) (int)(string)->len, (cstr *)(string)->base
15
22typedef struct _string {
26
36typedef string string_slice;
37
38#ifdef USE_NULLABLE_TYPES
39typedef string string_nullable_t;
40#endif
41
59string *string_new(arena_t *arena, const u64 len);
60
61//
62//
63//
64
85string *string_from_cstr(arena_t *arena, const cstr *base);
86
87//
88//
89//
90
107
108//
109//
110//
111
127
128//
129//
130//
131
151cstr *string_to_cstr(const string *str);
152
153//
154//
155//
156
172string *string_dup(arena_t *arena, const string *from);
173
174//
175//
176//
177
195u64 string_concat(arena_t *arena, string *dest, const string *src);
196
197//
198//
199//
200
220u64 string_concatb(arena_t *arena, string *dest, const string *src,
221 const u64 len);
222
223//
224//
225//
226
246u64 string_concatf(arena_t *arena, string *dest, const cstr *fmt, ...);
247
248//
249//
250//
251
271b32 stringcmp(const string *first, const string *second);
272
273//
274//
275//
276
288b32 stringcmpb(const string *first, const string *second, const u64 len);
289
290//
291//
292//
293
311u64 string_split(string *src, u8 delim, string ***darray, arena_t *arena);
312
313//
314//
315//
316
324void string_trim(string *str);
325
326//
327//
328//
329
337void string_trim_left(string *str);
338
339//
340//
341//
342
350void string_trim_right(string *str);
351
352//
353//
354//
355
367i64 string_findc(string *haystack, u8 needle);
368
369//
370//
371//
372
384i64 string_find_sstr(string *haystack, string *needle);
385
386#define HTILS_STR(base) string_from_cstr(arena, base)
387
388#endif // !HTILS_STRING_H
struct arena arena_t
An atomic arena.
uint64_t u64
Definition basictypes.h:22
u32 b32
Definition basictypes.h:43
int64_t i64
Definition basictypes.h:34
uint8_t u8
Definition basictypes.h:13
char cstr
Definition basictypes.h:59
void string_trim(string *str)
Trims whitespace from the start and end of a string.
Definition string.c:218
u64 string_concatf(arena_t *arena, string *dest, const cstr *fmt,...)
Concatenates a formatted cstr to a string.
Definition string.c:129
u64 string_concatb(arena_t *arena, string *dest, const string *src, const u64 len)
Concatenate len bytes of src to dest.
Definition string.c:107
string * string_from_cstr(arena_t *arena, const cstr *base)
Create a string from a C-string.
Definition string.c:42
u64 string_concat(arena_t *arena, string *dest, const string *src)
Concatenates two string.
Definition string.c:88
void string_trim_left(string *str)
Trims whitespace from the start of a string.
Definition string.c:227
b32 stringcmpb(const string *first, const string *second, const u64 len)
Compares len bytes of each string.
Definition string.c:175
i64 string_findc(string *haystack, u8 needle)
Finds the first occurence of a character in a string.
Definition string.c:256
string_slice string_slice_from_cstr(u8 *base, u64 len)
Create a string_slice from a C-string.
Definition string.c:54
string string_slice
A non-owning view of a string.
Definition string.h:36
i64 string_find_sstr(string *haystack, string *needle)
Finds the first occurance of a string in a string.
Definition string.c:267
string * string_dup(arena_t *arena, const string *from)
Duplicates from to a new string.
Definition string.c:77
u64 string_split(string *src, u8 delim, string ***darray, arena_t *arena)
Splits a string by a delimiter.
Definition string.c:188
string_slice string_slice_from_string(string *str)
Create a string_slice from a string.
Definition string.c:61
struct _string string
a string.
b32 stringcmp(const string *first, const string *second)
Compare two string.
Definition string.c:161
string * string_new(arena_t *arena, const u64 len)
Creates a new string.
Definition string.c:30
cstr * string_to_cstr(const string *str)
Convert a string to a cstr.
Definition string.c:67
void string_trim_right(string *str)
Trims whitespace from the end of a string.
Definition string.c:242
a string.
Definition string.h:22
u8 * base
Definition string.h:23
u64 len
Definition string.h:24
An atomic arena.
Definition arena.h:45