#include "ikarus/errors.h" #include #include 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; }