aboutsummaryrefslogtreecommitdiff
path: root/src/string.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-09-27 15:28:44 +0100
committerGinger Bill <bill@gingerbill.org>2016-09-27 15:28:44 +0100
commitb59333294204fd3e298483aea09bc4fab589de94 (patch)
tree121982b60135ab503653b592f20b7df0e5893f50 /src/string.cpp
parent349badcf177a618f30949bb0b273fdc19ce95abe (diff)
Minimal Dependency Map: Only build what is needed
Diffstat (limited to 'src/string.cpp')
-rw-r--r--src/string.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/string.cpp b/src/string.cpp
index 6a08c5aa4..e15498cd1 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -14,7 +14,7 @@ typedef struct String {
isize len;
} String;
// NOTE(bill): used for printf style arguments
-#define LIT(x) (x).len, (x).text
+#define LIT(x) ((int)(x).len), (x).text
typedef struct String16 {
@@ -46,6 +46,11 @@ gb_inline String make_string(char *text) {
return make_string(cast(u8 *)cast(void *)text, gb_strlen(text));
}
+template <size_t N>
+gb_inline String make_string(char const (&text)[N]) {
+ return make_string(cast(u8 *)cast(void *)text, N-1);
+}
+
gb_inline b32 are_strings_equal(String a, String b) {
if (a.len == b.len) {
return gb_memcompare(a.text, b.text, a.len) == 0;
@@ -117,6 +122,12 @@ bool operator > (String a, String b) { return string_compare(a, b) > 0; }
bool operator <=(String a, String b) { return string_compare(a, b) <= 0; }
bool operator >=(String a, String b) { return string_compare(a, b) >= 0; }
+template <size_t N> bool operator ==(String a, char const (&b)[N]) { return a == make_string(b); }
+template <size_t N> bool operator !=(String a, char const (&b)[N]) { return a != make_string(b); }
+template <size_t N> bool operator ==(char const (&a)[N], String b) { return make_string(a) == b; }
+template <size_t N> bool operator !=(char const (&a)[N], String b) { return make_string(a) != b; }
+
+
gb_inline isize string_extension_position(String str) {