#pragma once #include "Base.h" // Need to sort out how formatted strings and string builders are allocated // Maybe just use context.allocator? // What about temp strings? use context.temp? struct string { s64 count; u8* data; // Construct from a string literal or C-string string () { // default constructor count = 0; data = nullptr; } string (char* cstr) { count = strlen(cstr); data = (u8*)cstr; } string (s64 _count, char* str) { count = _count; data = (u8*)str; } string (s64 _count, u8* str) { count = _count; data = str; } }; // ~ API ~ #TODO string copy_string (string str); bool strings_match(string first_string, string second_string); // Unicode stuff string wide_to_utf8 (u16* source, s32 length); // string string_view(string n_string, int start_index, int view_count); // string copy_string(char* c_string); // void free(string& n_string); bool is_valid(string n_string); bool is_c_string(string n_string); char* to_c_string(string n_string); string format_string(char* format, ...); string string_from_literal(char* literal);