change error system & function signatures
Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
parent
1367373819
commit
e1bf97704a
28 changed files with 633 additions and 651 deletions
|
|
@ -1,22 +1,71 @@
|
|||
#include "ikarus/errors.h"
|
||||
|
||||
#include "cppbase/functional.hpp"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <ranges>
|
||||
|
||||
#include <fmt/format.h>
|
||||
|
||||
char const * get_error_info_name(IkarusErrorInfo info) {
|
||||
switch (info) {
|
||||
case IkarusErrorInfo_Source_None: return "IkarusErrorInfo_Source_None";
|
||||
case IkarusErrorInfo_Source_Client: return "IkarusErrorInfo_Source_Client";
|
||||
case IkarusErrorInfo_Source_SubSystem: return "IkarusErrorInfo_Source_SubSystem";
|
||||
case IkarusErrorInfo_Source_LibIkarus: return "IkarusErrorInfo_Source_LibIkarus";
|
||||
case IkarusErrorInfo_Source_Unknown: return "IkarusErrorInfo_Source_Unknown";
|
||||
case IkarusErrorInfo_Type_None: return "IkarusErrorInfo_Type_None";
|
||||
case IkarusErrorInfo_Type_Client_Misuse: return "IkarusErrorInfo_Type_Client_Misuse";
|
||||
case IkarusErrorInfo_Type_Client_Input: return "IkarusErrorInfo_Type_Client_Input";
|
||||
case IkarusErrorInfo_Type_SubSystem_Dependency: return "IkarusErrorInfo_Type_SubSystem_Dependency";
|
||||
case IkarusErrorInfo_Type_SubSystem_Database: return "IkarusErrorInfo_Type_SubSystem_Database";
|
||||
case IkarusErrorInfo_Type_SubSystem_Filesystem: return "IkarusErrorInfo_Type_SubSystem_Filesystem";
|
||||
case IkarusErrorInfo_Type_LibIkarus_InvalidState: return "IkarusErrorInfo_Type_LibIkarus_InvalidState";
|
||||
case IkarusErrorInfo_Type_LibIkarus_CannotPerformOperation: return "IkarusErrorInfo_Type_LibIkarus_CannotPerformOperation";
|
||||
case IkarusErrorInfo_Type_LibIkarus_Timeout: return "IkarusErrorInfo_Type_LibIkarus_Timeout";
|
||||
case IkarusErrorInfo_Type_Unknown: return "IkarusErrorInfo_Type_Unknown";
|
||||
default: return "Unknown";
|
||||
case IkarusErrorInfo_None: return "None";
|
||||
case IkarusErrorInfo_Client: return "Client";
|
||||
case IkarusErrorInfo_Dependency: return "Dependency";
|
||||
case IkarusErrorInfo_Filesystem: return "Filesystem";
|
||||
case IkarusErrorInfo_Database: return "Database";
|
||||
case IkarusErrorInfo_OS: return "OS";
|
||||
case IkarusErrorInfo_LibIkarus: return "libikarus";
|
||||
|
||||
case IkarusErrorInfo_Client_Misuse: return "Misuse";
|
||||
case IkarusErrorInfo_Client_InvalidInput: return "InvalidInput";
|
||||
case IkarusErrorInfo_Client_InvalidFormat: return "InvalidFormat";
|
||||
case IkarusErrorInfo_Client_ConstraintViolated: return "ConstraintViolated";
|
||||
|
||||
case IkarusErrorInfo_Filesystem_NotFound: return "NotFound";
|
||||
case IkarusErrorInfo_Filesystem_AlreadyExists: return "AlreadyExists";
|
||||
case IkarusErrorInfo_Filesystem_MissingPermissions: return "MissingPermissions";
|
||||
case IkarusErrorInfo_Filesystem_InsufficientSpace: return "InsufficientSpace";
|
||||
case IkarusErrorInfo_Filesystem_InvalidPath: return "InvalidPath";
|
||||
|
||||
case IkarusErrorInfo_Database_ConnectionFailed: return "ConnectionFailed";
|
||||
case IkarusErrorInfo_Database_QueryFailed: return "QueryFailed";
|
||||
case IkarusErrorInfo_Database_MigrationFailed: return "MigrationFailed";
|
||||
case IkarusErrorInfo_Database_InvalidState: return "InvalidState";
|
||||
|
||||
case IkarusErrorInfo_OS_SystemCallFailed: return "SystemCallFailed";
|
||||
case IkarusErrorInfo_OS_InvalidReturnValue: return "InvalidReturnValue";
|
||||
case IkarusErrorInfo_OS_InsufficientMemory: return "InsufficientMemory";
|
||||
|
||||
case IkarusErrorInfo_LibIkarus_InvalidState: return "InvalidState";
|
||||
case IkarusErrorInfo_LibIkarus_Timeout: return "Timeout";
|
||||
|
||||
default: return "Invalid";
|
||||
}
|
||||
}
|
||||
|
||||
bool ikarus_error_data_is_success(IkarusErrorData const * data) {
|
||||
return data->infos[0] == IkarusErrorInfo_None;
|
||||
}
|
||||
|
||||
bool ikarus_error_data_is_error(IkarusErrorData const * data) {
|
||||
return data->infos[0] != IkarusErrorInfo_None;
|
||||
}
|
||||
|
||||
char const * ikarus_error_data_pretty_format(IkarusErrorData const * data) {
|
||||
if (ikarus_error_data_is_success(data)) {
|
||||
return "Success";
|
||||
}
|
||||
|
||||
auto const formatted = fmt::format(
|
||||
"{} - {}",
|
||||
fmt::join(
|
||||
data->infos | std::views::take_while(cppbase::pred_ne(IkarusErrorInfo_None)) | std::views::transform(get_error_info_name),
|
||||
"->"
|
||||
),
|
||||
data->message
|
||||
);
|
||||
|
||||
return strndup(formatted.data(), formatted.size());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue