MySQL 9.6.0
Source Code Documentation
mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp > Class Template Reference

CRTP base used to define classes that yield disjoint, adjacent pairs of elements from an even-length source sequence. More...

#include <disjoint_pairs.h>

Inheritance diagram for mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >:
[legend]

Public Types

using Make_pair_t = Make_pair_tp
 

Public Member Functions

auto begin () const
 Return const iterator to the beginning. More...
 
auto end () const
 Return const iterator to sentinel. More...
 
auto begin ()
 Return iterator to the beginning. More...
 
auto end ()
 Return iterator to sentinel. More...
 
bool empty () const
 Return true if the range is empty. More...
 
bool empty () const
 Return true if the range is empty. More...
 
auto size () const
 Return the number of pairs, i.e., half the size of the source. More...
 
auto size () const
 Return the number of pairs, i.e., half the size of the source. More...
 
- Public Member Functions inherited from mysql::ranges::Collection_interface< Self_tp >
constexpr auto cbegin () const
 Return constant iterator to the beginning. More...
 
constexpr auto cend () const
 Return constant iterator to the end. More...
 
constexpr auto rbegin ()
 Return reverse iterator to the beginning. More...
 
constexpr auto rend ()
 Return reverse iterator to the end. More...
 
constexpr auto rbegin () const
 Return const reverse iterator to the beginning. More...
 
constexpr auto rend () const
 Return const reverse iterator to the end. More...
 
constexpr auto crbegin () const
 Return const reverse iterator to the beginning. More...
 
constexpr auto crend () const
 Return const reverse iterator to the end. More...
 
constexpr bool empty () const
 Return true if the range is empty, i.e., begin() == end(). More...
 
constexpr operator bool () const
 Return true if the range is non-empty, i.e., begin() != end(). More...
 
constexpr bool operator! () const
 Return true if the range is empty, i.e., begin() == end(). More...
 
constexpr auto size () const
 Return the number of elements in this view, unsigned (size_t), by computing std::ranges::distance(begin, end) More...
 
constexpr auto ssize () const
 Return the number of elements in this view, signed (ptrdiff_t). More...
 
constexpr decltype(auto) front () const
 Return the first element. More...
 
constexpr decltype(auto) back () const
 Return the last element. Enabled if we have bidirectional iterators. More...
 
constexpr decltype(auto) operator[] (std::ptrdiff_t n)
 Return the n'th element, possibly mutable. More...
 
constexpr decltype(auto) operator[] (std::ptrdiff_t n) const
 Return the n'th element, const. More...
 
constexpr auto * data ()
 Return pointer to underlying contiguous memory. More...
 
constexpr auto * data () const
 Return const pointer to underlying contiguous memory. More...
 

Private Types

using Self_t = Self_tp
 
using Base_t = mysql::ranges::Collection_interface< Self_tp >
 

Private Member Functions

const auto & source () const
 
auto & source ()
 

Detailed Description

template<class Self_tp, class Make_pair_tp>
class mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >

CRTP base used to define classes that yield disjoint, adjacent pairs of elements from an even-length source sequence.

For example, if the source sequence is 2, 3, 5, 7, 11, 13, then this yields the pairs <2,3>, <5,7>, <11,13>. It is conceptually similar to std::stride_view<std::slide_view<Source_tp>>, except the window width is defined at compile time and each window is wrapped in an object.

This is for objects that own the source. If you need objects that do not own the source - a view - use Disjoint_pairs_view.

Template Parameters
Self_tpClass that derives from this class. It must implement the member function disjoint_pairs_source(), returning a reference to an object with the member functions begin, end, empty, and size. The distance between begin and end must be even.
Make_pair_tpClass containing a static member function make_pair that defines how to construct a pair from two adjacent elements. By default, uses detail::Make_pair, for which make_pair constructs and returns a std::pair object.

Member Typedef Documentation

◆ Base_t

template<class Self_tp , class Make_pair_tp >
using mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::Base_t = mysql::ranges::Collection_interface<Self_tp>
private

◆ Make_pair_t

template<class Self_tp , class Make_pair_tp >
using mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::Make_pair_t = Make_pair_tp

◆ Self_t

template<class Self_tp , class Make_pair_tp >
using mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::Self_t = Self_tp
private

Member Function Documentation

◆ begin() [1/2]

template<class Self_tp , class Make_pair_tp >
auto mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::begin ( )
inline

Return iterator to the beginning.

◆ begin() [2/2]

template<class Self_tp , class Make_pair_tp >
auto mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::begin ( ) const
inline

Return const iterator to the beginning.

◆ empty() [1/2]

template<class Self_tp , class Make_pair_tp >
bool mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::empty ( ) const
inline

Return true if the range is empty.

Use Collection_interface::empty if Self_t::disjoint_pairs_source().empty() does not exist.

◆ empty() [2/2]

template<class Self_tp , class Make_pair_tp >
bool mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::empty ( ) const
inline

Return true if the range is empty.

Use Self_t::disjoint_pairs_source().empty() if it exists.

◆ end() [1/2]

template<class Self_tp , class Make_pair_tp >
auto mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::end ( )
inline

Return iterator to sentinel.

◆ end() [2/2]

template<class Self_tp , class Make_pair_tp >
auto mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::end ( ) const
inline

Return const iterator to sentinel.

◆ size() [1/2]

template<class Self_tp , class Make_pair_tp >
auto mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::size ( ) const
inline

Return the number of pairs, i.e., half the size of the source.

Use Collection_interface::size if Self_t::disjoint_pairs_source().size() does not exist.

◆ size() [2/2]

template<class Self_tp , class Make_pair_tp >
auto mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::size ( ) const
inline

Return the number of pairs, i.e., half the size of the source.

Use Self_t::disjoint_pairs_source().size() if it exists.

◆ source() [1/2]

template<class Self_tp , class Make_pair_tp >
auto & mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::source ( )
inlineprivate

◆ source() [2/2]

template<class Self_tp , class Make_pair_tp >
const auto & mysql::ranges::Disjoint_pairs_interface< Self_tp, Make_pair_tp >::source ( ) const
inlineprivate

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