From f250a4090cf4d535a163388fb5faea5ff1ce48e4 Mon Sep 17 00:00:00 2001 From: realtradam Date: Wed, 12 Apr 2023 19:18:59 -0400 Subject: remove string wrapper, use STC directly instead --- CMakeLists.txt | 5 +- include/rodeo.h | 57 +++-------------------- include/rodeo_types.h | 17 ++----- src/rodeo.c | 32 +++++++------ src/rodeo_internal.h | 2 +- src/rodeo_log.c | 25 +++++----- src/rodeo_string.c | 123 -------------------------------------------------- 7 files changed, 44 insertions(+), 217 deletions(-) delete mode 100644 src/rodeo_string.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e32f04..c52cc26 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,6 @@ project(RodeoKit add_library(${PROJECT_NAME} "src/rodeo.c" "src/rodeo_math.c" - "src/rodeo_string.c" "src/rodeo_log.c" "src/rodeo_input.c" ) @@ -66,7 +65,7 @@ if(DEFINED EMSCRIPTEN) PRIVATE external/bgfx/include PRIVATE external/bx/include PRIVATE external/cglm/include - PRIVATE external/STC/include + PUBLIC external/STC/include PRIVATE src PUBLIC include ) @@ -133,7 +132,7 @@ elseif(DEFINED UNIX AND NOT DEFINED APPLE) PRIVATE external/bgfx/include PRIVATE external/bx/include PRIVATE external/cglm/include - PRIVATE external/STC/include + PUBLIC external/STC/include PRIVATE src PUBLIC include ) diff --git a/include/rodeo.h b/include/rodeo.h index 1adb258..1fd27a6 100644 --- a/include/rodeo.h +++ b/include/rodeo.h @@ -3,6 +3,9 @@ // public #include "rodeo_types.h" +// -- external -- +#include "stc/cstr.h" + // -- system -- #include #include @@ -68,7 +71,7 @@ void rodeo_window_init( uint16_t screen_height, uint16_t screen_width, - rodeo_string_t title + cstr title ); void @@ -109,7 +112,7 @@ rodeo_window_quit_set(bool quit); void rodeo_debug_text_draw(uint16_t x, uint16_t y, const char *format, ...); -rodeo_string_t +cstr rodeo_renderer_name_get(void); void @@ -126,7 +129,7 @@ rodeo_texture_2d_create_from_RGBA8( ); rodeo_texture_2d_t -rodeo_texture_2d_create_from_path(rodeo_string_t path); +rodeo_texture_2d_create_from_path(cstr path); void rodeo_texture_2d_destroy(rodeo_texture_2d_t *texture); @@ -145,54 +148,6 @@ rodeo_texture_2d_draw( const rodeo_texture_2d_t *texture ); -/// --- String --- - -rodeo_string_t -rodeo_string_create(const char *c_string); - -void -rodeo_string_destroy(rodeo_string_t *self); - -char* -rodeo_string_to_cstr(rodeo_string_t *self); - -const char* -rodeo_string_to_constcstr(const rodeo_string_t *self); - -void -rodeo_string_insert( - rodeo_string_t *self, - const rodeo_string_t insert, - intptr_t position -); - -void -rodeo_string_append( - rodeo_string_t *self, - const rodeo_string_t append -); - -void -rodeo_string_prepend( - rodeo_string_t *self, - const rodeo_string_t prepend -); - -void -rodeo_string_clear(rodeo_string_t *self); - -void -rodeo_string_set(rodeo_string_t *self, char *value); - -rodeo_string_t -rodeo_string_clone(const rodeo_string_t self); - -rodeo_string_t -rodeo_string_format(const char *format, ...); - -rodeo_string_t -rodeo_string_vargs_format(const char *format, va_list vargs); - /// --- Log --- void diff --git a/include/rodeo_types.h b/include/rodeo_types.h index a75da40..4ed7767 100644 --- a/include/rodeo_types.h +++ b/include/rodeo_types.h @@ -1,5 +1,8 @@ #pragma once +// external +#include "stc/cstr.h" + // system #include #include @@ -86,18 +89,6 @@ typedef struct rodeo_frameBuffer_2d_t; */ -/// --- String --- - -// taken from STC library -// must match their layout exactly as it will be cast to it. -// (TODO should write test cases for the string funcs) -typedef char rodeo_string_value_t; -typedef struct { rodeo_string_value_t* data; intptr_t size, cap; } rodeo_string_buffer_t; -typedef union { - struct { rodeo_string_value_t data[sizeof(rodeo_string_buffer_t) - 1]; unsigned char size; } sml; - struct { rodeo_string_value_t* data; size_t size, ncap; } lon; -} rodeo_string_t; - /// --- Log --- typedef @@ -111,7 +102,7 @@ rodeo_logLevel_t; typedef void -(*rodeo_log_function)(rodeo_string_t text); +(*rodeo_log_function)(cstr text); typedef union diff --git a/src/rodeo.c b/src/rodeo.c index fbbee92..d92a9db 100644 --- a/src/rodeo.c +++ b/src/rodeo.c @@ -29,7 +29,7 @@ void rodeo_window_init( uint16_t screen_height, uint16_t screen_width, - rodeo_string_t title + cstr title ) { state.window = NULL; @@ -61,7 +61,7 @@ rodeo_window_init( "Initializing SDL window..." ); state.window = SDL_CreateWindow( - rodeo_string_to_constcstr(&title), + cstr_str(&title), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, screen_width, @@ -155,7 +155,7 @@ rodeo_window_init( } // load shaders - rodeo_string_t shader_path = rodeo_string_create("???"); + cstr shader_path = cstr_lit("???"); switch(bgfx_get_renderer_type()) { case BGFX_RENDERER_TYPE_NOOP: rodeo_log( @@ -164,13 +164,13 @@ rodeo_window_init( ); exit(EXIT_FAILURE); case BGFX_RENDERER_TYPE_OPENGLES: - rodeo_string_set( + cstr_assign( &shader_path, "shaders/100_es/" ); break; case BGFX_RENDERER_TYPE_VULKAN: - rodeo_string_set( + cstr_assign( &shader_path, "shaders/spirv/" ); @@ -182,15 +182,17 @@ rodeo_window_init( ); exit(EXIT_FAILURE); } - rodeo_string_t vertex_shader_path = rodeo_string_create("simple.vertex.bin"); - rodeo_string_t fragment_shader_path = rodeo_string_create("simple.fragment.bin"); + cstr vertex_shader_path = cstr_lit("simple.vertex.bin"); + cstr fragment_shader_path = cstr_lit("simple.fragment.bin"); - rodeo_string_prepend( + cstr_insert_s( &vertex_shader_path, + 0, shader_path ); - rodeo_string_prepend( + cstr_insert_s( &fragment_shader_path, + 0, shader_path ); @@ -373,10 +375,10 @@ rodeo_debug_text_draw(u_int16_t x, u_int16_t y, const char *format, ...) } } -rodeo_string_t +cstr rodeo_renderer_name_get(void) { - return rodeo_string_create( + return cstr_from( bgfx_get_renderer_name(bgfx_get_renderer_type()) ); } @@ -648,10 +650,10 @@ rodeo_texture_2d_draw( } rodeo_texture_2d_t -rodeo_texture_2d_create_from_path(rodeo_string_t path) +rodeo_texture_2d_create_from_path(cstr path) { // load image to surface - SDL_Surface *surface = IMG_Load(rodeo_string_to_constcstr(&path)); + SDL_Surface *surface = IMG_Load(cstr_str(&path)); if(surface == NULL) { rodeo_log( @@ -704,9 +706,9 @@ rodeo_texture_2d_create_from_path(rodeo_string_t path) } bgfx_shader_handle_t -irodeo_shader_load(const rodeo_string_t path) +irodeo_shader_load(const cstr path) { - const char* path_cstr = rodeo_string_to_constcstr(&path); + const char* path_cstr = cstr_str(&path); bgfx_shader_handle_t invalid = BGFX_INVALID_HANDLE; FILE *file = fopen(path_cstr, "rb"); diff --git a/src/rodeo_internal.h b/src/rodeo_internal.h index 6e60314..057f2ae 100644 --- a/src/rodeo_internal.h +++ b/src/rodeo_internal.h @@ -19,7 +19,7 @@ void irodeo_render_buffer_transient_alloc(void); bgfx_shader_handle_t -irodeo_shader_load(const rodeo_string_t path); +irodeo_shader_load(const cstr path); void irodeo_random_seed_set(stc64_t seed); diff --git a/src/rodeo_log.c b/src/rodeo_log.c index 243e04b..625b563 100644 --- a/src/rodeo_log.c +++ b/src/rodeo_log.c @@ -15,41 +15,44 @@ rodeo_log( ... ) { - rodeo_string_t formatted; + cstr formatted; mrodeo_vargs_do(format) { - formatted = rodeo_string_vargs_format(format, vargs); + formatted = cstr_from_vfmt(format, vargs); } switch(loglevel) { case rodeo_logLevel_info: - rodeo_string_prepend( + cstr_insert( &formatted, - rodeo_string_create("[INFO]: ") + 0, + "[INFO]: " ); break; case rodeo_logLevel_warning: - rodeo_string_prepend( + cstr_insert( &formatted, - rodeo_string_create("\033[33m[WARN]:\033[0m ") + 0, + "\033[33m[WARN]:\033[0m " ); break; case rodeo_logLevel_error: - rodeo_string_prepend( + cstr_insert( &formatted, - rodeo_string_create("\033[31;1m[ERROR]:\033[0m ") + 0, + "\033[31;1m[ERROR]:\033[0m " ); break; } - rodeo_string_append( + cstr_append( &formatted, - rodeo_string_create("\n") + "\n" ); if(logging_function == NULL) { - printf("%s", rodeo_string_to_constcstr(&formatted)); + printf("%s", cstr_str(&formatted)); } else { diff --git a/src/rodeo_string.c b/src/rodeo_string.c deleted file mode 100644 index 8e82b6b..0000000 --- a/src/rodeo_string.c +++ /dev/null @@ -1,123 +0,0 @@ - -// internal -#include "rodeo.h" -#include "rodeo_types.h" - -// external -#define i_implement -#include "stc/cstr.h" -#include "SDL2/SDL.h" - -// system -#include - -// TODO: the create and destroy functions arent actually used together. -// one is a pointer and the other isnt -rodeo_string_t -rodeo_string_create(const char *c_string) -{ - cstr result = cstr_NULL; - if(c_string != NULL) - { - result = cstr_from(c_string); - } - return *(rodeo_string_t*)(&result); -} - -void -rodeo_string_destroy(rodeo_string_t *self) -{ - cstr_drop((cstr*)self); - //free(string); // the above already calls free on the entire pointer -} - -char* -rodeo_string_to_cstr(rodeo_string_t *self) -{ - return cstr_data((cstr*)self); -} - -const char* -rodeo_string_to_constcstr(const rodeo_string_t *self) -{ - return cstr_str((cstr*)self); -} - -void -rodeo_string_insert( - rodeo_string_t *self, - const rodeo_string_t insert, - intptr_t position -) -{ - cstr_insert_s((cstr*)self, position, *(cstr*)&insert); -} - -void -rodeo_string_append( - rodeo_string_t *self, - const rodeo_string_t append -) -{ - rodeo_string_insert( - self, - append, - cstr_size((cstr*)self) - ); -} - -void -rodeo_string_prepend( - rodeo_string_t *self, - const rodeo_string_t prepend -) -{ - rodeo_string_insert( - self, - prepend, - 0 - ); -} - -void -rodeo_string_clear(rodeo_string_t *self) -{ - cstr_clear((cstr*)self); -} - -void -rodeo_string_set(rodeo_string_t *self, char *value) -{ - cstr_clear((cstr*)self); - cstr *temp = (cstr*)self; - *temp = cstr_from(value); -} - -rodeo_string_t -rodeo_string_clone(const rodeo_string_t self) -{ - cstr temp = cstr_clone(*(cstr*)&self); - rodeo_string_t result = *(rodeo_string_t*)&temp; - return result; -} - -rodeo_string_t -rodeo_string_format(const char *format, ...) -{ - rodeo_string_t result; - mrodeo_vargs_do(format) - { - cstr temp = cstr_from_vfmt(format, vargs); - result = *(rodeo_string_t*)&temp; - } - return result; -} - -rodeo_string_t -rodeo_string_vargs_format(const char *format, va_list vargs) -{ - cstr temp = cstr_from_vfmt(format, vargs); - rodeo_string_t result = *(rodeo_string_t*)&temp; - return result; -} - -- cgit v1.2.3