libpqxx
|
Iterator for rows in a result. Use as result::const_iterator. More...
#include <result_iterator.hxx>
Public Types | |
using | iterator_category = std::random_access_iterator_tag |
using | value_type = const row |
using | pointer = const row * |
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 | |
const_result_iterator (const row &t) noexcept | |
Dereferencing operators | |
pointer | operator-> () const |
reference | operator* () const |
Manipulations | |
const_result_iterator | operator++ (int) |
const_result_iterator & | operator++ () |
const_result_iterator | operator-- (int) |
const_result_iterator & | operator-- () |
const_result_iterator & | operator+= (difference_type i) |
const_result_iterator & | operator-= (difference_type i) |
Comparisons | |
bool | operator== (const const_result_iterator &i) const |
bool | operator!= (const const_result_iterator &i) const |
bool | operator< (const const_result_iterator &i) const |
bool | operator<= (const const_result_iterator &i) const |
bool | operator> (const const_result_iterator &i) const |
bool | operator>= (const const_result_iterator &i) const |
Public Member Functions inherited from pqxx::row | |
row ()=default | |
row (result r, size_t i) noexcept | |
~row () noexcept=default | |
const_iterator | begin () const noexcept |
const_iterator | cbegin () const noexcept |
const_iterator | end () const noexcept |
const_iterator | cend () const noexcept |
size_type | size () const noexcept |
void | swap (row &) noexcept |
size_t | rownumber () const noexcept |
Row number, assuming this is a real row and not end()/rend(). More... | |
size_t | num () const |
row | slice (size_type Begin, size_type End) const |
PQXX_PURE bool | empty () const noexcept |
PQXX_PURE bool | operator== (const row &) const noexcept |
bool | operator!= (const row &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[] (int) const noexcept |
reference | operator[] (const char[]) const |
reference | operator[] (const std::string &) const |
reference | at (size_type) const |
reference | at (int) const |
reference | at (const char[]) const |
reference | at (const std::string &) const |
size_type | column_number (const std::string &ColName) const |
Number of given column (throws exception if it doesn't exist) More... | |
size_type | column_number (const char[]) const |
Number of given column (throws exception if it doesn't exist) More... | |
oid | column_type (size_type) const |
Type of given column. More... | |
oid | column_type (int ColNum) const |
Type of given column. More... | |
oid | column_type (const std::string &ColName) const |
Type of given column. More... | |
oid | column_type (const char ColName[]) const |
Type of given column. More... | |
oid | column_table (size_type ColNum) const |
What table did this column come from? More... | |
oid | column_table (int ColNum) const |
What table did this column come from? More... | |
oid | column_table (const std::string &ColName) 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 (int ColNum) const |
What column number in its table did this result column come from? More... | |
size_type | table_column (const std::string &ColName) const |
What column number in its table did this result column come from? More... | |
Friends | |
class | pqxx::result |
Arithmetic operators | |
const_result_iterator | operator+ (difference_type, const_result_iterator) |
const_result_iterator | operator+ (difference_type) const |
const_result_iterator | operator- (difference_type) const |
difference_type | operator- (const_result_iterator) const |
Additional Inherited Members | |
Protected Attributes inherited from pqxx::row | |
result | m_result |
Result set of which this is one row. More... | |
long | 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... | |
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.
using pqxx::const_result_iterator::iterator_category = std::random_access_iterator_tag |
using pqxx::const_result_iterator::pointer = const row * |
using pqxx::const_result_iterator::value_type = const row |
|
noexcept |
|
noexcept |
bool pqxx::const_result_iterator::operator!= | ( | const const_result_iterator & | i | ) | const |
reference pqxx::const_result_iterator::operator* | ( | ) | const |
const_result_iterator pqxx::const_result_iterator::operator+ | ( | result::difference_type | o | ) | const |
pqxx::const_result_iterator pqxx::const_result_iterator::operator++ | ( | int | ) |
const_result_iterator& pqxx::const_result_iterator::operator++ | ( | ) |
const_result_iterator& pqxx::const_result_iterator::operator+= | ( | difference_type | i | ) |
const_result_iterator pqxx::const_result_iterator::operator- | ( | result::difference_type | o | ) | const |
result::difference_type pqxx::const_result_iterator::operator- | ( | const_result_iterator | i | ) | const |
References pqxx::row::num().
pqxx::const_result_iterator pqxx::const_result_iterator::operator-- | ( | int | ) |
const_result_iterator& pqxx::const_result_iterator::operator-- | ( | ) |
const_result_iterator& pqxx::const_result_iterator::operator-= | ( | difference_type | i | ) |
pointer pqxx::const_result_iterator::operator-> | ( | ) | const |
The iterator "points to" its own row, which is also itself. This allows a result to be addressed as a two-dimensional container without going through the intermediate step of dereferencing the iterator. I hope this works out to be similar to C pointer/array semantics in useful cases.
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.
bool pqxx::const_result_iterator::operator< | ( | const const_result_iterator & | i | ) | const |
bool pqxx::const_result_iterator::operator<= | ( | const const_result_iterator & | i | ) | const |
bool pqxx::const_result_iterator::operator== | ( | const const_result_iterator & | i | ) | const |
bool pqxx::const_result_iterator::operator> | ( | const const_result_iterator & | i | ) | const |
bool pqxx::const_result_iterator::operator>= | ( | const const_result_iterator & | i | ) | const |
References pqxx::operator+().
|
friend |
|
friend |