libpqxx  7.6.1
pqxx::const_result_iterator Class Reference

Iterator for rows in a result. Use as result::const_iterator. More...

#include <result_iterator.hxx>

Inheritance diagram for pqxx::const_result_iterator:

Public Types

using iterator_category = std::random_access_iterator_tag
using value_type = row const
using pointer = row const *
using reference = row
using size_type = result_size_type
using difference_type = result_difference_type
- Public Types inherited from pqxx::row
using size_type = row_size_type
using difference_type = row_difference_type
using const_iterator = const_row_iterator
using iterator = const_iterator
using reference = field
using pointer = const_row_iterator
using const_reverse_iterator = const_reverse_row_iterator
using reverse_iterator = const_reverse_iterator

Public Member Functions

 const_result_iterator () noexcept=default
 Create an iterator, but in an unusable state. More...
 const_result_iterator (const_result_iterator const &) noexcept=default
 Copy an iterator. More...
 const_result_iterator (const_result_iterator &&) noexcept=default
 Move an iterator. More...
 const_result_iterator (row const &t) noexcept
 Begin iterating a row. More...
Dereferencing operators

An iterator "points to" its own row, which is also itself. This makes it easy to address a result as a two-dimensional container, without going through the intermediate step of dereferencing the iterator. It makes the interface similar to C pointer/array semantics.

IIRC Alex Stepanov, the inventor of the STL, once remarked that having this as standard behaviour for pointers would be useful in some algorithms. So even if this makes me look foolish, I would seem to be in distinguished company.

pointer operator-> () const
 Dereference the iterator. More...
reference operator* () const
 Dereference the iterator. More...
const_result_iteratoroperator= (const_result_iterator const &rhs)
const_result_iteratoroperator= (const_result_iterator &&rhs)
const_result_iterator operator++ (int)
const_result_iteratoroperator++ ()
const_result_iterator operator-- (int)
const_result_iteratoroperator-- ()
const_result_iteratoroperator+= (difference_type i)
const_result_iteratoroperator-= (difference_type i)
void swap (const_result_iterator &other) noexcept
 Interchange two iterators in an exception-safe manner. More...
bool operator== (const_result_iterator const &i) const
bool operator!= (const_result_iterator const &i) const
bool operator< (const_result_iterator const &i) const
bool operator<= (const_result_iterator const &i) const
bool operator> (const_result_iterator const &i) const
bool operator>= (const_result_iterator const &i) const
- Public Member Functions inherited from pqxx::row
 row ()=default
 row (row &&)=default
 row (row const &)=default
rowoperator= (row const &)=default
rowoperator= (row &&)=default
const_iterator begin () const noexcept
const_iterator cbegin () const noexcept
const_iterator end () const noexcept
const_iterator cend () const noexcept
result::size_type num () const
row slice (size_type sbegin, size_type send) const
PQXX_PURE bool empty () const noexcept
 Is this a row without fields? Can only happen to a slice. More...
template<typename Tuple >
void to (Tuple &t) const
 Extract entire row's values into a tuple. More...
template<typename... TYPE>
std::tuple< TYPE... > as () const
PQXX_PURE bool operator== (row const &) const noexcept
bool operator!= (row const &rhs) const noexcept
reference front () const noexcept
reference back () const noexcept
const_reverse_row_iterator rbegin () const
const_reverse_row_iterator crbegin () const
const_reverse_row_iterator rend () const
const_reverse_row_iterator crend () const
reference operator[] (size_type) const noexcept
reference operator[] (zview col_name) const
reference at (size_type) const
reference at (zview col_name) const
size_type size () const noexcept
void swap (row &) noexcept
result::size_type rownumber () const noexcept
 Row number, assuming this is a real row and not end()/rend(). More...
size_type column_number (zview col_name) const
 Number of given column (throws exception if it doesn't exist). More...
oid column_type (size_type) const
 Return a column's type. More...
oid column_type (zview col_name) const
 Return a column's type. More...
oid column_table (size_type col_num) const
 What table did this column come from? More...
oid column_table (zview col_name) const
 What table did this column come from? More...
size_type table_column (size_type) const
 What column number in its table did this result column come from? More...
size_type table_column (zview col_name) const
 What column number in its table did this result column come from? More...


class pqxx::result

Arithmetic operators

const_result_iterator operator+ (difference_type, const_result_iterator const &)
const_result_iterator operator+ (difference_type) const
const_result_iterator operator- (difference_type) const
difference_type operator- (const_result_iterator const &) const

Additional Inherited Members

- Protected Member Functions inherited from pqxx::row
 row (result const &r, result_size_type i) noexcept
void check_size (size_type expected) const
 Throw usage_error if row size is not expected. More...
template<typename Tuple >
void convert (Tuple &t) const
 Convert entire row to tuple fields, without checking row size. More...
- Protected Attributes inherited from pqxx::row
result m_result
 Result set of which this is one row. More...
result::size_type m_index = 0
 Row number. More...
size_type m_begin = 0
 First column in slice. This row ignores lower-numbered columns. More...
size_type m_end = 0
 End column in slice. This row only sees lower-numbered columns. More...

Detailed Description

Iterator for rows in a result. Use as result::const_iterator.

A result, once obtained, cannot be modified. Therefore there is no plain iterator type for result. However its const_iterator type can be used to inspect its rows without changing them.

Member Typedef Documentation

◆ difference_type

◆ iterator_category

using pqxx::const_result_iterator::iterator_category = std::random_access_iterator_tag

◆ pointer

◆ reference

◆ size_type

◆ value_type

Constructor & Destructor Documentation

◆ const_result_iterator() [1/4]

pqxx::const_result_iterator::const_result_iterator ( )

Create an iterator, but in an unusable state.

◆ const_result_iterator() [2/4]

pqxx::const_result_iterator::const_result_iterator ( const_result_iterator const &  )

Copy an iterator.

◆ const_result_iterator() [3/4]

pqxx::const_result_iterator::const_result_iterator ( const_result_iterator &&  )

Move an iterator.

◆ const_result_iterator() [4/4]

pqxx::const_result_iterator::const_result_iterator ( row const &  t)

Begin iterating a row.

Member Function Documentation

◆ operator!=()

bool pqxx::const_result_iterator::operator!= ( const_result_iterator const &  i) const

References pqxx::row::m_index.

◆ operator*()

reference pqxx::const_result_iterator::operator* ( ) const

Dereference the iterator.

References pqxx::row::at(), pqxx::row::back(), pqxx::row::front(), and pqxx::row::rownumber().

◆ operator+()

const_result_iterator pqxx::const_result_iterator::operator+ ( result::difference_type  o) const

◆ operator++() [1/2]

pqxx::const_result_iterator pqxx::const_result_iterator::operator++ ( int  )

◆ operator++() [2/2]

const_result_iterator& pqxx::const_result_iterator::operator++ ( )

◆ operator+=()

const_result_iterator& pqxx::const_result_iterator::operator+= ( difference_type  i)

◆ operator-() [1/2]

const_result_iterator pqxx::const_result_iterator::operator- ( result::difference_type  o) const

◆ operator-() [2/2]

result::difference_type pqxx::const_result_iterator::operator- ( const_result_iterator const &  i) const

References pqxx::row::num().

◆ operator--() [1/2]

pqxx::const_result_iterator pqxx::const_result_iterator::operator-- ( int  )

◆ operator--() [2/2]

const_result_iterator& pqxx::const_result_iterator::operator-- ( )

◆ operator-=()

const_result_iterator& pqxx::const_result_iterator::operator-= ( difference_type  i)

◆ operator->()

pointer pqxx::const_result_iterator::operator-> ( ) const

Dereference the iterator.

◆ operator<()

bool pqxx::const_result_iterator::operator< ( const_result_iterator const &  i) const

References pqxx::row::m_index.

◆ operator<=()

bool pqxx::const_result_iterator::operator<= ( const_result_iterator const &  i) const

References pqxx::row::m_index.

◆ operator=() [1/2]

const_result_iterator& pqxx::const_result_iterator::operator= ( const_result_iterator const &  rhs)

◆ operator=() [2/2]

const_result_iterator& pqxx::const_result_iterator::operator= ( const_result_iterator &&  rhs)

◆ operator==()

bool pqxx::const_result_iterator::operator== ( const_result_iterator const &  i) const

References pqxx::row::m_index.

◆ operator>()

bool pqxx::const_result_iterator::operator> ( const_result_iterator const &  i) const

References pqxx::row::m_index.

◆ operator>=()

bool pqxx::const_result_iterator::operator>= ( const_result_iterator const &  i) const

◆ swap()

void pqxx::const_result_iterator::swap ( const_result_iterator other)

Interchange two iterators in an exception-safe manner.

References pqxx::row::swap().

Referenced by pqxx::const_reverse_result_iterator::swap().

Friends And Related Function Documentation

◆ operator+

const_result_iterator operator+ ( result::difference_type  o,
const_result_iterator const &  i 

◆ pqxx::result

friend class pqxx::result

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