Dev Essential
Loading...
Searching...
No Matches
result_info_decl.h File Reference
#include <a_util/preprocessor/deprecated.h>
#include <cstdint>
#include <limits>
Include dependency graph for result_info_decl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  a_util::result::ResultInfo< T >
 
struct  a_util::result::ResultInfo< void >
 

Namespaces

namespace  a_util
 Serves as the root component, with common functionality documented in core functionality.
 
namespace  a_util::result
 Serves as component for functionality handling error and return types.
 

Macros

#define _MAKE_RESULT(_no, _label)
 

Functions

template<typename ResultType>
bool a_util::result::isOk (const ResultType &result)
 
template<typename ResultType>
bool a_util::result::isFailed (const ResultType &result)
 
template<typename ResultTypeLHS, typename ResultTypeRHS>
bool a_util::result::operator== (const ResultInfo< ResultTypeLHS > &lhs, const ResultInfo< ResultTypeRHS > &rhs)
 
template<typename ResultTypeLHS, typename ResultTypeRHS>
bool a_util::result::operator!= (const ResultInfo< ResultTypeLHS > &lhs, const ResultInfo< ResultTypeRHS > &rhs)
 
template<typename ResultTypeLHS, typename ResultTypeRHS>
bool a_util::result::operator< (const ResultInfo< ResultTypeLHS > &lhs, const ResultInfo< ResultTypeRHS > &rhs)
 
template<typename ResultTypeLHS, typename ResultTypeRHS>
bool a_util::result::operator> (const ResultInfo< ResultTypeLHS > &lhs, const ResultInfo< ResultTypeRHS > &rhs)
 
template<typename ResultTypeLHS, typename ResultTypeRHS>
bool a_util::result::operator<= (const ResultInfo< ResultTypeLHS > &lhs, const ResultInfo< ResultTypeRHS > &rhs)
 
template<typename ResultTypeLHS, typename ResultTypeRHS>
bool a_util::result::operator>= (const ResultInfo< ResultTypeLHS > &lhs, const ResultInfo< ResultTypeRHS > &rhs)
 

Detailed Description

Public API for ResultInfo type, functions and macros

Macro Definition Documentation

◆ _MAKE_RESULT

#define _MAKE_RESULT ( _no,
_label )
Value:
namespace { \
struct ResultType_##_label : public ::a_util::result::ResultInfo<ResultType_##_label> { \
static std::int32_t getCode() \
{ \
static_assert(std::is_same<decltype((_no)), std::int32_t>::value, \
#_no " is not in range of std::int32_t."); \
return _no; \
} \
static const char* getLabel() \
{ \
return #_label; \
} \
}; \
const ::a_util::result::ResultInfo<ResultType_##_label> _label = ResultType_##_label(); \
} /* ns anonymous */ \
static_assert(DEV_ESSENTIAL_INTERNAL_MAKE_RESULT_CHECK_NOT_ZERO(_no), \
"'0' is not allowed, because it is reserved for results indicating no error. " \
"Please use a_util::result::SUCCESS instead. To disable this check, define " \
"'DEV_ESSENTIAL_DISABLE_MAKE_RESULT_CHECK_RESERVED_ZERO'")
Definition result_info_decl.h:86
static std::int32_t getCode()
Definition result_info_impl.h:42
static const char * getLabel()
Definition result_info_impl.h:36

Create a result type and a constant instance of this type in an unnamed namespace

Parameters
[in]_noNumeric representation of the result type
[in]_labelStringified version for the result type