summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt5
-rw-r--r--include/rodeo.h57
-rw-r--r--include/rodeo_types.h17
-rw-r--r--src/rodeo.c32
-rw-r--r--src/rodeo_internal.h2
-rw-r--r--src/rodeo_log.c25
-rw-r--r--src/rodeo_string.c123
7 files changed, 44 insertions, 217 deletions
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 <stdbool.h>
#include <stdio.h>
@@ -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 <stdbool.h>
#include <stdint.h>
@@ -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 <stdarg.h>
-
-// 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;
-}
-