UraniumCompute 0.1.0
A GPU accelerated parallel task scheduler
ResultCode.h
1#pragma once
2#include <cassert>
3#include <cstdint>
4
5namespace UN
6{
10 enum class ResultCode : uint32_t
11 {
12 Success,
13 Fail,
14 Abort,
15 NotImplemented,
16 InvalidOperation,
17 InvalidArguments,
18 AccessDenied,
19 Timeout,
20 OutOfMemory
21 };
22
24 inline bool Succeeded(ResultCode result)
25 {
26 return result == ResultCode::Success;
27 }
28
30 inline bool Failed(ResultCode result)
31 {
32 return result != ResultCode::Success;
33 }
34
36 inline const char* ResultToString(ResultCode result)
37 {
38 switch (result)
39 {
40 // clang-format off
41 case ResultCode::Success: return "ResultCode::Success";
42 case ResultCode::Fail: return "ResultCode::Fail";
43 case ResultCode::Abort: return "ResultCode::Abort";
44 case ResultCode::NotImplemented: return "ResultCode::NotImplemented";
45 case ResultCode::InvalidArguments: return "ResultCode::InvalidArguments";
46 case ResultCode::InvalidOperation: return "ResultCode::InvalidOperation";
47 case ResultCode::AccessDenied: return "ResultCode::AccessDenied";
48 case ResultCode::Timeout: return "ResultCode::Timeout";
49 case ResultCode::OutOfMemory: return "ResultCode::OutOfMemory";
50 // clang-format on
51 default:
52 assert(false && "ResultCode was unknown");
53 return "ResultCode::<Unknown>";
54 }
55 }
56} // namespace UN