Cleanup the code and unified everything (except the macros) under the akerr_ namespace

This commit is contained in:
2026-01-10 10:20:35 -05:00
parent 6821752ec7
commit c526bb1ba3
7 changed files with 166 additions and 166 deletions

View File

@@ -1,22 +1,22 @@
#include "akerror.h"
#if defined(AKERROR_USE_STDLIB) && AKERROR_USE_STDLIB == 1
#if defined(AKERR_USE_STDLIB) && AKERR_USE_STDLIB == 1
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#endif // AKERROR_USE_STDLIB
#endif // AKERR_USE_STDLIB
ErrorContext __error_last_ditch;
ErrorContext *__error_last_ignored;
ErrorUnhandledErrorHandler error_handler_unhandled_error;
ErrorLogFunction error_log_method = NULL;
akerr_ErrorContext __akerr_last_ditch;
akerr_ErrorContext *__akerr_last_ignored;
akerr_ErrorUnhandledErrorHandler akerr_handler_unhandled_error;
akerr_ErrorLogFunction akerr_log_method = NULL;
char __ERROR_NAMES[MAX_ERR_VALUE+1][MAX_ERROR_NAME_LENGTH];
char __AKERR_ERROR_NAMES[AKERR_MAX_ERR_VALUE+1][AKERR_MAX_ERROR_NAME_LENGTH];
ErrorContext ARRAY_ERROR[MAX_ARRAY_ERROR];
akerr_ErrorContext AKERR_ARRAY_ERROR[AKERR_MAX_ARRAY_ERROR];
void error_default_logger(const char *fmt, ...)
void akerr_default_logger(const char *fmt, ...)
{
#if defined(AKERROR_USE_STDLIB) && AKERROR_USE_STDLIB == 1
#if defined(AKERR_USE_STDLIB) && AKERR_USE_STDLIB == 1
va_list ap;
va_start(ap, fmt);
@@ -27,44 +27,44 @@ void error_default_logger(const char *fmt, ...)
#endif
}
void error_init()
void akerr_init()
{
static int inited = 0;
if ( inited == 0 ) {
for (int i = 0; i < MAX_ARRAY_ERROR; i++ ) {
memset((void *)&ARRAY_ERROR[i], 0x00, sizeof(ErrorContext));
ARRAY_ERROR[i].arrayid = i;
ARRAY_ERROR[i].stacktracebufptr = (char *)&ARRAY_ERROR[i].stacktracebuf;
for (int i = 0; i < AKERR_MAX_ARRAY_ERROR; i++ ) {
memset((void *)&AKERR_ARRAY_ERROR[i], 0x00, sizeof(akerr_ErrorContext));
AKERR_ARRAY_ERROR[i].arrayid = i;
AKERR_ARRAY_ERROR[i].stacktracebufptr = (char *)&AKERR_ARRAY_ERROR[i].stacktracebuf;
}
__error_last_ignored = NULL;
memset((void *)&__error_last_ditch, 0x00, sizeof(ErrorContext));
__error_last_ditch.stacktracebufptr = (char *)&__error_last_ditch.stacktracebuf;
if ( error_log_method == NULL ) {
error_log_method = &error_default_logger;
__akerr_last_ignored = NULL;
memset((void *)&__akerr_last_ditch, 0x00, sizeof(akerr_ErrorContext));
__akerr_last_ditch.stacktracebufptr = (char *)&__akerr_last_ditch.stacktracebuf;
if ( akerr_log_method == NULL ) {
akerr_log_method = &akerr_default_logger;
}
error_handler_unhandled_error = &error_default_handler_unhandled_error;
memset((void *)&__ERROR_NAMES[0], 0x00, ((MAX_ERR_VALUE+1) * MAX_ERROR_NAME_LENGTH));
akerr_handler_unhandled_error = &akerr_default_handler_unhandled_error;
memset((void *)&__AKERR_ERROR_NAMES[0], 0x00, ((AKERR_MAX_ERR_VALUE+1) * AKERR_MAX_ERROR_NAME_LENGTH));
error_name_for_status(ERR_NULLPOINTER, "Null Pointer Error");
error_name_for_status(ERR_OUTOFBOUNDS, "Out Of Bounds Error");
error_name_for_status(ERR_API, "API Error");
error_name_for_status(ERR_ATTRIBUTE, "Attribute Error");
error_name_for_status(ERR_TYPE, "Type Error");
error_name_for_status(ERR_KEY, "Key Error");
error_name_for_status(ERR_HEAP, "Heap Error");
error_name_for_status(ERR_INDEX, "Index Error");
error_name_for_status(ERR_FORMAT, "Format Error");
error_name_for_status(ERR_IO, "Input Output Error");
error_name_for_status(ERR_REGISTRY, "Registry Error");
error_name_for_status(ERR_VALUE, "Value Error");
error_name_for_status(ERR_BEHAVIOR, "Behavior Error");
error_name_for_status(ERR_RELATIONSHIP, "Relationship Error");
akerr_name_for_status(AKERR_NULLPOINTER, "Null Pointer Error");
akerr_name_for_status(AKERR_OUTOFBOUNDS, "Out Of Bounds Error");
akerr_name_for_status(AKERR_API, "API Error");
akerr_name_for_status(AKERR_ATTRIBUTE, "Attribute Error");
akerr_name_for_status(AKERR_TYPE, "Type Error");
akerr_name_for_status(AKERR_KEY, "Key Error");
akerr_name_for_status(AKERR_HEAP, "Heap Error");
akerr_name_for_status(AKERR_INDEX, "Index Error");
akerr_name_for_status(AKERR_FORMAT, "Format Error");
akerr_name_for_status(AKERR_IO, "Input Output Error");
akerr_name_for_status(AKERR_REGISTRY, "Registry Error");
akerr_name_for_status(AKERR_VALUE, "Value Error");
akerr_name_for_status(AKERR_BEHAVIOR, "Behavior Error");
akerr_name_for_status(AKERR_RELATIONSHIP, "Relationship Error");
inited = 1;
}
}
void error_default_handler_unhandled_error(ErrorContext *errctx)
void akerr_default_handler_unhandled_error(akerr_ErrorContext *errctx)
{
if ( errctx == NULL ) {
exit(1);
@@ -72,29 +72,29 @@ void error_default_handler_unhandled_error(ErrorContext *errctx)
exit(errctx->status);
}
ErrorContext *array_next_error()
akerr_ErrorContext *akerr_next_error()
{
for (int i = 0; i < MAX_ARRAY_ERROR; i++ ) {
if ( ARRAY_ERROR[i].refcount == 0 ) {
return &ARRAY_ERROR[i];
for (int i = 0; i < AKERR_MAX_ARRAY_ERROR; i++ ) {
if ( AKERR_ARRAY_ERROR[i].refcount == 0 ) {
return &AKERR_ARRAY_ERROR[i];
}
}
return (ErrorContext *)NULL;
return (akerr_ErrorContext *)NULL;
}
ErrorContext *array_release_error(ErrorContext *err)
akerr_ErrorContext *akerr_release_error(akerr_ErrorContext *err)
{
int oldid = 0;
if ( err == NULL ) {
ErrorContext *errctx = &__error_last_ditch;
FAIL_RETURN(errctx, ERR_NULLPOINTER, "array_release_error got NULL context pointer");
akerr_ErrorContext *errctx = &__akerr_last_ditch;
FAIL_RETURN(errctx, AKERR_NULLPOINTER, "akerr_release_error got NULL context pointer");
}
if ( err->refcount > 0 ) {
err->refcount -= 1;
}
if ( err->refcount == 0 ) {
oldid = err->arrayid;
memset(err, 0x00, sizeof(ErrorContext));
memset(err, 0x00, sizeof(akerr_ErrorContext));
err->stacktracebufptr = (char *)&err->stacktracebuf;
err->arrayid = oldid;
return NULL;
@@ -105,13 +105,13 @@ ErrorContext *array_release_error(ErrorContext *err)
// returns or sets the name for the given status.
// Call with name = NULL to retrieve a status.
char *error_name_for_status(int status, char *name)
char *akerr_name_for_status(int status, char *name)
{
if ( status > MAX_ERR_VALUE ) {
if ( status > AKERR_MAX_ERR_VALUE ) {
return "Unknown Error";
}
if ( name != NULL ) {
strncpy((char *)&__ERROR_NAMES[status], name, MAX_ERROR_NAME_LENGTH);
strncpy((char *)&__AKERR_ERROR_NAMES[status], name, AKERR_MAX_ERROR_NAME_LENGTH);
}
return (char *)&__ERROR_NAMES[status];
return (char *)&__AKERR_ERROR_NAMES[status];
}