diff --git a/src/asset_manager.c b/src/asset_manager.c index 1192bcc..4266654 100644 --- a/src/asset_manager.c +++ b/src/asset_manager.c @@ -49,6 +49,8 @@ void destroy_asset_header_def(asset_header_def_t *asset_header_def) int asset_manager_init(asset_manager_t *asset_manager) { + assert("Asset manager cannot be NULL" && asset_manager); + linked_list_init(&asset_manager->assets, sizeof(asset_t), (deleter_t)destroy_asset); linked_list_init(&asset_manager->assets_header_defs, sizeof(asset_header_def_t), (deleter_t)destroy_asset_header_def); @@ -97,6 +99,8 @@ int asset_manager_init(asset_manager_t *asset_manager) int asset_manager_exit(asset_manager_t *asset_manager) { + assert("Asset manager cannot be NULL" && asset_manager); + linked_list_clear(&asset_manager->assets_header_defs); linked_list_clear(&asset_manager->assets); @@ -119,6 +123,8 @@ static inline bool condition_is_asset_unused(elem_t *elem, va_list args __attrib inline void asset_manager_collect_garbage(asset_manager_t *asset_manager) { + assert("Asset manager cannot be NULL" && asset_manager); + linked_list_remove_if(&asset_manager->assets, condition_is_asset_unused); } @@ -201,6 +207,8 @@ static inline int load_texture(asset_manager_t *asset_manager, asset_t *asset, a int asset_manager_load_asset(asset_manager_t *asset_manager, const char *asset_name, asset_type_t asset_type) { + assert("Asset manager cannot be NULL" && asset_manager); + // Check if asset has alread been loaded. asset_t *asset = linked_list_get_if(&asset_manager->assets, condition_is_asset_name, asset_name); if(!asset) @@ -248,6 +256,8 @@ int asset_manager_load_asset(asset_manager_t *asset_manager, const char *asset_n int asset_manager_let_go_asset(asset_manager_t *asset_manager, const char *asset_name) { + assert("Asset manager cannot be NULL" && asset_manager); + asset_t *asset = linked_list_get_if(&asset_manager->assets, condition_is_asset_name, asset_name); if(!asset) { @@ -261,6 +271,8 @@ int asset_manager_let_go_asset(asset_manager_t *asset_manager, const char *asset texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char *asset_name) { + assert("Asset manager cannot be NULL" && asset_manager); + asset_t *asset = linked_list_get_if(&asset_manager->assets, condition_is_asset_name, asset_name); if(!asset) { diff --git a/src/ecs.c b/src/ecs.c index a12a079..5fefcb1 100644 --- a/src/ecs.c +++ b/src/ecs.c @@ -94,7 +94,7 @@ inline component_t *get_component(entity_t *entity, component_type_t component_t component_t *component = linked_list_get_if(&entity->components, condition_is_component_type, component_type); if(!component) { - error_printf("Entity doesn't have componant of type : %d", component_type); + error_printf("Entity with id:%d doesn't have componant of type : %d", entity->id, component_type); return NULL; } @@ -138,6 +138,8 @@ inline void destroy_entity(entity_t *entity) inline void entity_manager_init(entity_manager_t *entity_manager) { + assert("Entity manager cannot be NULL" && entity_manager); + linked_list_init(&entity_manager->entities, sizeof(entity_t), (deleter_t)destroy_entity); debug_printf("Initialized entity manager."); @@ -145,6 +147,8 @@ inline void entity_manager_init(entity_manager_t *entity_manager) inline void entity_manager_add_entity(entity_manager_t *entity_manager, entity_t *entity) { + assert("Entity manager cannot be NULL" && entity_manager); + linked_list_push_back(&entity_manager->entities, entity); debug_printf("Added entity %d to entity manager.", entity->id); @@ -160,6 +164,8 @@ static inline int action_update_entity(elem_t *elem, va_list args __attribute__( inline void entity_manager_update(entity_manager_t *entity_manager) { + assert("Entity manager cannot be NULL" && entity_manager); + linked_list_for_each(&entity_manager->entities, action_update_entity); } @@ -172,6 +178,8 @@ static inline int action_draw_entity(elem_t *elem, va_list args __attribute__((u inline int entity_manager_draw(entity_manager_t *entity_manager) { + assert("Entity manager cannot be NULL" && entity_manager); + return linked_list_for_each(&entity_manager->entities, action_draw_entity); } @@ -184,11 +192,15 @@ static inline bool condition_is_entity_name(elem_t *elem, va_list args) inline void entity_manager_remove_entity(entity_manager_t *entity_manager, unsigned int id) { + assert("Entity manager cannot be NULL" && entity_manager); + linked_list_remove_if(&entity_manager->entities, condition_is_entity_name, id); } inline void entity_manager_exit(entity_manager_t *entity_manager) { + assert("Entity manager cannot be NULL" && entity_manager); + linked_list_clear(&entity_manager->entities); debug_printf("Exited entity manager."); diff --git a/src/headers/errors.h b/src/headers/errors.h index 2e069a9..1ad75d0 100644 --- a/src/headers/errors.h +++ b/src/headers/errors.h @@ -3,7 +3,7 @@ #include #include -#include +#include #ifndef DEBUG #define DEBUG 0 @@ -12,8 +12,7 @@ #if DEBUG > 0 #define debug_printf(...) \ do { \ - fprintf(stderr, "\033[33mINFO\033[m: %s:%d:%s(): ", __FILE__, __LINE__, __func__); \ - fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\033[33mINFO\033[m: " __VA_ARGS__); \ fputc('\n', stderr); \ } while (0) #else @@ -22,8 +21,7 @@ #define warning_printf(...) \ do { \ - fprintf(stderr, "\033[35mWARNING\033[m: %s:%d:%s(): ", __FILE__, __LINE__, __func__); \ - fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\033[35mWARNING\033[m: " __VA_ARGS__); \ fputc('\n', stderr); \ } while (0) diff --git a/src/linked_list.c b/src/linked_list.c index dcc9b6e..ee161f7 100644 --- a/src/linked_list.c +++ b/src/linked_list.c @@ -5,6 +5,8 @@ elem_t *elem_create(const linked_list_t *linked_list) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *elem; elem = malloc(sizeof(elem_t)); if(!elem) @@ -26,7 +28,7 @@ elem_t *elem_create(const linked_list_t *linked_list) inline void destroy_elem(elem_t *elem, const deleter_t elem_deleter) { - if(!elem) return; + if(!elem) return; // Not fatal if(elem_deleter) elem_deleter(elem->data); @@ -38,6 +40,8 @@ inline void destroy_elem(elem_t *elem, const deleter_t elem_deleter) void linked_list_init(linked_list_t *linked_list, const size_t data_size, const deleter_t elem_deleter) { + assert("Linked list cannot be NULL" && linked_list); + linked_list->first = NULL; linked_list->last = NULL; linked_list->size = 0; @@ -48,7 +52,9 @@ void linked_list_init(linked_list_t *linked_list, const size_t data_size, const void linked_list_push_back_elem(linked_list_t *linked_list, elem_t *elem) { - if(!elem) return; + assert("Linked list cannot be NULL" && linked_list); + + if(!elem) return; // Not fatal elem->prev = linked_list->last; elem->next = NULL; @@ -65,7 +71,9 @@ void linked_list_push_back_elem(linked_list_t *linked_list, elem_t *elem) void linked_list_push_front_elem(linked_list_t *linked_list, elem_t *elem) { - if(!elem) return; + assert("Linked list cannot be NULL" && linked_list); + + if(!elem) return; // Not fatal elem->next = linked_list->first; elem->prev = NULL; @@ -82,6 +90,8 @@ void linked_list_push_front_elem(linked_list_t *linked_list, elem_t *elem) void linked_list_push_back(linked_list_t *linked_list, void *data) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = malloc(sizeof(elem_t)); if(!tmp) { @@ -95,6 +105,8 @@ void linked_list_push_back(linked_list_t *linked_list, void *data) void linked_list_push_front(linked_list_t *linked_list, void *data) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = malloc(sizeof(elem_t)); if(!tmp) { @@ -108,6 +120,8 @@ void linked_list_push_front(linked_list_t *linked_list, void *data) void linked_list_pop_back(linked_list_t *linked_list) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = linked_list->last; if(!tmp) return; @@ -125,6 +139,8 @@ void linked_list_pop_back(linked_list_t *linked_list) void linked_list_pop_front(linked_list_t *linked_list) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = linked_list->first; if(!tmp) return; @@ -142,6 +158,8 @@ void linked_list_pop_front(linked_list_t *linked_list) void linked_list_clear(linked_list_t *linked_list) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *actual_elem = linked_list->first; elem_t *tmp; @@ -162,16 +180,22 @@ void linked_list_clear(linked_list_t *linked_list) inline bool linked_list_is_empty(const linked_list_t *linked_list) { + assert("Linked list cannot be NULL" && linked_list); + return !linked_list->first; } inline bool linked_list_is_in_bound(const linked_list_t *linked_list, size_t index) { + assert("Linked list cannot be NULL" && linked_list); + return index < linked_list->size; } elem_t *linked_list_get_elem(const linked_list_t *linked_list, size_t index) { + assert("Linked list cannot be NULL" && linked_list); + if(!linked_list_is_in_bound(linked_list, index)) return NULL; if(index == 0) @@ -192,6 +216,8 @@ elem_t *linked_list_get_elem(const linked_list_t *linked_list, size_t index) void *linked_list_get(const linked_list_t *linked_list, size_t index) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = linked_list_get_elem(linked_list, index); if(!tmp) { @@ -203,7 +229,9 @@ void *linked_list_get(const linked_list_t *linked_list, size_t index) void linked_list_insert_elem(linked_list_t *linked_list, elem_t *elem, size_t index) { - if(!elem) return; + assert("Linked list cannot be NULL" && linked_list); + + if(!elem) return; // Not fatal if(!linked_list_is_in_bound(linked_list, index)) return; if(index == 0) @@ -231,6 +259,8 @@ void linked_list_insert_elem(linked_list_t *linked_list, elem_t *elem, size_t in void linked_list_insert(linked_list_t *linked_list, void *data, size_t index) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = malloc(sizeof(elem_t)); if(!tmp) { @@ -244,6 +274,8 @@ void linked_list_insert(linked_list_t *linked_list, void *data, size_t index) void linked_list_remove_elem(linked_list_t *linked_list, elem_t *elem) { + assert("Linked list cannot be NULL" && linked_list); + if(!elem) return; if(elem == linked_list->first) @@ -270,13 +302,16 @@ void linked_list_remove_elem(linked_list_t *linked_list, elem_t *elem) void linked_list_remove(linked_list_t *linked_list, size_t index) { + assert("Linked list cannot be NULL" && linked_list); + elem_t *tmp = linked_list_get_elem(linked_list, index); if(tmp) linked_list_remove_elem(linked_list, tmp); } elem_t *linked_list_get_elem_if(const linked_list_t *linked_list, const condition_t condition, ...) { - if(!condition) return NULL; + assert("Linked list cannot be NULL" && linked_list); + assert("Condition cannot be NULL" && condition); va_list args; va_start(args, condition); @@ -311,7 +346,8 @@ elem_t *linked_list_get_elem_if(const linked_list_t *linked_list, const conditio void *linked_list_get_if(const linked_list_t *linked_list, const condition_t condition, ...) { - if(!condition) return NULL; + assert("Linked list cannot be NULL" && linked_list); + assert("Condition cannot be NULL" && condition); va_list args; va_start(args, condition); @@ -346,11 +382,8 @@ void *linked_list_get_if(const linked_list_t *linked_list, const condition_t con void linked_list_remove_if(linked_list_t *linked_list, const condition_t condition, ...) { - if(!condition) - { - error_printf("Condition cannot be NULL."); - return; - } + assert("Linked list cannot be NULL" && linked_list); + assert("Condition cannot be NULL" && condition); va_list args; va_start(args, condition); @@ -380,11 +413,8 @@ void linked_list_remove_if(linked_list_t *linked_list, const condition_t conditi int linked_list_for_each(const linked_list_t *linked_list, const action_t action, ...) { - if(!action) - { - error_printf("Action cannot be NULL."); - return EXIT_FAILURE; - } + assert("Linked list cannot be NULL" && linked_list); + assert("Action cannot be NULL" && action); va_list args; va_start(args, action);