diff --git a/common/include/ivy/status.h b/common/include/ivy/status.h index 810feb6..b2ebc34 100644 --- a/common/include/ivy/status.h +++ b/common/include/ivy/status.h @@ -3,6 +3,8 @@ #include +enum b_status; + enum ivy_status { IVY_OK = 0, IVY_ERR_EOF = -1, @@ -13,8 +15,11 @@ enum ivy_status { 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_API const char *ivy_status_to_string(enum ivy_status status); +IVY_API enum ivy_status ivy_status_from_b_status(enum b_status status); #endif diff --git a/common/status.c b/common/status.c index a4d8fd7..6ad2db4 100644 --- a/common/status.c +++ b/common/status.c @@ -1,3 +1,4 @@ +#include #include #define ENUM_STR(x) \ @@ -18,3 +19,18 @@ const char *ivy_status_to_string(enum ivy_status status) return ""; } } + +#define ENUM_CONVERT(from, to) \ + case (from): \ + return (to) + +enum ivy_status ivy_status_from_b_status(enum b_status status) +{ + switch (status) { + ENUM_CONVERT(B_SUCCESS, IVY_OK); + ENUM_CONVERT(B_ERR_NAME_EXISTS, IVY_ERR_NAME_EXISTS); + ENUM_CONVERT(B_ERR_NO_MEMORY, IVY_ERR_NO_MEMORY); + default: + return IVY_ERR_INTERNAL_FAILURE; + } +}