aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/alstring.h
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/alstring.h')
-rw-r--r--Alc/alstring.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/Alc/alstring.h b/Alc/alstring.h
new file mode 100644
index 00000000..b393a8f4
--- /dev/null
+++ b/Alc/alstring.h
@@ -0,0 +1,32 @@
+#ifndef ALSTRING_H
+#define ALSTRING_H
+
+#include "vector.h"
+
+typedef char al_string_char_type;
+DECL_VECTOR(al_string_char_type)
+
+typedef vector_al_string_char_type al_string;
+typedef const_vector_al_string_char_type const_al_string;
+
+#define AL_STRING_INIT(_x) do { (_x) = calloc(1, sizeof(*(_x)) + sizeof((_x)->Data[0])); } while(0)
+#define AL_STRING_DEINIT(_x) VECTOR_DEINIT(_x)
+
+inline ALsizei al_string_length(const_al_string str)
+{ return VECTOR_SIZE(str); }
+
+inline ALsizei al_string_empty(const_al_string str)
+{ return al_string_length(str) == 0; }
+
+inline const al_string_char_type *al_string_get_cstr(const_al_string str)
+{ return &VECTOR_FRONT(str); }
+
+void al_string_clear(al_string *str);
+
+void al_string_copy(al_string *str, const_al_string from);
+void al_string_copy_cstr(al_string *str, const al_string_char_type *from);
+
+void al_string_append_char(al_string *str, const al_string_char_type c);
+void al_string_append_range(al_string *str, const al_string_char_type *from, const al_string_char_type *to);
+
+#endif /* ALSTRING_H */