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
31#ifdef USE_NULLABLE_TYPES
32typedef string_t string_nullable_t;
33#endif
34
35//
36//
37//
38
56string *string_new(arena_t *arena, const u64 len);
57
58//
59//
60//
61
77string *string_dup(arena_t *arena, const string *from);
78
79//
80//
81//
82
103string *string_from_cstr(arena_t *arena, const cstr *base);
104
105//
106//
107//
108
123cstr *string_to_cstr(const string *str);
124
125//
126//
127//
128
146u64 string_concat(arena_t *arena, string *dest, const string *src);
147
169u64 string_concatb(arena_t *arena, string *dest, const string *src,
170 const u64 len);
171
194u64 string_concatf(arena_t *arena, string *dest, const cstr *fmt, ...);
195
196//
197//
198//
199
219b32 stringcmp(const string *first, const string *second);
220
232b32 stringcmpb(const string *first, const string *second, const u64 len);
233
234//
235//
236//
237
255u64 string_split(string *src, u8 delim, string ***darray, arena_t *arena);
256
257//
258//
259//
260
268void string_trim(string *str);
269
277void string_trim_left(string *str);
278
286void string_trim_right(string *str);
287
288//
289//
290//
291
303i64 string_findc(string *haystack, u8 needle);
304
316i64 string_find_sstr(string *haystack, string *needle);
317
318//
319//
320//
321
322#define HTILS_STR(base) string_from_cstr(arena, base)
323
324//
325//
326//
327
328#endif // !HTILS_STRING_H
uint64_t u64
Definition basictypes.h:17
u32 b32
Definition basictypes.h:38
int64_t i64
Definition basictypes.h:29
uint8_t u8
Definition basictypes.h:8
char cstr
Definition basictypes.h:50
void string_trim(string *str)
Trims whitespace from the start and end of a string.
Definition string.c:214
u64 string_concatf(arena_t *arena, string *dest, const cstr *fmt,...)
Concatenates a formatted cstr to a string.
Definition string.c:114
u64 string_concatb(arena_t *arena, string *dest, const string *src, const u64 len)
Concatenate len bytes of src to dest.
Definition string.c:96
string * string_from_cstr(arena_t *arena, const cstr *base)
Create a string from a C-string.
Definition string.c:51
u64 string_concat(arena_t *arena, string *dest, const string *src)
Concatenates two strings.
Definition string.c:80
void string_trim_left(string *str)
Trims whitespace from the start of a string.
Definition string.c:222
b32 stringcmpb(const string *first, const string *second, const u64 len)
Compares len bytes of each string.
Definition string.c:165
i64 string_findc(string *haystack, u8 needle)
Finds the first occurance of a character in a string.
Definition string.c:257
i64 string_find_sstr(string *haystack, string *needle)
Finds the first occurance of a string in a string.
Definition string.c:270
string * string_dup(arena_t *arena, const string *from)
Duplicates from to a new string.
Definition string.c:36
u64 string_split(string *src, u8 delim, string ***darray, arena_t *arena)
Splits a string by a delimiter.
Definition string.c:180
struct _string string
a string.
b32 stringcmp(const string *first, const string *second)
Compare two string.
Definition string.c:153
string * string_new(arena_t *arena, const u64 len)
Creates a new string.
Definition string.c:19
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:238
a string.
Definition string.h:26
u8 * base
Definition string.h:27
u64 len
Definition string.h:28
An arena.
Definition arena.h:26