z_mirror/sdl-osu
git clone https://git.raiguard.me/z_mirror/sdl-osu
836a89c
trunk
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 { 8char * buf ; 9size_t len ; 10}; 11 12struct Osu_String * Osu_CreateString () { 13struct Osu_String * string = calloc (1 ,sizeof (struct Osu_String )); 14string -> buf = calloc (1 ,OSU_DEFAULT_STRING_LEN ); 15string -> len = OSU_DEFAULT_STRING_LEN ; 16return string ; 17} 18 19void Osu_SetStringData (struct Osu_String * string ,const char * data ,size_t dataLen ) { 20if (string -> len >=dataLen && data [dataLen ]!= 0 ) { 21dataLen ++ ;// To add null terminator. 22 } 23if (dataLen > string -> len ) { 24string -> buf = realloc (string -> buf ,dataLen ); 25string -> len = dataLen ; 26 } 27strncpy (string -> buf ,data ,dataLen ); 28string -> buf [dataLen - 1 ]= 0 ; 29} 30 31void Osu_DestroyString (struct Osu_String * string ) { 32free (string -> buf ); 33free (string ); 34}