#ifndef TYPES_HPP #define TYPES_HPP #include #include #ifdef __cplusplus extern "C" { #endif /// Mutable byte buffer. typedef struct Bytes { uint8_t* data; size_t size; } Bytes; /// Immutable byte buffer. typedef struct ConstBytes { const uint8_t* data; size_t size; } ConstBytes; typedef enum StatusCode { StatusCode_Ok = 0, StatusCode_DynError = 1, StatusCode_InvalidInput = 2, StatusCode_OutOfMemory = 3, } StatusCode; static bool status_code_is_ok(const StatusCode code) { return code == StatusCode_Ok; } static bool status_code_is_error(const StatusCode code) { return !status_code_is_ok(code); } /// A status code with an optional human-readable description. typedef struct Status { StatusCode code; const char* message; } Status; static Status status_from_code(const StatusCode code) { return Status { code, NULL }; } static Status status_ok() { return status_from_code(StatusCode_Ok); } static bool status_is_ok(const Status status) { return status_code_is_ok(status.code); } static bool status_is_error(const Status status) { return status_code_is_error(status.code); } #ifdef __cplusplus } #endif #endif // TYPES_HPP