ROSE  0.11.96.11
Public Types | Public Member Functions | List of all members
Sawyer::Result< T, E > Class Template Reference

Description

template<class T, class E>
class Sawyer::Result< T, E >

Result containing a value or an error.

Definition at line 236 of file Result.h.

#include <Result.h>

Public Types

using OkValue = T
 
using ErrorValue = E
 
using OkType = Ok< T >
 
using ErrorType = Error< E >
 

Public Member Functions

template<class U = T>
 Result (const Ok< U > &ok)
 
template<class F = E>
 Result (const Error< F > &error)
 
template<class U = T>
Resultoperator= (const Ok< U > &ok)
 Assign an Ok value to this result.
 
template<class F = E>
Resultoperator= (const Error< F > &error)
 Assign an Error value to this result.
 
template<class U = T>
bool operator== (const Ok< U > &ok) const
 Test whether this result has the specified Ok value.
 
template<class U = T>
bool operator!= (const Ok< U > &ok) const
 Test whether this result does not have the specified Ok value.
 
template<class F = E>
bool operator== (const Error< F > &error) const
 Test whether this result has the specified Error value.
 
template<class F = E>
bool operator!= (const Error< F > &error) const
 Test whether this result does not have the specified Error value.
 
template<class U , class F >
bool operator== (const Result< U, F > &other) const
 Test whether this result is equal to the other result.
 
template<class U , class F >
bool operator!= (const Result< U, F > &other) const
 Test whether this result is unequal to the other result.
 
bool isError () const
 Returns true if the result is an error.
 
const Sawyer::Optional< T > ok () const
 Convert to Optional<T>. More...
 
const Sawyer::Optional< E > error () const
 Convert to Optional<E>. More...
 
const T & expect (const std::string &mesg) const
 Returns the success value or throws an exception. More...
 
const T orElse (const T &dflt) const
 Returns the contained Ok value or a provided default.
 
template<class Fn >
std::enable_if< is_invocable< Fn, ErrorValue >::value, const Result >::type orElse (Fn fn) const
 Returns the contained Ok value, or calls a function. More...
 
template<class F >
const Result< T, F > orElse (const Result< T, F > &other) const
 Returns this value or the other result. More...
 
const T & orDefault () const
 Returns the okay value or a default constructed value.
 
template<class Exception = E>
const T & orThrow () const
 Returns the value or throws an exception. More...
 
template<class Exception = E>
const T & orThrow (const Exception &e) const
 Returns the value or throws an exception constructed from the specified value.
 
template<class Fn >
std::enable_if< is_invocable< Fn, OkValue >::value, const Result >::type andThen (Fn fn) const
 Returns the contained Error value, or calls a function. More...
 
template<class U >
const Result< U, E > andThen (const Result< U, E > &other) const
 Returns this error or the other result. More...
 
const E & expectError (const std::string &mesg) const
 Returns the error value or throws an exception. More...
 
const E & unwrapError () const
 Returns the error value or throws an exception. More...
 
template<class U >
bool contains (const U &value) const
 Returns true if this result contains the specified okay value.
 
template<class F >
bool containsError (const F &error) const
 Returns true if this result contains the specified error value.
 
template<class U >
bool assignTo (U &out) const
 Conditionally save a value. More...
 
bool isOk () const
 Returns true if the result is okay.
 
 operator bool () const
 Returns true if the result is okay.
 
const T & unwrap () const
 Returns the success value or throws an exception. More...
 
const T & operator* () const
 Returns the success value or throws an exception. More...
 

Member Function Documentation

◆ ok()

template<class T , class E >
const Sawyer::Optional<T> Sawyer::Result< T, E >::ok ( ) const
inline

Convert to Optional<T>.

If this result is okay, then return the result, otherwise return nothing.

Definition at line 355 of file Result.h.

References Sawyer::Result< T, E >::isOk().

Referenced by Sawyer::Result< T, E >::andThen(), Sawyer::Result< T, E >::operator!=(), Sawyer::Result< T, E >::operator=(), and Sawyer::Result< T, E >::operator==().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ error()

template<class T , class E >
const Sawyer::Optional<E> Sawyer::Result< T, E >::error ( ) const
inline

Convert to Optional<E>.

If this result is an error, then return the error, otherwise return nothing.

Definition at line 366 of file Result.h.

References Sawyer::Result< T, E >::isOk().

Referenced by Sawyer::Result< T, E >::containsError(), Sawyer::Result< T, E >::operator!=(), Sawyer::Result< T, E >::operator=(), Sawyer::Result< T, E >::operator==(), Sawyer::Result< T, E >::orElse(), and Sawyer::Result< T, E >::orThrow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ expect()

template<class T , class E >
const T& Sawyer::Result< T, E >::expect ( const std::string &  mesg) const
inline

Returns the success value or throws an exception.

If this result is okay, then returns its value, otherwise throws an std::runtime_error with the specified string.

Definition at line 377 of file Result.h.

References Sawyer::Result< T, E >::isOk().

Referenced by Sawyer::Result< T, E >::unwrap().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unwrap()

template<class T , class E >
const T& Sawyer::Result< T, E >::unwrap ( ) const
inline

Returns the success value or throws an exception.

If this result is okay, then returns its value, otherwise throws an std::runtime_error.

Definition at line 390 of file Result.h.

References Sawyer::Result< T, E >::expect().

Referenced by Sawyer::Result< T, E >::assignTo(), Sawyer::Result< T, E >::contains(), Sawyer::Result< T, E >::operator*(), Sawyer::Result< T, E >::orDefault(), Sawyer::Result< T, E >::orElse(), and Sawyer::Result< T, E >::orThrow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator*()

template<class T , class E >
const T& Sawyer::Result< T, E >::operator* ( ) const
inline

Returns the success value or throws an exception.

If this result is okay, then returns its value, otherwise throws an std::runtime_error.

Definition at line 393 of file Result.h.

References Sawyer::Result< T, E >::unwrap().

Here is the call graph for this function:

◆ orElse() [1/2]

template<class T , class E >
template<class Fn >
std::enable_if<is_invocable<Fn, ErrorValue>::value, const Result>::type Sawyer::Result< T, E >::orElse ( Fn  fn) const
inline

Returns the contained Ok value, or calls a function.

If this result is okay, then returns this result, otherwise calls the specified function, fn, with this result's Error value and returns the function's result.

Definition at line 409 of file Result.h.

References Sawyer::Result< T, E >::error(), and Sawyer::Result< T, E >::isOk().

Here is the call graph for this function:

◆ orElse() [2/2]

template<class T , class E >
template<class F >
const Result<T, F> Sawyer::Result< T, E >::orElse ( const Result< T, F > &  other) const
inline

Returns this value or the other result.

If this result is okay then return it, otherwise returns the other result.

Definition at line 421 of file Result.h.

References Sawyer::Result< T, E >::isOk().

Here is the call graph for this function:

◆ orThrow()

template<class T , class E >
template<class Exception = E>
const T& Sawyer::Result< T, E >::orThrow ( ) const
inline

Returns the value or throws an exception.

If the result is okay, then its value is returned, otherwise either the error is thrown or it is used to construct the specified Exception which is then thrown.

Definition at line 440 of file Result.h.

References Sawyer::Result< T, E >::error(), Sawyer::Result< T, E >::isOk(), and Sawyer::Result< T, E >::unwrap().

Here is the call graph for this function:

◆ andThen() [1/2]

template<class T , class E >
template<class Fn >
std::enable_if<is_invocable<Fn, OkValue>::value, const Result>::type Sawyer::Result< T, E >::andThen ( Fn  fn) const
inline

Returns the contained Error value, or calls a function.

If this result is an error, then it's returned. Otherwise the okay value is passed to the specified function and that function's return value is returned.

Definition at line 464 of file Result.h.

References Sawyer::Result< T, E >::isOk(), and Sawyer::Result< T, E >::ok().

Here is the call graph for this function:

◆ andThen() [2/2]

template<class T , class E >
template<class U >
const Result<U, E> Sawyer::Result< T, E >::andThen ( const Result< U, E > &  other) const
inline

Returns this error or the other result.

If this result is okay, then returns other. Otherwise returns the error value of this result.

Definition at line 476 of file Result.h.

References Sawyer::Result< T, E >::isOk().

Here is the call graph for this function:

◆ expectError()

template<class T , class E >
const E& Sawyer::Result< T, E >::expectError ( const std::string &  mesg) const
inline

Returns the error value or throws an exception.

If this result is an error, then returns the error, otherwise throws an std::runtime_error with the specified string.

Definition at line 487 of file Result.h.

References Sawyer::Result< T, E >::isOk().

Referenced by Sawyer::Result< T, E >::unwrapError().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unwrapError()

template<class T , class E >
const E& Sawyer::Result< T, E >::unwrapError ( ) const
inline

Returns the error value or throws an exception.

If this result is an error, then returns the error, otherwise throws an std::runtime_error.

Definition at line 498 of file Result.h.

References Sawyer::Result< T, E >::expectError().

Referenced by Sawyer::Result< T, E >::containsError().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ assignTo()

template<class T , class E >
template<class U >
bool Sawyer::Result< T, E >::assignTo ( U &  out) const
inline

Conditionally save a value.

If this result has a value, then assign it to the argument and return true, otherwise do nothing and return false.

Definition at line 551 of file Result.h.

References Sawyer::Result< T, E >::isOk(), and Sawyer::Result< T, E >::unwrap().

Here is the call graph for this function:

The documentation for this class was generated from the following file: