72 lines
2.3 KiB
C++
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;
|
|
}
|