diff options
Diffstat (limited to 'prbs.h')
-rw-r--r-- | prbs.h | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ +#ifndef prbs_h +#define prbs_h + +#include "types.h" +#include "arena.h" +#include <stdarg.h> + +i32 cstrings_equal(const char *s1, const char *s2); + +struct string { + u8 *ptr; + u64 len; +}; + +struct string_node { + struct string str; + struct string_node *next; + struct string_node *prev; +}; + +struct string_list { + i32 cnt; + u64 len; + struct string_node *first; + struct string_node *last; +}; + +#define string_from_cliteral(str) (sturct string){(u8 *)(str), sizeof(str) - 1} +#define expand_string(str) (i32)((str).len), ((str).ptr) + +char *string_to_cstring(struct arena *arena, struct string str); +i32 strings_equal(struct string str1, struct string str2); +u8 *find_char(struct string str, i32 c); +u8 *find_last_char(struct string str, i32 c); +struct string string_from_range(u8 *start, u8 *end); +struct string get_dirname(struct string str); +struct string push_fstringv(struct arena *arena, const char *format, va_list args); +struct string push_fstring(struct arena *arena, const char *format, ...); +void print_string(struct string str); +void push_string_to_list(struct arena *arena, struct string_list *list, i32 front, struct string str); +void push_fstring_to_list(struct arena *arena, struct string_list *list, i32 front, const char *format, ...); +struct string join_string_list(struct arena *arena, struct string_list *list); +void print_string_list(struct string_list *list); + +#endif |