libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
result.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <promeki/pair.h>
14#include <promeki/error.h>
15
16PROMEKI_NAMESPACE_BEGIN
17
33template <typename T> using Result = Pair<T, Error>;
34
41template <typename T> Result<T> makeResult(T value) {
42 return Result<T>(std::move(value), Error::Ok);
43}
44
51template <typename T> Result<T> makeError(Error err) {
52 return Result<T>(T{}, std::move(err));
53}
54
61template <typename T> const T &value(const Result<T> &r) {
62 return r.first();
63}
64
71template <typename T> const Error &error(const Result<T> &r) {
72 return r.second();
73}
74
81template <typename T> bool isOk(const Result<T> &r) {
82 return r.second().isOk();
83}
84
91template <typename T> bool isError(const Result<T> &r) {
92 return r.second().isError();
93}
94
95PROMEKI_NAMESPACE_END
96
97#endif // PROMEKI_ENABLE_CORE