libclod
C library for interacting with NBTs, region files, LOD data and other things.
Loading...
Searching...
No Matches
string.h
Go to the documentation of this file.
1
12#ifndef LIBCLOD_STRING_H
13#define LIBCLOD_STRING_H
14
15#include <clod/lib.h>
16#include <stdarg.h>
17
28 char *ptr;
29
32 ptrdiff_t len;
33
36 ptrdiff_t cap;
37};
38
40#define CLOD_STRING_NULL ((struct clod_string){0})
41
43#define CLOD_STRING_C(cstr) ((struct clod_string){ .ptr = (char*)(cstr), .len = sizeof((char[]){cstr}) - 1, .cap = 0 })
44
46#define CLOD_STRING_NEW(size) ((struct clod_string){ .ptr = (char[size]){0}, .len = 0, .cap = (size) })
47
49#define CLOD_STRING_OBJECT(object) ((struct clod_string){ .ptr = (char*)(object), .len = sizeof(*(object)), .cap = sizeof(*(object)) })
50
52CLOD_API
53struct clod_string clod_string_from_cstr(const char *cstr);
54
63CLOD_API CLOD_NONNULL(1)
64size_t clod_string_cat(struct clod_string *dst, struct clod_string src);
65
73CLOD_API CLOD_NONNULL(1)
74size_t clod_string_insert(struct clod_string *dst, struct clod_string src);
75
88CLOD_API
89int clod_string_cmp(struct clod_string str1, struct clod_string str2);
90
92CLOD_API CLOD_NONNULL(1)
93void clod_string_put_char(struct clod_string *str, char c);
94
96CLOD_API CLOD_NONNULL(1)
97char clod_string_get_char(struct clod_string *str);
98
100CLOD_API
101char clod_string_peek_char(struct clod_string str);
102
147CLOD_API
148size_t clod_string_format(struct clod_string *dst, struct clod_string fmt, ...);
149
151CLOD_API
152size_t clod_string_vformat(struct clod_string *dst, struct clod_string fmt, va_list args);
153
163CLOD_API
164int clod_string_parse(struct clod_string src, struct clod_string fmt, ...);
165
167CLOD_API
168int clod_string_vparse(struct clod_string src, struct clod_string fmt, va_list args);
169
179CLOD_API
180struct clod_string clod_string_contains(struct clod_string str, struct clod_string elem);
181
195CLOD_API
196struct clod_string clod_string_find(struct clod_string str, char elem, int occurrence);
197
205CLOD_API
206bool clod_string_remove_prefix(struct clod_string *str, struct clod_string prefix);
207
208#define CLOD_STRING_DIGIT_ALPHABET CLOD_STRING_C("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_")
209#define CLOD_STRING_DIGIT_ALPHABET_CAPS CLOD_STRING_C("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_")
210
215CLOD_API
216size_t clod_string_put_int(struct clod_string *dst, intmax_t val,
217 struct clod_string alphabet, unsigned char base, unsigned char min_digits, unsigned char max_digits);
218
221CLOD_API
222intmax_t clod_string_get_int(struct clod_string *str,
223 struct clod_string alphabet, unsigned char base);
224
229CLOD_API
230size_t clod_string_put_uint(struct clod_string *dst, uintmax_t val,
231 struct clod_string alphabet, unsigned char base, unsigned char min_digits, unsigned char max_digits);
232
235CLOD_API
236uintmax_t clod_string_get_uint(struct clod_string *str,
237 struct clod_string alphabet, unsigned char base);
238
243CLOD_API
244size_t clod_string_put_double(struct clod_string *dst, double val,
245 struct clod_string alphabet, unsigned char base, unsigned char min_digits, unsigned char max_digits);
246
249CLOD_API
250double clod_string_get_double(struct clod_string *str,
251 struct clod_string alphabet, unsigned char base);
252
253#endif
CLOD_API bool clod_string_remove_prefix(struct clod_string *str, struct clod_string prefix)
Definition string.c:109
size_t clod_string_cat(struct clod_string *dst, struct clod_string src)
Definition string.c:17
CLOD_API size_t clod_string_put_int(struct clod_string *dst, intmax_t val, struct clod_string alphabet, unsigned char base, unsigned char min_digits, unsigned char max_digits)
Definition serialise.c:16
CLOD_API size_t clod_string_put_uint(struct clod_string *dst, uintmax_t val, struct clod_string alphabet, unsigned char base, unsigned char min_digits, unsigned char max_digits)
Definition serialise.c:50
CLOD_API struct clod_string clod_string_find(struct clod_string str, char elem, int occurrence)
Definition string.c:147
CLOD_API struct clod_string clod_string_contains(struct clod_string str, struct clod_string elem)
Definition string.c:123
CLOD_API size_t clod_string_put_double(struct clod_string *dst, double val, struct clod_string alphabet, unsigned char base, unsigned char min_digits, unsigned char max_digits)
Definition string.c:168
struct clod_string clod_string_from_cstr(const char *cstr)
Make a string from a C string.
Definition string.c:5
char clod_string_get_char(struct clod_string *str)
Remove a single char from the start of the string.
Definition string.c:93
CLOD_API double clod_string_get_double(struct clod_string *str, struct clod_string alphabet, unsigned char base)
Definition string.c:174
CLOD_API uintmax_t clod_string_get_uint(struct clod_string *str, struct clod_string alphabet, unsigned char base)
Definition serialise.c:70
int clod_string_cmp(struct clod_string str1, struct clod_string str2)
Definition string.c:75
CLOD_API int clod_string_parse(struct clod_string src, struct clod_string fmt,...)
char clod_string_peek_char(struct clod_string str)
Get the first char in the string.
Definition string.c:103
CLOD_API int clod_string_vparse(struct clod_string src, struct clod_string fmt, va_list args)
Same as clod_string_parse but takes a va-list argument instead of '...'.
void clod_string_put_char(struct clod_string *str, char c)
Append a single char to the end of the string.
Definition string.c:87
CLOD_API intmax_t clod_string_get_int(struct clod_string *str, struct clod_string alphabet, unsigned char base)
Definition serialise.c:31
size_t clod_string_insert(struct clod_string *dst, struct clod_string src)
Definition string.c:44
char * ptr
Definition string.h:28
ptrdiff_t len
Definition string.h:32
ptrdiff_t cap
Definition string.h:36