z_mirror/sdl-osu

git clone https://git.raiguard.me/z_mirror/sdl-osu

Caleb HeuerSwitch to four-space indents and inline braces836a89c

trunk
881 B34 linesraw
1#pragma once
2#include <stddef.h>
3#include <stdlib.h>
4#include <string.h>
5
6#define OSU_DEFAULT_STRING_LEN 512
7struct Osu_String {
8    char* buf;
9    size_t len;
10};
11
12struct Osu_String* Osu_CreateString() {
13    struct Osu_String* string = calloc(1, sizeof(struct Osu_String));
14    string->buf = calloc(1, OSU_DEFAULT_STRING_LEN);
15    string->len = OSU_DEFAULT_STRING_LEN;
16    return string;
17}
18
19void Osu_SetStringData(struct Osu_String* string, const char* data, size_t dataLen) {
20    if (string->len >= dataLen && data[dataLen] != 0) {
21        dataLen++; // To add null terminator.
22    }
23    if (dataLen > string->len) {
24        string->buf = realloc(string->buf, dataLen);
25        string->len = dataLen;
26    }
27    strncpy(string->buf, data, dataLen);
28    string->buf[dataLen - 1] = 0;
29}
30
31void Osu_DestroyString(struct Osu_String* string) {
32    free(string->buf);
33    free(string);
34}