@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <expected>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include <modulus.hpp>
|
||||
|
||||
namespace vamp_zero {
|
||||
|
||||
enum class error_code : std::int32_t {
|
||||
OK = 0,
|
||||
INVALID_ARGUMENT = 1,
|
||||
NOT_FOUND = 2,
|
||||
UNAVAILABLE = 3,
|
||||
PERSISTENCE = 4,
|
||||
CONFLICT = 5,
|
||||
INTERNAL = 6,
|
||||
};
|
||||
|
||||
auto make_error(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> modulus::error;
|
||||
auto fail_void(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected<void, modulus::error>;
|
||||
|
||||
template <typename VALUE>
|
||||
auto fail(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected<VALUE, modulus::error>;
|
||||
|
||||
}
|
||||
|
||||
template <typename VALUE>
|
||||
auto vamp_zero::fail(vamp_zero::error_code code, std::string message, modulus::source_location location) -> std::expected<VALUE, modulus::error> {
|
||||
return modulus::fail<VALUE>(vamp_zero::make_error(code, std::move(message), location));
|
||||
}
|
||||
Reference in New Issue
Block a user