common: re-define status codes to be compatible with b_result
This commit is contained in:
@@ -3,24 +3,32 @@
|
||||
|
||||
#include <ivy/misc.h>
|
||||
|
||||
#define IVY_ERROR_VENDOR (ivy_error_vendor())
|
||||
|
||||
enum b_status;
|
||||
|
||||
struct b_error_vendor;
|
||||
|
||||
enum ivy_status {
|
||||
IVY_OK = 0,
|
||||
IVY_ERR_EOF = -1,
|
||||
IVY_ERR_IO_FAILURE = -2,
|
||||
IVY_ERR_BAD_SYNTAX = -3,
|
||||
IVY_ERR_NO_MEMORY = -4,
|
||||
IVY_ERR_NOT_SUPPORTED = -5,
|
||||
IVY_ERR_INTERNAL_FAILURE = -6,
|
||||
IVY_ERR_BAD_STATE = -7,
|
||||
IVY_ERR_INVALID_VALUE = -8,
|
||||
IVY_ERR_NO_ENTRY = -9,
|
||||
IVY_ERR_NAME_EXISTS = -10,
|
||||
IVY_ERR_BAD_FORMAT = -11,
|
||||
IVY_ERR_EOF,
|
||||
IVY_ERR_IO_FAILURE,
|
||||
IVY_ERR_BAD_SYNTAX,
|
||||
IVY_ERR_NO_MEMORY,
|
||||
IVY_ERR_NOT_SUPPORTED,
|
||||
IVY_ERR_INTERNAL_FAILURE,
|
||||
IVY_ERR_BAD_STATE,
|
||||
IVY_ERR_INVALID_VALUE,
|
||||
IVY_ERR_NO_ENTRY,
|
||||
IVY_ERR_NAME_EXISTS,
|
||||
IVY_ERR_BAD_FORMAT,
|
||||
|
||||
IVY_ERR_PARSE_FAILURE,
|
||||
IVY_ERR_CODEGEN_FAILURE,
|
||||
};
|
||||
|
||||
IVY_API const char *ivy_status_to_string(enum ivy_status status);
|
||||
IVY_API const struct b_error_vendor *ivy_error_vendor(void);
|
||||
IVY_API enum ivy_status ivy_status_from_b_status(enum b_status status);
|
||||
IVY_API enum ivy_status ivy_status_from_errno(int err);
|
||||
|
||||
|
||||
@@ -1,29 +1,47 @@
|
||||
#include <blue/core/status.h>
|
||||
#include <blue/core/error.h>
|
||||
#include <errno.h>
|
||||
#include <ivy/status.h>
|
||||
|
||||
#define ENUM_STR(x) \
|
||||
case x: \
|
||||
return #x
|
||||
static const b_error_definition error_defs[] = {
|
||||
B_ERROR_DEFINITION(IVY_OK, "OK", "Success"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_EOF, "EOF", "Unexpected end of file"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_IO_FAILURE, "IO_FAILURE", "I/O failure"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_BAD_SYNTAX, "BAD_SYNTAX", "Invalid syntax"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_NO_MEMORY, "NO_MEMORY", "Out of memory"),
|
||||
B_ERROR_DEFINITION(
|
||||
IVY_ERR_NOT_SUPPORTED, "NOT_SUPPORTED",
|
||||
"Operation not supported"),
|
||||
B_ERROR_DEFINITION(
|
||||
IVY_ERR_INTERNAL_FAILURE, "INTERNAL_FAILURE",
|
||||
"Internal failure"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_BAD_STATE, "BAD_STATE", "Bad state"),
|
||||
B_ERROR_DEFINITION(
|
||||
IVY_ERR_INVALID_VALUE, "INVALID_VALUE", "Invalid value"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_NO_ENTRY, "NO_ENTRY", "Name does not exist"),
|
||||
B_ERROR_DEFINITION(
|
||||
IVY_ERR_NAME_EXISTS, "NAME_EXISTS", "Name already exists"),
|
||||
B_ERROR_DEFINITION(IVY_ERR_BAD_FORMAT, "BAD_FORMAT", "Bad format"),
|
||||
B_ERROR_DEFINITION(
|
||||
IVY_ERR_PARSE_FAILURE, "PARSE_FAILURE", "Parse failure"),
|
||||
B_ERROR_DEFINITION(
|
||||
IVY_ERR_CODEGEN_FAILURE, "CODEGEN_FAILURE",
|
||||
"Code generation failure"),
|
||||
};
|
||||
|
||||
static const b_error_vendor error_vendor = {
|
||||
.v_name = "Ivy",
|
||||
.v_error_definitions = error_defs,
|
||||
.v_error_definitions_length = sizeof error_defs,
|
||||
};
|
||||
|
||||
const char *ivy_status_to_string(enum ivy_status status)
|
||||
{
|
||||
switch (status) {
|
||||
ENUM_STR(IVY_OK);
|
||||
ENUM_STR(IVY_ERR_EOF);
|
||||
ENUM_STR(IVY_ERR_IO_FAILURE);
|
||||
ENUM_STR(IVY_ERR_BAD_SYNTAX);
|
||||
ENUM_STR(IVY_ERR_NO_MEMORY);
|
||||
ENUM_STR(IVY_ERR_NOT_SUPPORTED);
|
||||
ENUM_STR(IVY_ERR_INTERNAL_FAILURE);
|
||||
ENUM_STR(IVY_ERR_BAD_STATE);
|
||||
ENUM_STR(IVY_ERR_INVALID_VALUE);
|
||||
ENUM_STR(IVY_ERR_NO_ENTRY);
|
||||
ENUM_STR(IVY_ERR_NAME_EXISTS);
|
||||
ENUM_STR(IVY_ERR_BAD_FORMAT);
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
return error_defs[status].err_message;
|
||||
}
|
||||
|
||||
const struct b_error_vendor *ivy_error_vendor(void)
|
||||
{
|
||||
return &error_vendor;
|
||||
}
|
||||
|
||||
#define ENUM_CONVERT(from, to) \
|
||||
|
||||
Reference in New Issue
Block a user