common: re-define status codes to be compatible with b_result
This commit is contained in:
@@ -3,24 +3,32 @@
|
|||||||
|
|
||||||
#include <ivy/misc.h>
|
#include <ivy/misc.h>
|
||||||
|
|
||||||
|
#define IVY_ERROR_VENDOR (ivy_error_vendor())
|
||||||
|
|
||||||
enum b_status;
|
enum b_status;
|
||||||
|
|
||||||
|
struct b_error_vendor;
|
||||||
|
|
||||||
enum ivy_status {
|
enum ivy_status {
|
||||||
IVY_OK = 0,
|
IVY_OK = 0,
|
||||||
IVY_ERR_EOF = -1,
|
IVY_ERR_EOF,
|
||||||
IVY_ERR_IO_FAILURE = -2,
|
IVY_ERR_IO_FAILURE,
|
||||||
IVY_ERR_BAD_SYNTAX = -3,
|
IVY_ERR_BAD_SYNTAX,
|
||||||
IVY_ERR_NO_MEMORY = -4,
|
IVY_ERR_NO_MEMORY,
|
||||||
IVY_ERR_NOT_SUPPORTED = -5,
|
IVY_ERR_NOT_SUPPORTED,
|
||||||
IVY_ERR_INTERNAL_FAILURE = -6,
|
IVY_ERR_INTERNAL_FAILURE,
|
||||||
IVY_ERR_BAD_STATE = -7,
|
IVY_ERR_BAD_STATE,
|
||||||
IVY_ERR_INVALID_VALUE = -8,
|
IVY_ERR_INVALID_VALUE,
|
||||||
IVY_ERR_NO_ENTRY = -9,
|
IVY_ERR_NO_ENTRY,
|
||||||
IVY_ERR_NAME_EXISTS = -10,
|
IVY_ERR_NAME_EXISTS,
|
||||||
IVY_ERR_BAD_FORMAT = -11,
|
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 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_b_status(enum b_status status);
|
||||||
IVY_API enum ivy_status ivy_status_from_errno(int err);
|
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 <errno.h>
|
||||||
#include <ivy/status.h>
|
#include <ivy/status.h>
|
||||||
|
|
||||||
#define ENUM_STR(x) \
|
static const b_error_definition error_defs[] = {
|
||||||
case x: \
|
B_ERROR_DEFINITION(IVY_OK, "OK", "Success"),
|
||||||
return #x
|
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)
|
const char *ivy_status_to_string(enum ivy_status status)
|
||||||
{
|
{
|
||||||
switch (status) {
|
return error_defs[status].err_message;
|
||||||
ENUM_STR(IVY_OK);
|
}
|
||||||
ENUM_STR(IVY_ERR_EOF);
|
|
||||||
ENUM_STR(IVY_ERR_IO_FAILURE);
|
const struct b_error_vendor *ivy_error_vendor(void)
|
||||||
ENUM_STR(IVY_ERR_BAD_SYNTAX);
|
{
|
||||||
ENUM_STR(IVY_ERR_NO_MEMORY);
|
return &error_vendor;
|
||||||
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 "";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ENUM_CONVERT(from, to) \
|
#define ENUM_CONVERT(from, to) \
|
||||||
|
|||||||
Reference in New Issue
Block a user