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#include <htils/arena.h>
5#include <htils/basictypes.h>
6
7//
8//
9//
10
12#define print_string ".*s"
14#define print_string_arg(string) (int)(string)->len, (cstr *)(string)->base
15
16//
17//
18//
19
26typedef struct _string {
30
37typedef string string_slice;
38
39#ifdef USE_NULLABLE_TYPES
40typedef string_t string_nullable_t;
41#endif
42
43//
44//
45//
46
64string *string_new(arena_t *arena, const u64 len);
65
86string *string_from_cstr(arena_t *arena, const cstr *base);
87
88//
89//
90//
91
108
124
125//
126//
127//
128
143cstr *string_to_cstr(const string *str);
144
145//
146//
147//
148
164string *string_dup(arena_t *arena, const string *from);
165
166//
167//
168//
169
187u64 string_concat(arena_t *arena, string *dest, const string *src);
188
210u64 string_concatb(arena_t *arena, string *dest, const string *src,
211 const u64 len);
212
235u64 string_concatf(arena_t *arena, string *dest, const cstr *fmt, ...);
236
237//
238//
239//
240
260b32 stringcmp(const string *first, const string *second);
261
273b32 stringcmpb(const string *first, const string *second, const u64 len);
274
275//
276//
277//
278
296u64 string_split(string *src, u8 delim, string ***darray, arena_t *arena);
297
298//
299//
300//
301
309void string_trim(string *str);
310
318void string_trim_left(string *str);
319
327void string_trim_right(string *str);
328
329//
330//
331//
332
344i64 string_findc(string *haystack, u8 needle);
345
357i64 string_find_sstr(string *haystack, string *needle);
358
359//
360//
361//
362
363#define HTILS_STR(base) string_from_cstr(arena, base)
364
365//
366//
367//
368
369#endif // !HTILS_STRING_H
uint64_t u64
Definition basictypes.h:18
u32 b32
Definition basictypes.h:39
int64_t i64
Definition basictypes.h:30
uint8_t u8
Definition basictypes.h:9
char cstr
Definition basictypes.h:55
void string_trim(string *str)
Trims whitespace from the start and end of a string.
Definition string.c:243
u64 string_concatf(arena_t *arena, string *dest, const cstr *fmt,...)
Concatenates a formatted cstr to a string.
Definition string.c:142
u64 string_concatb(arena_t *arena, string *dest, const string *src, const u64 len)
Concatenate len bytes of src to dest.
Definition string.c:120
string * string_from_cstr(arena_t *arena, const cstr *base)
Create a string from a C-string.
Definition string.c:39
u64 string_concat(arena_t *arena, string *dest, const string *src)
Concatenates two strings.
Definition string.c:101
void string_trim_left(string *str)
Trims whitespace from the start of a string.
Definition string.c:252
b32 stringcmpb(const string *first, const string *second, const u64 len)
Compares len bytes of each string.
Definition string.c:192
i64 string_findc(string *haystack, u8 needle)
Finds the first occurance of a character in a string.
Definition string.c:285
string_slice string_slice_from_cstr(u8 *base, u64 len)
Create a string_slice from a C-string.
Definition string.c:55
string string_slice
A slice of a string.
Definition string.h:37
i64 string_find_sstr(string *haystack, string *needle)
Finds the first occurance of a string in a string.
Definition string.c:296
string * string_dup(arena_t *arena, const string *from)
Duplicates from to a new string.
Definition string.c:86
u64 string_split(string *src, u8 delim, string ***darray, arena_t *arena)
Splits a string by a delimiter.
Definition string.c:209
string_slice string_slice_from_string(string *str)
Create a string_slice from a string.
Definition string.c:62
struct _string string
a string.
b32 stringcmp(const string *first, const string *second)
Compare two string.
Definition string.c:178
string * string_new(arena_t *arena, const u64 len)
Creates a new string.
Definition string.c:27
cstr * string_to_cstr(const string *str)
Convert a string to a cstr.
Definition string.c:72
void string_trim_right(string *str)
Trims whitespace from the end of a string.
Definition string.c:267
a string.
Definition string.h:26
u8 * base
Definition string.h:27
u64 len
Definition string.h:28
An arena.
Definition arena.h:33