SObjectizer  5.7
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
so_5::extensible_select_t Class Reference

Special container for holding select parameters and select cases. More...

#include <mchain_select.hpp>

Public Member Functions

 extensible_select_t (const extensible_select_t &)=delete
 
extensible_select_toperator= (const extensible_select_t &)=delete
 
 extensible_select_t ()=default
 Default constructor. More...
 
 extensible_select_t (extensible_select_t &&other) noexcept
 Move constructor. More...
 
extensible_select_toperator= (extensible_select_t &&other) noexcept
 Move operator. More...
 
bool empty () const noexcept
 Is this handle empty? More...
 
Getters
auto & data () const noexcept
 

Private Member Functions

 extensible_select_t (std::unique_ptr< mchain_props::details::extensible_select_data_t > data)
 Actual initializing constructor. More...
 

Private Attributes

std::unique_ptr< mchain_props::details::extensible_select_data_tm_data
 Actual data for that extensible-select. More...
 

Friends

template<mchain_props::msg_count_status_t Msg_Count_Status, typename... Cases>
extensible_select_t make_extensible_select (mchain_select_params_t< Msg_Count_Status > params, Cases &&... cases)
 Creation of extensible-select instance. More...
 
void swap (extensible_select_t &a, extensible_select_t &b) noexcept
 Swap operation. More...
 

Detailed Description

Special container for holding select parameters and select cases.

This type is a handle for extensible-select instance. It's like unique_ptr. Just one instance of extensible_select_t owns the instance of extensible-select.

Attention
Because extensible_select_t is like to unique_ptr it can be in an empty state (it means that there is no actual extensible-select instance behind the handle). Usage of empty extensible_select_t object in call to select() is an error. SObjectizer doesn't check the emptiness of extensible_select_t object. An attempt to pass an empty extensible_select_t to select() will lead to null-pointer dereference.
Note
This is Moveable type but not Copyable.
Since
v.5.6.1

Constructor & Destructor Documentation

◆ extensible_select_t() [1/4]

so_5::extensible_select_t::extensible_select_t ( std::unique_ptr< mchain_props::details::extensible_select_data_t data)
inlineprivate

Actual initializing constructor.

◆ extensible_select_t() [2/4]

so_5::extensible_select_t::extensible_select_t ( const extensible_select_t )
delete

◆ extensible_select_t() [3/4]

so_5::extensible_select_t::extensible_select_t ( )
default

Default constructor.

Attention
This constructor is intended for the cases like that:
class some_my_data {
so_5::extensible_select_t m_select_handle;
...
void on_some_stage() {
m_select_handle = so_5::make_extensible_select(...);
...
}
void on_another_stage() {
so_5::add_select_cases(m_select_handle, ...);
...
}
void on_yet_another_stage() {
auto r = so_5::select(m_select_handle);
...
}
...
};

◆ extensible_select_t() [4/4]

so_5::extensible_select_t::extensible_select_t ( extensible_select_t &&  other)
inlinenoexcept

Move constructor.

Member Function Documentation

◆ data()

auto& so_5::extensible_select_t::data ( ) const
inlinenoexcept

◆ empty()

bool so_5::extensible_select_t::empty ( ) const
inlinenoexcept

Is this handle empty?

◆ operator=() [1/2]

extensible_select_t& so_5::extensible_select_t::operator= ( const extensible_select_t )
delete

◆ operator=() [2/2]

extensible_select_t& so_5::extensible_select_t::operator= ( extensible_select_t &&  other)
inlinenoexcept

Move operator.

Friends And Related Function Documentation

◆ make_extensible_select

template<mchain_props::msg_count_status_t Msg_Count_Status, typename... Cases>
extensible_select_t make_extensible_select ( mchain_select_params_t< Msg_Count_Status >  params,
Cases &&...  cases 
)
friend

Creation of extensible-select instance.

This function creates an instance of extensible-select object that can be used for subsequent calls to add_select_cases() and select().

Usage examples:

// Creation of extensible-select instance with initial set of cases.
so_5::from_all().handle_n(10),
receive_case(ch1, ...),
receive_case(ch2, ...));
// Creation of extensible-select instance without initial set of cases.
so_5::from_all().handle_n(20));
// Cases should be added later.
receive_case(ch2, ...),
receive_case(ch3, ...));
Since
v.5.6.1
Parameters
paramsParameters for advanced select.
casesSelect cases.

◆ swap

void swap ( extensible_select_t a,
extensible_select_t b 
)
friend

Swap operation.

Member Data Documentation

◆ m_data

std::unique_ptr< mchain_props::details::extensible_select_data_t > so_5::extensible_select_t::m_data
private

Actual data for that extensible-select.


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