diff options
| author | gingerBill <ginger.bill.22@gmail.com> | 2016-08-05 00:54:05 +0100 |
|---|---|---|
| committer | gingerBill <ginger.bill.22@gmail.com> | 2016-08-05 00:54:05 +0100 |
| commit | 2aaef48c5c362bb3e04d0c9cd1e722e21b3755e5 (patch) | |
| tree | f7b99cda983ce6226384127672abea74459b05b3 /src/common.cpp | |
| parent | 19aea1f19895b035e8abb424987f48df6bc52c53 (diff) | |
String support
Diffstat (limited to 'src/common.cpp')
| -rw-r--r-- | src/common.cpp | 80 |
1 files changed, 5 insertions, 75 deletions
diff --git a/src/common.cpp b/src/common.cpp index fa99247c3..d1905f1e8 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -2,78 +2,7 @@ #define GB_IMPLEMENTATION #include "gb/gb.h" -// NOTE(bill): Used for UTF-8 strings -typedef struct String { - u8 *text; - isize len; -} String; -// NOTE(bill): used for printf style arguments -#define LIT(x) (x).len, (x).text - - - - -gb_inline String make_string(u8 *text, isize len) { - String s; - s.text = text; - if (len < 0) - len = gb_strlen(cast(char *)text); - s.len = len; - return s; -} - -gb_inline String make_string(char *text) { - return make_string(cast(u8 *)cast(void *)text, gb_strlen(text)); -} - -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; - } - return false; -} - -gb_inline b32 are_strings_equal_ignore_case(String a, String b) { - if (a.len == b.len) { - for (isize i = 0; i < a.len; i++) { - char x = cast(char)a.text[i]; - char y = cast(char)b.text[i]; - if (gb_char_to_lower(x) != gb_char_to_lower(y)) - return false; - } - return true; - } - return false; -} - - -gb_inline isize string_extension_position(String str) { - isize dot_pos = -1; - isize i = str.len; - b32 seen_dot = false; - while (i --> 0) { - if (str.text[i] == GB_PATH_SEPARATOR) - break; - if (str.text[i] == '.') { - dot_pos = i; - break; - } - } - - return dot_pos; -} - -gb_inline b32 string_has_extension(String str, String ext) { - if (str.len > ext.len+1) { - u8 *s = str.text+str.len - ext.len-1; - if (s[0] == '.') { - s++; - return gb_memcompare(s, ext.text, ext.len) == 0; - } - return false; - } - return false; -} +#include "string.cpp" // Hasing @@ -86,7 +15,8 @@ gb_inline u64 hash_string(String s) { } gb_inline u64 hash_pointer(void *ptr) { - u64 p = cast(u64)cast(uintptr)ptr; + uintptr u = cast(uintptr)ptr; + u64 p = cast(u64)u; return p; } @@ -125,9 +55,9 @@ typedef struct MapFindResult { template <typename T> struct MapEntry { - u64 key; + u64 key; isize next; - T value; + T value; }; template <typename T> |