From b59333294204fd3e298483aea09bc4fab589de94 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Tue, 27 Sep 2016 15:28:44 +0100 Subject: Minimal Dependency Map: Only build what is needed --- src/string.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/string.cpp') 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 +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 bool operator ==(String a, char const (&b)[N]) { return a == make_string(b); } +template bool operator !=(String a, char const (&b)[N]) { return a != make_string(b); } +template bool operator ==(char const (&a)[N], String b) { return make_string(a) == b; } +template bool operator !=(char const (&a)[N], String b) { return make_string(a) != b; } + + gb_inline isize string_extension_position(String str) { -- cgit v1.2.3