aboutsummaryrefslogtreecommitdiff
path: root/src/string.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-09-07 20:55:59 +0100
committerGinger Bill <bill@gingerbill.org>2017-09-07 20:55:59 +0100
commit8e3b77aba81a6bd71c7e8b23f09fc76474f401d7 (patch)
tree812e5e8fe937a8c3d7c8b3e5b931f9c7f8984c7d /src/string.cpp
parent36e3a02f67997131507c1d6b389317324e04a0b6 (diff)
Library collections
Diffstat (limited to 'src/string.cpp')
-rw-r--r--src/string.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/string.cpp b/src/string.cpp
index 397f41063..8e6006c46 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -16,11 +16,11 @@ struct String {
isize len;
u8 &operator[](isize i) {
- GB_ASSERT(0 <= i && i < len);
+ GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
return text[i];
}
u8 const &operator[](isize i) const {
- GB_ASSERT(0 <= i && i < len);
+ GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
return text[i];
}
};
@@ -38,11 +38,11 @@ struct String16 {
wchar_t *text;
isize len;
wchar_t &operator[](isize i) {
- GB_ASSERT(0 <= i && i < len);
+ GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
return text[i];
}
wchar_t const &operator[](isize i) const {
- GB_ASSERT(0 <= i && i < len);
+ GB_ASSERT_MSG(0 <= i && i < len, "[%td]", i);
return text[i];
}
};
@@ -284,6 +284,21 @@ String remove_directory_from_path(String s) {
}
+String concatenate_strings(gbAllocator a, String x, String y) {
+ isize len = x.len+y.len;
+ u8 *data = gb_alloc_array(a, u8, len+1);
+ gb_memmove(data, x.text, x.len);
+ gb_memmove(data+x.len, y.text, y.len);
+ data[len] = 0;
+ return make_string(data, len);
+}
+
+String copy_string(gbAllocator a, String s) {
+ u8 *data = gb_alloc_array(a, u8, s.len+1);
+ gb_memmove(data, s.text, s.len);
+ data[s.len] = 0;
+ return make_string(data, s.len);
+}