|
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.