aboutsummaryrefslogtreecommitdiff
path: root/Types.h
diff options
context:
space:
mode:
Diffstat (limited to 'Types.h')
-rw-r--r--Types.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/Types.h b/Types.h
index 5801d93..f12a52e 100644
--- a/Types.h
+++ b/Types.h
@@ -15,15 +15,53 @@ typedef uint_fast64_t u64;
typedef size_t usize;
typedef enum Result {
+ /* Generic */
R_Ok = 0,
R_Err,
- R_Invalid,
+ R_NotImplemented,
+ /* Values */
R_Uninitialized,
+ R_InvalidValue,
R_OutOfBounds,
+ /* Functions */
+ R_InvalidArgument,
+ R_NullArgument,
+ /* Memory */
+ R_OutOfMemory,
+ /* Resources */
+ R_NotFound,
+ R_PermissionDenied,
+ R_Unreachable,
+ R_Unavailable,
+ /* Other */
R_PRIVATE
} Result;
+#if defined(__has_warning)
+# if __has_warning("-Wc99-designator")
+# pragma clang diagnostic ignored "-Wc99-designator"
+# endif
+#endif
+
+const static char* Result_TO_STR[R_PRIVATE+1] = {
+ [R_Ok] = "Ok",
+ [R_Err] = "Error",
+ [R_NotImplemented] = "Not implemented",
+ [R_Uninitialized] = "Uninitialized",
+ [R_InvalidValue] = "Invalid value",
+ [R_OutOfBounds] = "Out of bounds",
+ [R_InvalidArgument] = "Invalid argument",
+ [R_NullArgument] = "NULL argument",
+ [R_OutOfMemory] = "Out of memory",
+ [R_NotFound] = "Not found",
+ [R_PermissionDenied] = "Permission denied",
+ [R_Unreachable] = "Not reachable",
+ [R_Unavailable] = "Not available",
+ [R_PRIVATE] = "Unknown",
+};
+
#define RETURN_NOTOK(x) { Result r = x; if (R_Ok != r) return r; }
+#define PRINT_NOTOK(x) { Result r = x; if (R_Ok != r) fprintf(stderr, "%s:%d %s() Error: %s (%d)\n", __FILE__, __LINE__, __func__, Result_TO_STR[r], r); }
#define B(x) ((x) * 8)
#define KiB(x) ((x) * 1024)