diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-09-27 15:28:44 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-09-27 15:28:44 +0100 |
| commit | b59333294204fd3e298483aea09bc4fab589de94 (patch) | |
| tree | 121982b60135ab503653b592f20b7df0e5893f50 /src/string.cpp | |
| parent | 349badcf177a618f30949bb0b273fdc19ce95abe (diff) | |
Minimal Dependency Map: Only build what is needed
Diffstat (limited to 'src/string.cpp')
| -rw-r--r-- | src/string.cpp | 13 |
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) { |