OZO 「お象」
Boost.Asio and libpq based asynchronous PostgreSQL unofficial header-only C++17 client library.
ozo::options_factory_base< RealType, Options > Class Template Reference

#include <ozo/core/options.h>

Description

template<typename RealType, typename Options>
class ozo::options_factory_base< RealType, Options >

Base class for options factories.

This class is CRTP base for classes are representing different kinds of option factories. See ozo::options_factory, ozo::failover::retry_strategy as examples of usage.

Template Parameters
RealType— the real type child type of a factory
Options— initial options set

Public Member Functions

constexpr options_factory_base (Options v)
 
template<typename Options >
constexpr decltype(auto) set (Options &&...options) &&
 
template<typename Key >
constexpr auto has (ozo::option< Key > op) const
 
template<typename Key >
constexpr decltype(auto) get (ozo::option< Key > op) const
 
constexpr const Options & options () const &
 
constexpr Options & options () &
 
constexpr Options && options () &&
 

Constructors

◆ options_factory_base()

template<typename RealType , typename Options >
constexpr ozo::options_factory_base< RealType, Options >::options_factory_base ( Options  v)
constexpr

Construct a new options factory base object.

Parameters
v— default options

Member Function Documentation

◆ get()

template<typename RealType , typename Options >
template<typename Key >
constexpr decltype(auto) ozo::options_factory_base< RealType, Options >::get ( ozo::option< Key >  op) const
constexpr

Returns current option value. If no option found compile error will occur.

Parameters
op— option to get value of
Returns
const reference on the value

◆ has()

template<typename RealType , typename Options >
template<typename Key >
constexpr auto ozo::options_factory_base< RealType, Options >::has ( ozo::option< Key >  op) const
constexpr

Indicates if option exists.

Parameters
op— option to check
Returns
boost::hana::true_ or boost::hana::false_

Example

namespace demo {
}
using namespace std::literals;
ozo::options_factory options{demo::foo="Foo"s};
static_assert(decltype(options.has(demo::foo))::value, "");
static_assert(!decltype(options.has(demo::buzz))::value, "");

Referenced by ozo::options_factory_base< options_factory< decltype(hana::make_map()) >, decltype(hana::make_map()) >::set().

◆ options() [1/3]

template<typename RealType , typename Options >
constexpr Options& ozo::options_factory_base< RealType, Options >::options ( ) &
constexpr

Constructed options accessor

◆ options() [2/3]

template<typename RealType , typename Options >
constexpr Options&& ozo::options_factory_base< RealType, Options >::options ( ) &&
constexpr

Constructed options accessor

◆ options() [3/3]

template<typename RealType , typename Options >
constexpr const Options& ozo::options_factory_base< RealType, Options >::options ( ) const &
constexpr

◆ set()

template<typename RealType , typename Options >
template<typename Options >
constexpr decltype(auto) ozo::options_factory_base< RealType, Options >::set ( Options &&...  options) &&
constexpr

Set number of options with values.

This method updates or inserts option with a value specified. If option exists - it will be updated, in this case value should be at least implicitly convertible to the existant option value type. If option does not exist - it will be added.

Parameters
options— pairs of option and its value
Returns
options_factory_base with updated or inserted options

Example

namespace demo {
}
using namespace std::literals;
auto updated_options = options.set(demo::foo="Foo"s, demo::buzz=777);

Referenced by ozo::failover::retry().

ozo::options_factory
Generic options factory.
Definition: options.h:270
ozo::option
Option class.
Definition: options.h:33
ozo::options_factory_base::options
constexpr const Options & options() const &
Definition: options.h:250