libikarus/src/ikarus/errors.cpp
2025-01-03 13:18:46 +01:00

72 lines
2.3 KiB
C++

#include "ikarus/errors.h"
#include <cstddef>
#include <ikarus/errors.hpp>
void safe_strcpy(
std::string_view const src,
char * dest,
std::size_t const dest_size
) {
int i = 0;
for (; i < dest_size - 1; ++i) {
if (src[i] == '\0') {
break;
}
dest[i] = src[i];
}
dest[i] = '\0';
}
char const * ikarus_get_error_info_name(IkarusErrorInfo info) {
switch (info) {
case IkarusErrorInfo_None: return "None";
case IkarusErrorInfo_Client_Misuse: return "Client::Misuse";
case IkarusErrorInfo_Client_InvalidInput: return "Client::InvalidInput";
case IkarusErrorInfo_Client_NonExistent: return "Client::NonExistent";
case IkarusErrorInfo_Client_InvalidFormat: return "Client::InvalidFormat";
case IkarusErrorInfo_Client_ConstraintViolated:
return "Client::ConstraintViolated";
case IkarusErrorInfo_Filesystem_NotFound: return "Filesystem::NotFound";
case IkarusErrorInfo_Filesystem_AlreadyExists:
return "Filesystem::AlreadyExists";
case IkarusErrorInfo_Filesystem_MissingPermissions:
return "Filesystem::MissingPermissions";
case IkarusErrorInfo_Filesystem_InsufficientSpace:
return "Filesystem::InsufficientSpace";
case IkarusErrorInfo_Filesystem_InvalidPath:
return "Filesystem::InvalidPath";
case IkarusErrorInfo_Database_ConnectionFailed:
return "Database::ConnectionFailed";
case IkarusErrorInfo_Database_QueryFailed: return "Database::QueryFailed";
case IkarusErrorInfo_Database_MigrationFailed:
return "Database::MigrationFailed";
case IkarusErrorInfo_Database_InvalidState: return "Database::InvalidState";
case IkarusErrorInfo_OS_SystemCallFailed: return "OS::SystemCallFailed";
case IkarusErrorInfo_OS_InvalidReturnValue: return "OS::InvalidReturnValue";
case IkarusErrorInfo_OS_InsufficientMemory: return "OS::InsufficientMemory";
case IkarusErrorInfo_LibIkarus_InvalidState:
return "LibIkarus::InvalidState";
case IkarusErrorInfo_LibIkarus_CannotPerformOperation:
return "LibIkarus::CannotPerformOperation";
case IkarusErrorInfo_LibIkarus_Timeout: return "LibIkarus::Timeout";
default: return "Invalid";
}
}
bool ikarus_error_data_is_success(IkarusErrorData const * data) {
return data && data->info == IkarusErrorInfo_None;
}
bool ikarus_error_data_is_error(IkarusErrorData const * data) {
return data && data->info != IkarusErrorInfo_None;
}