aboutsummaryrefslogtreecommitdiffstats
path: root/gb_string.h
diff options
context:
space:
mode:
authorGravatar gingerBill 2015-09-27 17:40:52 +0100
committerGravatar gingerBill 2015-09-27 17:40:52 +0100
commitb3bfc19108a600caba35522cf140326517f56a5a (patch)
tree9f4f031b0c7a7a54afba40307ef59edb0a006a40 /gb_string.h
parentUpdate README.md (diff)
Fix Silly Mistakes
Diffstat (limited to 'gb_string.h')
-rw-r--r--gb_string.h207
1 files changed, 104 insertions, 103 deletions
diff --git a/gb_string.h b/gb_string.h
index c5bd397..db48c84 100644
--- a/gb_string.h
+++ b/gb_string.h
@@ -112,12 +112,13 @@
//
// C example
#if 0
+#include <stdio.h>
+#include <stdlib.h>
+
#define GB_STRING_IMPLEMENTATION
#include "gb_string.h"
-#include <stdio.h>
-
-void string_test(void)
+int main(int argc, char** argv)
{
gb_String str = gb_make_string("Hello");
gb_String other_str = gb_make_string_length(", ", 2);
@@ -150,13 +151,14 @@ void string_test(void)
//
// C++ example
#if 0
+#include <stdio.h>
+#include <stdlib.h>
+
#define GB_STRING_CPP
#define GB_STRING_IMPLEMENTATION
#include "gb_string.h"
-#include <stdio.h>
-
-void string_test()
+int main(int argc, char** argv)
{
using namespace gb;
@@ -243,7 +245,7 @@ struct gb_String_Header
gb_usize cap;
};
-#define GB_STRING_HEADER(s) ((struct gb_String_Header*)((s) - sizeof(struct gb_String_Header)))
+#define GB_STRING_HEADER(s) ((struct gb_String_Header*)s - 1)
gb_String gb_make_string(const char* str);
gb_String gb_make_string_length(const void* str, gb_usize len);
@@ -275,6 +277,101 @@ gb_String gb_trim_string(gb_String str, const char* cut_set);
}
#endif
+#if defined(GB_STRING_CPP)
+
+#if !defined(__cplusplus)
+#error You need to compile as C++ for the C++ version of gb_string.h to work
+#endif
+
+namespace gb
+{
+typedef gb_String String;
+typedef gb_usize usize;
+
+gb_inline String make_string(const char* str = "")
+{
+ return gb_make_string(str);
+}
+
+gb_inline String make_string(const void* str, usize len)
+{
+ return gb_make_string_length(str, len);
+}
+
+gb_inline void free_string(String& str)
+{
+ gb_make_string(str);
+ str = GB_NULLPTR;
+}
+
+gb_inline String duplicate_string(const String str)
+{
+ return gb_duplicate_string(str);
+}
+
+gb_inline usize string_length(const String str)
+{
+ return gb_string_length(str);
+}
+
+gb_inline usize string_capacity(const String str)
+{
+ return gb_string_capacity(str);
+}
+
+gb_inline usize string_available_space(const String str)
+{
+ return gb_string_available_space(str);
+}
+
+gb_inline void clear_string(String str)
+{
+ gb_clear_string(str);
+}
+
+gb_inline void append_string_length(String& str, const void* other, usize len)
+{
+ str = gb_append_string_length(str, other, len);
+}
+
+gb_inline void append_string(String& str, const String other)
+{
+ str = gb_append_string(str, other);
+}
+
+gb_inline void append_cstring(String& str, const char* other)
+{
+ str = gb_append_cstring(str, other);
+}
+
+gb_inline void set_string(String& str, const char* cstr)
+{
+ str = gb_set_string(str, cstr);
+}
+
+gb_inline void string_make_space_for(String& str, usize add_len)
+{
+ str = gb_string_make_space_for(str, add_len);
+}
+
+gb_inline usize string_allocation_size(const String str)
+{
+ return gb_string_allocation_size(str);
+}
+
+gb_inline bool strings_are_equal(const String lhs, const String rhs)
+{
+ return gb_strings_are_equal(lhs, rhs) == GB_TRUE;
+}
+
+gb_inline void trim_string(String& str, const char* cut_set)
+{
+ str = gb_trim_string(str, cut_set);
+}
+
+} // namespace gb
+#endif // GB_STRING_CPP
+#endif // GB_STRING_H
#ifdef GB_STRING_IMPLEMENTATION
static void gb_set_string_length(gb_String str, gb_usize len)
{
@@ -491,99 +588,3 @@ gb_String gb_trim_string(gb_String str, const char* cut_set)
#endif // GB_STRING_IMPLEMENTATION
-#if defined(GB_STRING_CPP)
-
-#if !defined(__cplusplus)
-#error You need to compile as C++ for the C++ version of gb_string.h to work
-#endif
-
-namespace gb
-{
-typedef gb_String String;
-typedef gb_usize usize;
-
-gb_inline String make_string(const char* str = "")
-{
- return gb_make_string(str);
-}
-
-gb_inline String make_string(const void* str, usize len)
-{
- return gb_make_string_length(str, len);
-}
-
-gb_inline void free_string(String& str)
-{
- gb_make_string(str);
- str = GB_NULLPTR;
-}
-
-gb_inline String duplicate_string(const String str)
-{
- return gb_duplicate_string(str);
-}
-
-gb_inline usize string_length(const String str)
-{
- return gb_string_length(str);
-}
-
-gb_inline usize string_capacity(const String str)
-{
- return gb_string_capacity(str);
-}
-
-gb_inline usize string_available_space(const String str)
-{
- return gb_string_available_space(str);
-}
-
-gb_inline void clear_string(String str)
-{
- gb_clear_string(str);
-}
-
-gb_inline void append_string_length(String& str, const void* other, usize len)
-{
- str = gb_append_string_length(str, other, len);
-}
-
-gb_inline void append_string(String& str, const String other)
-{
- str = gb_append_string(str, other);
-}
-
-gb_inline void append_cstring(String& str, const char* other)
-{
- str = gb_append_cstring(str, other);
-}
-
-gb_inline void set_string(String& str, const char* cstr)
-{
- str = gb_set_string(str, cstr);
-}
-
-gb_inline void string_make_space_for(String& str, usize add_len)
-{
- str = gb_string_make_space_for(str, add_len);
-}
-
-gb_inline usize string_allocation_size(const String str)
-{
- return gb_string_allocation_size(str);
-}
-
-gb_inline bool strings_are_equal(const String lhs, const String rhs)
-{
- return gb_strings_are_equal(lhs, rhs) == GB_TRUE;
-}
-
-gb_inline void trim_string(String& str, const char* cut_set)
-{
- str = gb_trim_string(str, cut_set);
-}
-
-} // namespace gb
-#endif // GB_STRING_CPP
-
-#endif // GB_STRING_HP