Apparatus
Version 1.23
ECS data-oriented workflow for Unreal Engine.
|
The Apparatus status reporting facility. More...
#include <cstddef>
#include "CoreMinimal.h"
#include "UObject/Class.h"
#include "More/type_traits"
#include "ApparatusRuntime.h"
Classes | |
struct | FCommonOutcome |
A common base class for all outcome types. More... | |
struct | FCommonHarshOutcome |
A common base class for all harsh outcome types. More... | |
struct | FCommonPoliteOutcome |
A common base class for all polite outcome types. More... | |
struct | THarshOutcome< PayloadT > |
Harsh outcome with no status but an optional payload. More... | |
struct | THarshOutcome< PayloadT * > |
Harsh outcome with a pointer-type outcome. More... | |
struct | THarshOutcome< void > |
A harsh outcome with no payload. More... | |
struct | TPoliteOutcome< PayloadT > |
Polite outcome with a status and an optional payload. More... | |
struct | TPoliteOutcome< PayloadT * > |
Polite outcome with a status and a pointer type result. More... | |
struct | TPoliteOutcome< void > |
Polite outcome with a status but no payload. More... | |
class | FApparatusStatus |
The main core-level Apparatus delegates. More... | |
class | FApparatusDelegates |
The main core-level Apparatus delegates. More... | |
Macros | |
#define | AssessCondition(Paradigm, Expr, Status) |
Make sure the check is passing or otherwise either return a status or raise an assertion failure. | |
#define | AssessConditionFormat(Paradigm, Expression, Status, Format, ...) |
Make sure the check is passing or otherwise either return a status or raise an assertion failure. | |
#define | EnsuredPayload(Outcome) |
Get the payload while ensuring the status of the corresponding outcome is OK(). | |
#define | EnsuredPayloadf(Outcome, Format, ...) |
Get the payload while ensuring the status is OK(). | |
#define | EnsureOK(Outcome) |
Ensure the outcome is OK(). | |
#define | VerifyOK(Outcome) |
Verify the outcome is OK(). | |
#define | Avoid(Paradigm, Expression) |
Avoid a certain event. | |
#define | AvoidFormat(Paradigm, Expression, Format, ...) |
Avoid a certain event. | |
#define | AvoidCondition(Paradigm, Expression) |
Avoid a certain state. | |
#define | AvoidConditionFormat(Paradigm, Expression, Format, ...) |
Avoid a certain state. | |
#define | AvoidError(Paradigm, Expression) |
Avoid an erroneous statement. | |
#define | AvoidErrorFormat(Paradigm, Expression, Format, ...) |
Avoid an erroneous statement with a formatting message. | |
#define | AvoidErrorCondition(Paradigm, Expression) |
Avoid an erroneous condition. | |
#define | AvoidErrorConditionFormat(Paradigm, Expression, Format, ...) |
Avoid an erroneous condition with a formatting message. | |
#define | AssessOK(Paradigm, Expression) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it. | |
#define | AssessFinalizeOK(Paradigm, Expression, Finalize) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it. | |
#define | AssessOKFormat(Paradigm, Expression, Format, ...) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it. | |
#define | AssessFinalizeOKf(Paradigm, Expression, Finalize, Format, ...) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it. | |
#define | AssessConditionOK(Paradigm, Expression) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it. | |
#define | AssessConditionOKf(Paradigm, Expression, Format, ...) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it. | |
#define | APPARATUS_STRINGIFY(symbol) #symbol |
Stringify a symbol. | |
#define | iAPPARATUS_REPORT_POSITIVE(Format, ...) |
#define | APPARATUS_REPORT(Status, Format, ...) |
Report a status with a formatted message. | |
#define | APPARATUS_REPEAT_REPORT(Status, Format, ...) |
Repeat the report got from a previously called function. | |
#define | APPARATUS_REPORT_SUCCESS(Format, ...) |
Report a success status with a formatted message. | |
Typedefs | |
template<EParadigm Paradigm, typename PayloadT = void> | |
using | TOutcome = typename std::conditional< std::is_void< PayloadT >::value, typename std::conditional< IsPolite(Paradigm), EApparatusStatus, THarshOutcome< void > >::type, typename std::conditional< IsPolite(Paradigm), TPoliteOutcome< PayloadT >, PayloadT >::type >::type |
A general Apparatus function/method outcome. | |
template<typename PayloadT = void> | |
using | TPortableOutcome = TOutcome< EParadigm::DefaultPortable, PayloadT > |
A portable Apparatus outcome used in virtual methods and other compatiblity layers. | |
template<EParadigm Paradigm, bool Condition, typename PayloadT = void> | |
using | TOutcomeIf = typename std::enable_if< Condition, TOutcome< Paradigm, PayloadT > >::type |
A general Apparatus function/method outcome available if a condition is a succeeding one. | |
template<EParadigm Paradigm, typename PayloadT = void> | |
using | TOutcomeIfUnsafe = TEnableIfUnsafe< Paradigm, TOutcome< Paradigm, PayloadT > > |
A general Apparatus function/method outcome available in an unsafe mode only. | |
template<EParadigm Paradigm, bool Condition, typename PayloadT = void> | |
using | TOutcomeIfUnsafeOr = TEnableIfUnsafeOr< Paradigm, Condition, TOutcome< Paradigm, PayloadT > > |
A general Apparatus function/method outcome available in an unsafe mode or under a specific condition. | |
Enumerations | |
enum class | EApparatusStatus : int8 { Noop = 0 , Success = 1 , Reused = 2 , NoItems = 3 , Deferred = 4 , Error = -1 , InvalidArgument = -2 , NullArgument = -3 , OutOfRange = -4 , NoMore = -5 , NotAvailable = -6 , Missing = -7 , InvalidOperation = -8 , InvalidState = -9 , WrongType = -10 , UnsupportedOperation = -11 , NoImplementation = -12 , Conflict = -13 , SanityCheckFailed = -14 , NoPermission = -15 , OutOfLimit = -16 , NoMemory = -17 , FatalError = -18 } |
The general Apparatus operation status type. More... | |
Functions | |
template<typename T > | |
constexpr bool | IsStatusType () |
Check if the passed in type is a status. | |
constexpr bool | OK (const EApparatusStatus Status) |
Check if the status is a successful one. | |
constexpr bool | IsNoop (const EApparatusStatus Status) |
Check if a status is a noop. | |
constexpr EApparatusStatus | ToStatus (const EApparatusStatus Status) |
Universal conversion to a status. | |
constexpr EApparatusStatus | StatusCombine () |
Noop. | |
constexpr EApparatusStatus | StatusCombine (const EApparatusStatus A) |
Bypass a status. | |
constexpr EApparatusStatus | StatusCombine (const EApparatusStatus A, const EApparatusStatus B) |
Combine two statuses deriving a new one based on them. | |
constexpr EApparatusStatus | operator+ (const EApparatusStatus A, const EApparatusStatus B) |
Combine two statuses deriving a new one based on them. | |
template<size_t N> | |
EApparatusStatus | StatusCombine (const EApparatusStatus(&Statuses)[N], const EApparatusStatus DefaultStatus=EApparatusStatus::Noop) |
Combine several statuses deriving a new one based on them. | |
EApparatusStatus | StatusCombine (std::initializer_list< EApparatusStatus > Statuses, const EApparatusStatus DefaultStatus=EApparatusStatus::Noop) |
Combine several statuses deriving a new one based on them. | |
template<typename... Ts> | |
constexpr EApparatusStatus | StatusCombine (const EApparatusStatus StatusA, const EApparatusStatus StatusB, const Ts... OtherStatuses) |
Combine several statuses deriving a new one based on them. | |
template<size_t N> | |
EApparatusStatus & | StatusAccumulate (EApparatusStatus &Status, const EApparatusStatus(&Statuses)[N]) |
Accumulate several statuses deriving a new one based on them. | |
EApparatusStatus & | StatusAccumulate (EApparatusStatus &Status) |
Accumulate several statuses deriving a new one based on them. | |
EApparatusStatus & | StatusAccumulate (EApparatusStatus &Status, const EApparatusStatus AddStatus) |
Accumulate several statuses deriving a new one based on them. | |
template<typename... Ts> | |
EApparatusStatus & | StatusAccumulate (EApparatusStatus &Status, const EApparatusStatus AddStatus, Ts &&... AddStatuses) |
Accumulate several statuses deriving a new one based on them. | |
EApparatusStatus & | operator+= (EApparatusStatus &A, const EApparatusStatus B) |
Accumulate a status to an existing status. | |
template<typename PayloadT > | |
EApparatusStatus | operator+= (const EApparatusStatus A, const PayloadT &B) |
Accumulate a payload to an existing status. | |
template<typename PayloadT > | |
EApparatusStatus | operator+= (const PayloadT &A, const EApparatusStatus B) |
Accumulate a status to an existing payload. | |
FString | ToString (const EApparatusStatus Status) |
Convert an Apparatus status variable to a string representation. | |
template<typename T > | |
constexpr bool | IsOutcomeType () |
Check if a type is an outcome. | |
template<typename T > | |
constexpr bool | IsHarshOutcomeType () |
Check if a type is a harsh outcome. | |
template<typename T > | |
constexpr bool | IsPoliteOutcomeType () |
Check if a type is a polite outcome. | |
template<typename T > | |
constexpr bool | IsStatusArrayType () |
template<typename T > | |
constexpr bool | IsOutcomeArrayType () |
template<typename T > | |
constexpr bool | IsPayloadType () |
Check if a type is a payload. | |
template<typename PayloadT > | |
constexpr bool | OK (const THarshOutcome< PayloadT > &) |
Confirm the harsh outcome to be a successful one. | |
template<typename PayloadT > | |
constexpr bool | OK (const TPoliteOutcome< PayloadT > &Outcome) |
Check if an outcome is be a successful one. | |
template<typename PayloadT > | |
constexpr bool | OK (std::initializer_list< THarshOutcome< PayloadT > > Outcomes) |
Check if all outcomes are OK. | |
template<typename PayloadT > | |
bool | OK (std::initializer_list< TPoliteOutcome< PayloadT > > Outcomes) |
Check if all outcomes are OK. | |
template<typename PayloadT , more::enable_if_t< IsPayloadType< more::flatten_t< PayloadT > >(), int > = 0> | |
constexpr bool | OK (const PayloadT &) |
Any other outcome is considered to be a payload which is also always a valid success. | |
template<typename PayloadT > | |
constexpr bool | IsNoop (const THarshOutcome< PayloadT > &) |
Confirm the harsh outcome to be a successful noop. | |
template<typename PayloadT > | |
constexpr bool | IsNoop (const TPoliteOutcome< PayloadT > &Outcome) |
Check if an outcome is be a successful one. | |
template<typename T , more::enable_if_t< IsPayloadType< more::flatten_t< T > >(), bool > = true> | |
constexpr bool | IsNoop (const T &) |
Any other outcome is considered to be a payload which is never a noop. | |
void | GetPayload (const THarshOutcome< void > &) |
Get an empty harsh outcome's payload in a universal manner. | |
void | GetPayload (const TPoliteOutcome< void > &) |
Get an empty polite outcome's payload in a universal manner. | |
template<typename PayloadT > | |
constexpr PayloadT | GetPayload (const THarshOutcome< PayloadT > &Outcome) |
Get a harsh outcome's payload in a universal manner. | |
template<typename PayloadT > | |
constexpr PayloadT | GetPayload (const TPoliteOutcome< PayloadT > &Outcome) |
Get a polite outcome's payload in a universal manner. | |
template<typename T , more::enable_if_t< IsPayloadType< more::flatten_t< T > >(), int > = 0> | |
constexpr bool | GetPayload (T &&Payload) |
Any other outcome is considered to be a payload which is just returned. | |
template<EParadigm Paradigm, typename L > | |
constexpr TOutcome< Paradigm, void > | ExecuteWithOutcome (const L &Lambda, void(L::*)(void) const) |
template<EParadigm Paradigm, typename L , typename PayloadT > | |
constexpr TOutcome< Paradigm, PayloadT > | ExecuteWithOutcome (const L &Lambda, THarshOutcome< PayloadT >(L::*)(void) const) |
template<EParadigm Paradigm, typename L , typename PayloadT > | |
constexpr TOutcome< Paradigm, PayloadT > | ExecuteWithOutcome (const L &Lambda, TPoliteOutcome< PayloadT >(L::*)(void) const) |
template<EParadigm Paradigm, typename L , typename PayloadT > | |
constexpr TOutcome< Paradigm, PayloadT > | ExecuteWithOutcome (const L &Lambda, PayloadT(L::*)(void) const) |
template<EParadigm Paradigm, typename L > | |
constexpr TOutcome< Paradigm > | ExecuteWithOutcome (const L &Lambda, EApparatusStatus(L::*)(void) const) |
template<EParadigm Paradigm, typename L > | |
constexpr auto | ExecuteWithOutcome (const L &Lambda) |
template<typename PayloadT > | |
FString | ToString (const THarshOutcome< PayloadT > &Outcome) |
Convert a harsh outcome to a string representation. | |
template<typename PayloadT > | |
FString | ToString (const TPoliteOutcome< PayloadT > &Outcome) |
Convert a polite outcome to a string representation. | |
template<typename PayloadT > | |
FString | ToString (const PayloadT &Payload) |
Convert a payload to a string representation. | |
template<typename To , typename PayloadT > | |
constexpr THarshOutcome< To > | OutcomeStaticCast (const THarshOutcome< PayloadT > &Outcome) |
Convert a harsh outcome to a status. | |
template<typename To , typename PayloadT > | |
constexpr TPoliteOutcome< To > | OutcomeStaticCast (const TPoliteOutcome< PayloadT > &Outcome) |
Convert a polite outcome to a status. | |
template<typename To , typename PayloadT > | |
constexpr auto | OutcomeStaticCast (PayloadT *const Payload) |
Statically cast a generic payload pointer. | |
template<typename PayloadT > | |
PayloadT & | OutcomeDereference (const THarshOutcome< PayloadT * > &Outcome) |
Convert a harsh outcome to a status. | |
template<typename PayloadT > | |
PayloadT & | OutcomeDereference (const TPoliteOutcome< PayloadT * > &Outcome) |
Convert a polite outcome to a status. | |
template<typename PayloadT > | |
PayloadT & | OutcomeDereference (const THarshOutcome< PayloadT > &Outcome) |
Convert a harsh outcome to a status. | |
template<typename PayloadT > | |
PayloadT & | OutcomeDereference (const TPoliteOutcome< PayloadT > &Outcome) |
Convert a polite outcome to a status. | |
template<typename PayloadT > | |
PayloadT & | OutcomeDereference (PayloadT &Payload) |
Statically cast a generic payload pointer. | |
template<typename PayloadT > | |
PayloadT & | OutcomeDereference (PayloadT *const Payload) |
Statically cast a generic payload pointer. | |
template<typename PayloadT > | |
constexpr EApparatusStatus | ToStatus (const THarshOutcome< PayloadT > &Outcome) |
Convert a harsh outcome to a status. | |
template<typename PayloadT > | |
constexpr EApparatusStatus | ToStatus (const TPoliteOutcome< PayloadT > &Outcome) |
Convert a polite outcome to a status. | |
template<typename PayloadT > | |
constexpr EApparatusStatus | ToStatus (const PayloadT &Outcome) |
Convert a generic payload to a status. | |
EApparatusStatus | Report (const EApparatusStatus Status, const TCHAR *InMessage) |
Report a status along with a message. | |
EApparatusStatus | Report (const EApparatusStatus Status, const TCHAR *InFormatString, const FStringFormatOrderedArguments &InOrderedArguments) |
Report a status with a formatted message. | |
EApparatusStatus | Report (const EApparatusStatus Status, const TCHAR *InFormatString, const FStringFormatNamedArguments &InNamedArguments) |
Report a status with a formatted message. | |
template<EApparatusStatus Status> | |
EApparatusStatus | Report (const TCHAR *InMessage) |
Report a status along with a message. | |
template<EApparatusStatus Status> | |
EApparatusStatus | Report (const TCHAR *InFormatString, const FStringFormatOrderedArguments &InOrderedArguments) |
Report a status with a formatted message. | |
template<EApparatusStatus Status> | |
EApparatusStatus | Report (const TCHAR *InFormatString, const FStringFormatNamedArguments &InNamedArguments) |
Report a status with a formatted message. | |
Variables | |
template<typename PayloadT , size_t N> | |
constexpr | bool |
Check if all outcomes are OK. | |
Outcome Combining | |
template<typename T > | |
using | TPayloadTypeSecurity = more::enable_if_t< IsPayloadType< T >(), bool > |
template<EParadigm Paradigm = EParadigm::SafePolite> | |
constexpr TOutcome< Paradigm, void > | OutcomeCombine () |
Combine outcomes. | |
constexpr EApparatusStatus | OutcomeCombine (const EApparatusStatus Status) |
Combine a single status bypassing it. | |
constexpr EApparatusStatus | OutcomeCombine (const EApparatusStatus StatusA, const EApparatusStatus StatusB) |
Combine two statuses as outcomes. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T , more::enable_if_t< IsPayloadType< more::flatten_t< T > >(), bool > = true> | |
constexpr auto | OutcomeCombine (const EApparatusStatus Status, T &&Payload) |
Combine into a polite outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T , TPayloadTypeSecurity< more::flatten_t< T > > = true> | |
constexpr auto | OutcomeCombine (T &&Payload, const EApparatusStatus Status) |
Combine a payload and a status into a polite non-empty outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T = void, more::enable_if_t<!std::is_void< T >::value, int > = 0> | |
constexpr auto | OutcomeCombine (const EApparatusStatus Status, THarshOutcome< T > &&Outcome) |
Combine into a polite outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T = void, more::enable_if_t<!std::is_void< T >::value, int > = 0> | |
constexpr auto | OutcomeCombine (TPoliteOutcome< T > &&Outcome, const EApparatusStatus Status) |
Combine into a polite outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T = void, more::enable_if_t<!std::is_void< T >::value, bool > = true> | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< T > &Outcome, const EApparatusStatus Status) |
Combine a non-empty polite outcome and a status into a non-empty polite outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T = void, more::enable_if_t<!std::is_void< T >::value, int > = 0> | |
constexpr auto | OutcomeCombine (const EApparatusStatus Status, TPoliteOutcome< T > &&Outcome) |
Combine into a polite outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T = void, more::enable_if_t<!std::is_void< T >::value, int > = 0> | |
constexpr auto | OutcomeCombine (const EApparatusStatus Status, const TPoliteOutcome< T > &Outcome) |
Combine into a polite outcome. | |
template<EParadigm Paradigm = EParadigm::Polite, typename T = void, typename std::enable_if< IsPayloadType< more::flatten_t< T > >(), int >::type = 0> | |
constexpr auto | OutcomeCombine (T &&Payload) |
Combine single payload bypassing it. | |
template<EParadigm Paradigm = EParadigm::SafeHarsh, typename A = void, typename B = void, more::enable_if_t<(IsPayloadType< more::flatten_t< A > >()) &&(IsPayloadType< more::flatten_t< B > >()), int > = 0> | |
constexpr auto | OutcomeCombine (A &&PayloadA, B &&PayloadB) |
Combine two payloads as outcomes. | |
template<typename APayloadT , typename T , typename std::enable_if< IsPayloadType< typename more::flatten< APayloadT >::type >() &&std::is_same< more::flatten_t< T >, THarshOutcome< void > >(), int >::type = 0> | |
constexpr auto | OutcomeCombine (APayloadT &&A, T &&B) |
Combine a payload with a harsh empty outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if< IsPayloadType< more::flatten_t< APayloadT > >() &&!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (APayloadT &&A, THarshOutcome< BPayloadT > &&B) |
Combine a payload with a harsh non-empty outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if< IsPayloadType< more::flatten_t< APayloadT > >() &&!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (APayloadT &&A, const THarshOutcome< BPayloadT > &B) |
Combine a payload with a harsh non-empty one. | |
template<typename APayloadT , typename std::enable_if< IsPayloadType< more::flatten_t< APayloadT > >(), int >::type = 0> | |
constexpr auto | OutcomeCombine (APayloadT &&A, const TPoliteOutcome< void > &B) |
Combine a payload with a polite one. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if< IsPayloadType< more::flatten_t< APayloadT > >() &&!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (APayloadT &&A, TPoliteOutcome< BPayloadT > &&B) |
Combine a payload with a polite non-empty one. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if< IsPayloadType< more::flatten_t< APayloadT > >() &&!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (APayloadT &&A, const TPoliteOutcome< BPayloadT > &B) |
Combine a payload with a polite non-empty one. | |
template<typename PayloadT > | |
constexpr auto | OutcomeCombine (THarshOutcome< PayloadT > &&Outcome) |
Bypass the harsh outcome. | |
template<typename PayloadT > | |
constexpr auto | OutcomeCombine (const THarshOutcome< PayloadT > &Outcome) |
Bypass the harsh outcome. | |
template<typename T , typename BPayloadT , typename std::enable_if< IsHarshOutcomeType< more::flatten_t< T > >() &&!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (T &&A, THarshOutcome< BPayloadT > &&B) |
Combine two harsh outcomes into a new harsh outcome. | |
template<typename T , typename BPayloadT , typename std::enable_if< IsHarshOutcomeType< more::flatten_t< T > >() &&!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (T &&A, const THarshOutcome< BPayloadT > &B) |
Combine two harsh outcomes into a new harsh outcome. | |
template<typename APayloadT , typename T , typename std::enable_if< std::is_same< more::flatten_t< T >, THarshOutcome< void > >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const THarshOutcome< APayloadT > &A, T &&B) |
Combine two harsh outcomes with and without a payload into a new harsh outcome. | |
template<typename APayloadT , typename T , typename std::enable_if< std::is_same< more::flatten_t< T >, THarshOutcome< void > >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (THarshOutcome< APayloadT > &&A, T &&B) |
Combine two harsh outcomes with and without a payload into a new harsh outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if< std::is_void< APayloadT >::value||!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const THarshOutcome< APayloadT > &A, TPoliteOutcome< BPayloadT > &&B) |
Combine a harsh outcome with a polite one, producing a polite outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if< std::is_void< APayloadT >::value||!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const THarshOutcome< APayloadT > &A, const TPoliteOutcome< BPayloadT > &B) |
Combine a harsh outcome with a polite one, producing a polite outcome. | |
template<typename APayloadT , typename std::enable_if<!std::is_void< APayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (THarshOutcome< APayloadT > &&A, TPoliteOutcome< void > &&B) |
Combine a non-empty harsh outcome with a polite empty one. | |
template<typename APayloadT , typename std::enable_if<!std::is_void< APayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const THarshOutcome< APayloadT > &A, const TPoliteOutcome< void > &B) |
Combine a non-empty harsh outcome with a polite empty one. | |
template<typename PayloadT > | |
constexpr auto | OutcomeCombine (TPoliteOutcome< PayloadT > &&Outcome) |
Bypass the polite outcome. | |
template<typename PayloadT > | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< PayloadT > &Outcome) |
Bypass the polite outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if<!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< APayloadT > &A, TPoliteOutcome< BPayloadT > &&B) |
Combine two polite outcomes into a new polite outcome while moving the second outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if<!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< APayloadT > &A, const TPoliteOutcome< BPayloadT > &B) |
Combine two polite outcomes with payloads into a new polite outcome with a payload. | |
template<typename APayloadT , typename std::enable_if<!std::is_void< APayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (TPoliteOutcome< APayloadT > &&A, const TPoliteOutcome< void > &B) |
Combine two polite outcomes into a new polite outcome with a payload moved from the first argument. | |
template<typename APayloadT , typename std::enable_if<!std::is_void< APayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< APayloadT > &A, const TPoliteOutcome< void > &B) |
Combine two polite outcomes into a new polite outcome with a payload copied from the first argument. | |
template<typename T1 , typename T2 , typename std::enable_if< std::is_same< more::flatten_t< T1 >, TPoliteOutcome< void > >::value &&std::is_same< more::flatten_t< T2 >, TPoliteOutcome< void > >::value, int >::type = 0> | |
constexpr TPoliteOutcome< void > | OutcomeCombine (T1 &&A, T2 &&B) |
Combine two empty polite outcomes into a new polite outcome. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if<!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< APayloadT > &A, THarshOutcome< BPayloadT > &&B) |
Combine a polite outcome with a harsh one. | |
template<typename APayloadT , typename BPayloadT , typename std::enable_if<!std::is_void< BPayloadT >::value, int >::type = 0> | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< APayloadT > &A, const THarshOutcome< BPayloadT > &B) |
Combine a polite outcome with a harsh one. | |
template<typename APayloadT > | |
constexpr TPoliteOutcome< APayloadT > | OutcomeCombine (TPoliteOutcome< APayloadT > &&A, const THarshOutcome< void > &B) |
Combine a polite empty outcome with a harsh one. | |
template<typename APayloadT > | |
constexpr auto | OutcomeCombine (const TPoliteOutcome< APayloadT > &A, const THarshOutcome< void > &B) |
Combine a polite empty outcome with a harsh one. | |
template<typename OutcomeT1 , typename OutcomeT2 , typename OutcomeT3 , typename... OtherOutcomeTs> | |
constexpr TOutcomeCombiner< more::flatten_t< OutcomeT1 >, more::flatten_t< OutcomeT2 >, more::flatten_t< OutcomeT3 >, more::flatten_t< OtherOutcomeTs >... >::Type | OutcomeCombine (OutcomeT1 &&Outcome1, OutcomeT2 &&Outcome2, OutcomeT3 &&Outcome3, OtherOutcomeTs &&... OtherOutcomes) |
Combine multiple outcomes. | |
template<size_t N> | |
constexpr THarshOutcome< void > | OutcomeCombine (const THarshOutcome< void >(&Outcomes)[N], const THarshOutcome< void > DefaultOutcome=THarshOutcome< void >()) |
Combine several outcomes deriving a new one based on them. | |
template<typename PayloadT , size_t N> | |
THarshOutcome< PayloadT > | OutcomeCombine (const THarshOutcome< PayloadT >(&Outcomes)[N], const THarshOutcome< PayloadT > &DefaultOutcome) |
Combine several outcomes deriving a new one based on them. | |
template<typename PayloadT , size_t N> | |
constexpr THarshOutcome< PayloadT > | OutcomeCombine (const THarshOutcome< PayloadT >(&Outcomes)[N], const PayloadT &DefaultPayload) |
Combine several outcomes deriving a new one based on them. | |
template<size_t N> | |
constexpr EApparatusStatus | OutcomeCombine (const EApparatusStatus(&Outcomes)[N], const EApparatusStatus DefaultOutcome=EApparatusStatus::Noop) |
Combine several polite outcomes deriving a new one based on them. | |
template<size_t N> | |
constexpr TPoliteOutcome< void > | OutcomeCombine (const TPoliteOutcome< void >(&Outcomes)[N], const TPoliteOutcome< void > DefaultOutcome=TPoliteOutcome< void >(EApparatusStatus::Noop)) |
Combine several polite outcomes deriving a new one based on them. | |
template<typename PayloadT , size_t N> | |
TPoliteOutcome< PayloadT > | OutcomeCombine (const TPoliteOutcome< PayloadT >(&Outcomes)[N], const TPoliteOutcome< PayloadT > &DefaultOutcome) |
Combine several polite outcomes deriving a new one based on them. | |
template<typename PayloadT , size_t N> | |
TPoliteOutcome< PayloadT > | OutcomeCombine (const TPoliteOutcome< PayloadT >(&Outcomes)[N], const PayloadT &DefaultPayload) |
Combine several polite outcomes deriving a new one based on them. | |
THarshOutcome< void > | OutcomeCombine (std::initializer_list< THarshOutcome< void > > Outcomes) |
Combine several outcomes deriving a new one based on them. | |
template<typename PayloadT , typename std::enable_if< IsPayloadType< typename more::flatten< PayloadT >::type >(), int >::type = 0> | |
THarshOutcome< PayloadT > | OutcomeCombine (std::initializer_list< THarshOutcome< PayloadT > > Outcomes, const PayloadT &DefaultPayload) |
Combine several outcomes deriving a new one based on them. | |
template<typename PayloadT > | |
THarshOutcome< PayloadT > | OutcomeCombine (std::initializer_list< THarshOutcome< PayloadT > > Outcomes, const THarshOutcome< PayloadT > &DefaultOutcome) |
Combine several outcomes deriving a new one based on them. | |
TPoliteOutcome< void > | OutcomeCombine (std::initializer_list< TPoliteOutcome< void > > Outcomes, const EApparatusStatus DefaultStatus=EApparatusStatus::Noop) |
Combine several polite outcomes deriving a new one based on them. | |
template<typename PayloadT > | |
TPoliteOutcome< PayloadT > | OutcomeCombine (std::initializer_list< TPoliteOutcome< PayloadT > > Outcomes, const TPoliteOutcome< PayloadT > &DefaultOutcome) |
Combine several polite outcomes deriving a new one based on them. | |
The Apparatus status reporting facility.
#define APPARATUS_REPEAT_REPORT | ( | Status, | |
Format, | |||
... | |||
) |
Repeat the report got from a previously called function.
#define APPARATUS_REPORT | ( | Status, | |
Format, | |||
... | |||
) |
Report a status with a formatted message.
Status | The status to report but without the EApparatusStatus:: prefix. |
Format | The format string to report with. |
... | The arguments to use within the format string. |
#define APPARATUS_REPORT_SUCCESS | ( | Format, | |
... | |||
) |
Report a success status with a formatted message.
#define APPARATUS_STRINGIFY | ( | symbol | ) | #symbol |
Stringify a symbol.
#define AssessCondition | ( | Paradigm, | |
Expr, | |||
Status | |||
) |
Make sure the check is passing or otherwise either return a status or raise an assertion failure.
Paradigm | The paradigm of the method. |
Expr | The expression to evaluate. |
Status | The status to return in case of an error. |
#define AssessConditionFormat | ( | Paradigm, | |
Expression, | |||
Status, | |||
Format, | |||
... | |||
) |
Make sure the check is passing or otherwise either return a status or raise an assertion failure.
Message version.
Paradigm | The paradigm of the method. |
Expression | The expression to evaluate. |
Status | The status to return in case of an error. |
Format | The formatting message to output in case of an error. |
... | The arguments for the formatting. |
#define AssessConditionOK | ( | Paradigm, | |
Expression | |||
) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
#define AssessConditionOKf | ( | Paradigm, | |
Expression, | |||
Format, | |||
... | |||
) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it.
Textural formatting version.
Paradigm | A paradigm to assess under. |
Expression | The expression to assess. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define AssessFinalizeOK | ( | Paradigm, | |
Expression, | |||
Finalize | |||
) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
Finalize | The statement to finalize with. |
#define AssessFinalizeOKf | ( | Paradigm, | |
Expression, | |||
Finalize, | |||
Format, | |||
... | |||
) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it.
Textural formatting version.
Paradigm | A paradigm to assess under. |
Expression | The expression to assess. |
Finalize | The statement to finalize with. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define AssessOK | ( | Paradigm, | |
Expression | |||
) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
#define AssessOKFormat | ( | Paradigm, | |
Expression, | |||
Format, | |||
... | |||
) |
Make sure the statement is successful or otherwise either return its resulting status or just execute it.
Textural formatting version.
Paradigm | A paradigm to assess under. |
Expression | The expression to assess. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define Avoid | ( | Paradigm, | |
Expression | |||
) |
Avoid a certain event.
Performs a verify()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
#define AvoidCondition | ( | Paradigm, | |
Expression | |||
) |
Avoid a certain state.
Performs a check()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
#define AvoidConditionFormat | ( | Paradigm, | |
Expression, | |||
Format, | |||
... | |||
) |
Avoid a certain state.
Performs a check()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define AvoidError | ( | Paradigm, | |
Expression | |||
) |
Avoid an erroneous statement.
Performs a verify()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
#define AvoidErrorCondition | ( | Paradigm, | |
Expression | |||
) |
Avoid an erroneous condition.
Performs a check()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
#define AvoidErrorConditionFormat | ( | Paradigm, | |
Expression, | |||
Format, | |||
... | |||
) |
Avoid an erroneous condition with a formatting message.
Performs a check()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define AvoidErrorFormat | ( | Paradigm, | |
Expression, | |||
Format, | |||
... | |||
) |
Avoid an erroneous statement with a formatting message.
Performs a verify()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define AvoidFormat | ( | Paradigm, | |
Expression, | |||
Format, | |||
... | |||
) |
Avoid a certain event.
Performs a verify()
and returns false
, if the paradigm is harsh.
Paradigm | The paradigm to assess under. |
Expression | The expression to assess. Guaranteed to be executed only once. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define EnsuredPayload | ( | Outcome | ) |
Get the payload while ensuring the status of the corresponding outcome is OK().
Outcome | The outcome to ensure. |
#define EnsuredPayloadf | ( | Outcome, | |
Format, | |||
... | |||
) |
Get the payload while ensuring the status is OK().
Formatting version.
Outcome | The outcome to ensure. |
Format | The formatting message. Uses standard % formatting. |
... | The arguments for the message being formatted. |
#define EnsureOK | ( | Outcome | ) |
#define iAPPARATUS_REPORT_POSITIVE | ( | Format, | |
... | |||
) |
#define VerifyOK | ( | Outcome | ) |
using TOutcome = typename std::conditional< std::is_void<PayloadT>::value, typename std::conditional< IsPolite(Paradigm), EApparatusStatus, THarshOutcome<void> >::type, typename std::conditional< IsPolite(Paradigm), TPoliteOutcome<PayloadT>, PayloadT>::type>::type |
A general Apparatus function/method outcome.
The outcome is a special status delivery mechanism.
Paradigm | The paradigm type in question. |
PayloadT | The type of an optional payload to deliver. |
using TOutcomeIf = typename std::enable_if<Condition, TOutcome<Paradigm, PayloadT> >::type |
A general Apparatus function/method outcome available if a condition is a succeeding one.
Paradigm | The paradigm type in question. |
Condition | The condition to examine. |
PayloadT | The type of an optional payload to deliver. |
using TOutcomeIfUnsafe = TEnableIfUnsafe<Paradigm, TOutcome<Paradigm, PayloadT> > |
A general Apparatus function/method outcome available in an unsafe mode only.
Paradigm | The paradigm type in question. |
PayloadT | The type of an optional payload to deliver. |
using TOutcomeIfUnsafeOr = TEnableIfUnsafeOr<Paradigm, Condition, TOutcome<Paradigm, PayloadT> > |
A general Apparatus function/method outcome available in an unsafe mode or under a specific condition.
Paradigm | The paradigm type in question. |
Condition | Should the outcome be enabled still. |
PayloadT | The type of an optional payload to deliver. |
using TPayloadTypeSecurity = more::enable_if_t<IsPayloadType<T>(), bool> |
using TPortableOutcome = TOutcome<EParadigm::DefaultPortable, PayloadT> |
A portable Apparatus outcome used in virtual methods and other compatiblity layers.
PayloadT | The type of an optional payload to deliver. |
|
strong |
The general Apparatus operation status type.
Apparatus uses its own status reporting mechanism where applicable. Values greater than or equal to EApparatusStatus::Success are variations of success, lesser than - are errors.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
Get a harsh outcome's payload in a universal manner.
|
inline |
Get an empty harsh outcome's payload in a universal manner.
|
inlineconstexpr |
Get a polite outcome's payload in a universal manner.
|
inline |
Get an empty polite outcome's payload in a universal manner.
Any other outcome is considered to be a payload which is just returned.
Check if a type is a harsh outcome.
T | The type to examine. |
|
inlineconstexpr |
Check if a status is a noop.
Any other outcome is considered to be a payload which is never a noop.
|
inlineconstexpr |
Confirm the harsh outcome to be a successful noop.
Harsh outcomes are never considered to be noops.
|
inlineconstexpr |
Check if an outcome is be a successful one.
Check if a type is an outcome.
T | The type to examine. |
Check if a type is a payload.
T | The type to examine. |
Check if a type is a polite outcome.
T | The type to examine. |
Check if the passed in type is a status.
T | The type to check. |
|
inlineconstexpr |
Check if the status is a successful one.
|
inlineconstexpr |
Any other outcome is considered to be a payload which is also always a valid success.
PayloadT | The type of the payload to examine. |
|
inlineconstexpr |
Confirm the harsh outcome to be a successful one.
Harsh outcomes are always considered to be successful.
|
inlineconstexpr |
Check if an outcome is be a successful one.
|
inlineconstexpr |
Check if all outcomes are OK.
Initializer list version.
|
inline |
Check if all outcomes are OK.
Initializer list version.
|
inlineconstexpr |
Combine two statuses deriving a new one based on them.
Be warned the the order of evaluation for operator operands is not explicitly defined or guaranteed in C++ so B
can be evaluated before A
.
|
inline |
Accumulate a payload to an existing status.
|
inline |
Accumulate a status to an existing payload.
|
inline |
Accumulate a status to an existing status.
|
inlineconstexpr |
Combine outcomes.
Zero arguments version.
Paradigm | The paradigm to work under. |
|
inlineconstexpr |
Combine two payloads as outcomes.
Paradigm | The paradigm to work under. |
PayloadA | The first payload to combine. |
PayloadB | The second payload to combine. |
|
inlineconstexpr |
Combine a payload with a harsh non-empty one.
APayloadT | The first outcome payload type. |
A | The first payload to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a payload with a polite non-empty one.
APayloadT | The first outcome payload type. |
A | The first payload to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a payload with a polite one.
APayloadT | The first outcome payload type. |
A | The first payload to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a payload with a harsh empty outcome.
APayloadT | The first outcome payload type. |
T | Harsh outcome type. |
A | The first payload to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a payload with a harsh non-empty outcome.
Moving version.
APayloadT | The first outcome payload type. |
A | The first payload to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a payload with a polite non-empty one.
Moving version.
APayloadT | The first outcome payload type. |
A | The first payload to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a single status bypassing it.
Status | The status to bypass. |
|
inlineconstexpr |
Combine into a polite outcome.
Paradigm | The paradigm to work under. |
Status | The status to combine. |
Outcome | The payload to combine with. |
|
inlineconstexpr |
Combine into a polite outcome.
Paradigm | The paradigm to work under. |
T | The type of the payload to combine with. |
Status | The status to combine. |
Payload | The payload to combine with. |
|
inlineconstexpr |
Combine into a polite outcome.
Paradigm | The paradigm to work under. |
Status | The status to combine. |
Outcome | The payload to combine with. |
|
inlineconstexpr |
Combine into a polite outcome.
Paradigm | The paradigm to work under. |
Status | The status to combine. |
Outcome | The payload to combine with. |
|
inlineconstexpr |
Combine two statuses as outcomes.
StatusA | The first status to combine. |
StatusB | The second status to combine. |
|
inlineconstexpr |
Combine several polite outcomes deriving a new one based on them.
Default outcome empty version.
N | The number of elements in the array. |
Outcomes | The array of outcomes to combine. |
DefaultOutcome | The default outcome to be returned, when no outcomes are in the array. |
|
inlineconstexpr |
Combine a harsh outcome with a polite one, producing a polite outcome.
APayloadT | The payload type of the first outcome. Its payload is ignored. May be a void . |
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine with. This is ignored here completely. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a non-empty harsh outcome with a polite empty one.
APayloadT | The payload type of the first outcome. May not be a void . |
A | The first outcome to combine with. |
B | The second outcome to combine. This is basically what gets returned. |
|
inlineconstexpr |
Combine two harsh outcomes with and without a payload into a new harsh outcome.
Copying the first argument version.
APayloadT | The payload type of the first outcome. |
T | The type of the harsh outcome for universal referencing. |
A | The first outcome to combine with. |
B | The second outcome to combine. This one is basically ignored here. |
|
inlineconstexpr |
Combine a harsh outcome with a polite one, producing a polite outcome.
Moving the second argument version.
APayloadT | The payload type of the first outcome. This is ignored here and may be a void . |
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine while moving it. Its payload is ignored completely while the status is used. |
B | The second outcome to combine. |
|
inlineconstexpr |
Bypass the harsh outcome.
PayloadT | The payload type of the outcome. |
Outcome | The outcome to bypass. |
|
inlineconstexpr |
Combine several outcomes deriving a new one based on them.
Default outcome version.
N | The number of elements in the array. |
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. |
DefaultPayload | The default payload to be returned, when no outcomes are in the array. |
|
inline |
Combine several outcomes deriving a new one based on them.
Default outcome version.
PayloadT | The type of the payload in the outcomes. |
N | The number of elements in the array. |
Outcomes | The array of outcomes to combine. |
DefaultOutcome | The default outcome to be returned, when no outcomes are in the array. |
|
inlineconstexpr |
Combine several outcomes deriving a new one based on them.
Default outcome empty version.
N | The number of elements in the array. |
Outcomes | The array of outcomes to combine. |
DefaultOutcome | The default outcome to be returned, when no outcomes are in the array. |
|
inlineconstexpr |
Combine a polite outcome with a harsh one.
APayloadT | The first outcome payload type. |
BPayloadT | The second outcome payload type. May not be a void . |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a polite empty outcome with a harsh one.
APayloadT | The payload type of the second outcome. |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine two polite outcomes with payloads into a new polite outcome with a payload.
from the second argument.
APayloadT | The payload type of the first outcome. |
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine two polite outcomes into a new polite outcome with a payload copied from the first argument.
APayloadT | The payload type of the second outcome. |
A | The first outcome to combine while copying its payload. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine a polite outcome with a harsh one.
Moving version.
APayloadT | The first outcome payload type. |
BPayloadT | The second outcome payload type. May not be a void . |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine two polite outcomes into a new polite outcome while moving the second outcome.
APayloadT | The payload type of the first outcome. |
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine. |
B | The second outcome to combine while moving it. |
|
inlineconstexpr |
Bypass the polite outcome.
PayloadT | The payload type of the outcome. |
Outcome | The outcome to bypass. |
|
inline |
Combine several polite outcomes deriving a new one based on them.
Default outcome version.
N | The number of elements in the array. |
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. |
DefaultPayload | The default payload to be returned, when no outcomes are in the array. |
|
inline |
Combine several polite outcomes deriving a new one based on them.
Default outcome version.
N | The number of elements in the array. |
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. |
DefaultOutcome | The default outcome to be returned, when no outcomes are in the array. |
|
inlineconstexpr |
Combine a non-empty polite outcome and a status into a non-empty polite outcome.
Paradigm | The paradigm to work under. |
Outcome | The payload to combine with. |
Status | The status to combine. |
|
inlineconstexpr |
Combine several polite outcomes deriving a new one based on them.
Default outcome empty version.
N | The number of elements in the array. |
Outcomes | The array of outcomes to combine. |
DefaultOutcome | The default outcome to be returned, when no outcomes are in the array. |
|
inlineconstexpr |
Combine multiple outcomes.
This method is recursive and also supports combining on payloads only.
OutcomeT1 | The type of the first outcome to combine. |
OutcomeT2 | The type of the second outcome to combine. |
OutcomeT3 | The type of the third outcome to combine. |
OtherOutcomeTs | Other outcomes to combine. |
Outcome1 | The first outcome to combine. |
Outcome2 | The second outcome to combine. |
Outcome3 | The third outcome to combine. |
OtherOutcomes | Other outcomes to combine. |
|
inline |
Combine several outcomes deriving a new one based on them.
Initializer list with a default payload version.
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. |
DefaultPayload | The default payload value, when no outcomes are in the list. |
|
inline |
Combine several outcomes deriving a new one based on them.
Initializer list with a default outcome version.
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. |
DefaultOutcome | The default outcome, when no outcomes are in the list. |
|
inline |
Combine several outcomes deriving a new one based on them.
Initializer list version.
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. when no outcomes are in the array. |
|
inline |
Combine several polite outcomes deriving a new one based on them.
Initializer list with a default outcome version.
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of polite outcomes to combine. |
DefaultOutcome | The default outcome, when no outcomes are in the list. |
|
inline |
Combine several polite outcomes deriving a new one based on them.
Initializer list version.
PayloadT | The type of the payload in the outcomes. |
Outcomes | The array of outcomes to combine. when no outcomes are in the array. |
DefaultStatus | The default status to use, when there are no outcomes in the list. |
|
inlineconstexpr |
Combine two harsh outcomes into a new harsh outcome.
T | The payload type of the first outcome. |
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine two harsh outcomes into a new harsh outcome.
Moving the second argument version.
T | The payload type of the first outcome. |
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine single payload bypassing it.
Paradigm | The paradigm to work under. |
|
constexpr |
Combine a payload and a status into a polite non-empty outcome.
Paradigm | The paradigm to work under. |
T | The type of the payload. |
Payload | The payload to combine with. |
Status | The status to combine. |
|
inlineconstexpr |
Combine two empty polite outcomes into a new polite outcome.
Fully empty version.
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine two harsh outcomes with and without a payload into a new harsh outcome.
Moving the first argument version.
APayloadT | The payload type of the first outcome. |
T | The type of the harsh outcome for universal referencing. |
A | The first outcome to combine with. |
B | The second outcome to combine. This one is basically ignored here. |
|
inlineconstexpr |
Combine a non-empty harsh outcome with a polite empty one.
Moving the first payload version.
APayloadT | The payload type of the first outcome. May not be a void . |
A | The first outcome to combine with. |
B | The second outcome to combine. This is basically what gets returned. |
|
inlineconstexpr |
Bypass the harsh outcome.
Moving version.
PayloadT | The payload type of the outcome. |
Outcome | The outcome to bypass. |
|
inlineconstexpr |
Combine a polite empty outcome with a harsh one.
Moving version.
BPayloadT | The payload type of the second outcome. |
A | The first outcome to combine. |
B | The second outcome to combine. |
|
inlineconstexpr |
Combine two polite outcomes into a new polite outcome with a payload moved from the first argument.
APayloadT | The payload type of the second outcome. |
A | The first outcome to combine while moving it. |
B | The second outcome to combine. |
|
inlineconstexpr |
Bypass the polite outcome.
Moving version.
PayloadT | The payload type of the outcome. |
Outcome | The outcome to bypass. |
|
inlineconstexpr |
Combine into a polite outcome.
Paradigm | The paradigm to work under. |
Status | The status to combine. |
Outcome | The payload to combine with. |
|
inline |
Convert a harsh outcome to a status.
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inline |
Convert a harsh outcome to a status.
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inline |
Convert a polite outcome to a status.
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inline |
Convert a polite outcome to a status.
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inline |
Statically cast a generic payload pointer.
PayloadT | The type of the payload. |
Payload | The payload to cast. |
|
inline |
Statically cast a generic payload pointer.
PayloadT | The type of the payload. |
Payload | The payload to cast. |
|
inlineconstexpr |
Convert a harsh outcome to a status.
To | The type to cast to. |
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inlineconstexpr |
Convert a polite outcome to a status.
To | The type to cast to. |
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inlineconstexpr |
Statically cast a generic payload pointer.
To | The type to cast to. |
PayloadT | The type of the payload. |
Payload | The payload to cast. |
|
inline |
Report a status with a formatted message.
Status | The status to report. |
InFormatString | The format string to report with. Example: "{foo}/{bar}: {baz}" |
InNamedArguments | The arguments to use within the format string. |
|
inline |
Report a status with a formatted message.
Status | The status to report. |
InFormatString | The format string to report with. Example: "{0}/{1}: {2}" |
InOrderedArguments | The arguments to use within the format string. |
|
inline |
Report a status along with a message.
Status | The status to report. |
InMessage | The message to report along with the status. |
|
inline |
Report a status with a formatted message.
Templated version.
Status | The status to report. |
InFormatString | The format string to report with. Example: "{foo}/{bar}: {baz}" |
InNamedArguments | The arguments to use within the format string. |
|
inline |
Report a status with a formatted message.
Templated version.
Status | The status to report. |
InFormatString | The format string to report with. Example: "{0}/{1}: {2}" |
InOrderedArguments | The arguments to use within the format string. |
|
inline |
Report a status along with a message.
Templated version.
Status | The status to report. |
InMessage | The message to report along with the status. |
|
inline |
Accumulate several statuses deriving a new one based on them.
Single argument version.
|
inline |
Accumulate several statuses deriving a new one based on them.
Two arguments version.
Be warned the the order of evaluation for function arguments is not explicitly defined or guaranteed in C++.
|
inline |
Accumulate several statuses deriving a new one based on them.
Multiple arguments version.
Be warned the the order of evaluation for function arguments is not explicitly defined or guaranteed in C++.
|
inline |
Accumulate several statuses deriving a new one based on them.
|
inlineconstexpr |
Noop.
|
inlineconstexpr |
Bypass a status.
A | The first status to bypass. |
|
inlineconstexpr |
Combine two statuses deriving a new one based on them.
Be warned the the order of evaluation for function arguments is not explicitly defined or guaranteed in C++, so B
can evaluate prior to A
.
A | The first status to combine. |
B | The second status to combine. |
|
inlineconstexpr |
Combine several statuses deriving a new one based on them.
|
inline |
Combine several statuses deriving a new one based on them.
Array version.
N | The number of elements in the array. |
Statuses | The array of statuses to combine. |
DefaultStatus | The default status to be returned, when no statuses are in the array. |
|
inline |
Combine several statuses deriving a new one based on them.
Initializer list version.
Statuses | The list of statuses to combine. |
DefaultStatus | The default status to be returned, when no statuses are in the array. |
|
inlineconstexpr |
Universal conversion to a status.
|
inlineconstexpr |
Convert a generic payload to a status.
PayloadT | The type of the payload. |
Outcome | The outcome to convert. |
|
inlineconstexpr |
Convert a harsh outcome to a status.
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inlineconstexpr |
Convert a polite outcome to a status.
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inline |
Convert an Apparatus status variable to a string representation.
Status | The status to convert. |
|
inline |
Convert a payload to a string representation.
PayloadT | The type of the payload of the outcome. |
Payload | The outcome to convert. |
|
inline |
Convert a harsh outcome to a string representation.
Paradigm | The paradigm to work under. |
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inline |
Convert a polite outcome to a string representation.
Paradigm | The paradigm to work under. |
PayloadT | The type of the payload of the outcome. |
Outcome | The outcome to convert. |
|
inlineconstexpr |
Check if all outcomes are OK.
Array version.