#pragma once #include #include #include #define OSU_DEFAULT_STRING_LEN 512 struct Osu_String { char* buf; size_t len; }; struct Osu_String* Osu_CreateString() { struct Osu_String* string = calloc(1, sizeof(struct Osu_String)); string->buf = calloc(1, OSU_DEFAULT_STRING_LEN); string->len = OSU_DEFAULT_STRING_LEN; return string; } void Osu_SetStringData(struct Osu_String* string, const char* data, size_t dataLen) { if (string->len >= dataLen && data[dataLen] != 0) { dataLen++; // To add null terminator. } if (dataLen > string->len) { string->buf = realloc(string->buf, dataLen); string->len = dataLen; } strncpy(string->buf, data, dataLen); string->buf[dataLen - 1] = 0; } void Osu_DestroyString(struct Osu_String* string) { free(string->buf); free(string); }