summaryrefslogtreecommitdiff
path: root/prbs.h
diff options
context:
space:
mode:
Diffstat (limited to 'prbs.h')
-rw-r--r--prbs.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/prbs.h b/prbs.h
new file mode 100644
index 0000000..4547d7c
--- /dev/null
+++ b/prbs.h
@@ -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