Minimal Dependency Map: Only build what is needed

This commit is contained in:
Ginger Bill
2016-09-27 15:28:44 +01:00
parent 349badcf17
commit b593332942
18 changed files with 823 additions and 644 deletions

View File

@@ -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) {