22 #include "pqxx/compiler-public.hxx"
23 #include "pqxx/compiler-internal-pre.hxx"
28 #include "pqxx/internal/result_data.hxx"
30 #include "pqxx/except"
46 class result_connection;
47 class result_creation;
48 class result_sql_cursor;
53 class const_result_iterator;
54 class const_reverse_result_iterator;
80 const internal::result_data, internal::freemem_result_data>
83 const internal::result_data, internal::freemem_result_data>
super;
96 super(rhs), m_data(rhs.m_data) {}
99 { super::operator=(rhs); m_data=rhs.m_data;
return *
this; }
105 bool operator==(
const result &) const PQXX_NOEXCEPT;
106 bool operator!=(const
result &rhs) const PQXX_NOEXCEPT
107 {
return !operator==(rhs); }
110 const_reverse_iterator rbegin()
const;
111 const_reverse_iterator crbegin()
const;
112 const_reverse_iterator rend()
const;
113 const_reverse_iterator crend()
const;
115 const_iterator begin() const PQXX_NOEXCEPT;
116 const_iterator cbegin() const PQXX_NOEXCEPT;
117 inline const_iterator end() const PQXX_NOEXCEPT;
118 inline const_iterator cend() const PQXX_NOEXCEPT;
123 PQXX_PURE size_type size() const PQXX_NOEXCEPT;
124 PQXX_PURE
bool empty() const PQXX_NOEXCEPT;
125 size_type capacity() const PQXX_NOEXCEPT {
return size(); }
127 void swap(
result &) PQXX_NOEXCEPT;
130 {
return row(
this, i); }
131 const row at(size_type)
const;
133 void clear() PQXX_NOEXCEPT { super::reset(); m_data = 0; }
143 row::size_type column_number(const
char ColName[]) const;
147 {
return column_number(Name.c_str());}
160 {
return column_type(column_number(ColName)); }
164 {
return column_type(column_number(ColName)); }
175 {
return column_table(column_number(ColName)); }
186 {
return table_column(column_number(ColName)); }
190 PQXX_PURE
const std::string &query() const PQXX_NOEXCEPT;
196 PQXX_PURE oid inserted_oid() const;
202 PQXX_PURE size_type affected_rows() const;
211 row::size_type) const PQXX_NOEXCEPT;
213 friend class pqxx::internal::gate::result_creation;
214 result(internal::pq::PGresult *rhs,
216 const std::
string &Query,
218 PQXX_PRIVATE
void CheckStatus() const;
220 friend class pqxx::internal::gate::result_connection;
221 bool operator!() const PQXX_NOEXCEPT {
return !m_data; }
222 operator bool() const PQXX_NOEXCEPT {
return m_data != 0; }
224 PQXX_NORETURN PQXX_PRIVATE
void ThrowSQLError(
225 const std::string &Err,
226 const std::string &Query)
const;
227 PQXX_PRIVATE PQXX_PURE
int errorposition() const PQXX_NOEXCEPT;
228 PQXX_PRIVATE std::
string StatusError() const;
230 friend class pqxx::internal::gate::result_sql_cursor;
231 PQXX_PURE const
char *CmdStatus() const PQXX_NOEXCEPT;
234 pqxx::internal::pq::PGresult *m_data;
236 PQXX_PRIVATE static const std::
string s_empty_string;
247 std::random_access_iterator_tag,
286 const_result_iterator operator++(
int);
287 const_result_iterator &
operator++() { ++m_Index;
return *
this; }
288 const_result_iterator operator--(
int);
289 const_result_iterator &
operator--() { --m_Index;
return *
this; }
292 { m_Index = size_type(difference_type(m_Index) + i);
return *
this; }
294 { m_Index = size_type(difference_type(m_Index) - i);
return *
this; }
302 {
return m_Index==i.m_Index;}
304 {
return m_Index!=i.m_Index;}
306 {
return m_Index<i.m_Index;}
308 {
return m_Index<=i.m_Index;}
310 {
return m_Index>i.m_Index;}
312 {
return m_Index>=i.m_Index;}
319 inline const_result_iterator
operator+(difference_type)
const;
322 const_result_iterator);
323 inline const_result_iterator operator-(difference_type)
const;
324 inline difference_type operator-(const_result_iterator)
const;
342 using iterator_type::iterator_category;
346 using iterator_type::value_type;
351 typedef row value_type;
377 { iterator_type::operator=(r);
return *
this; }
379 { iterator_type::operator--();
return *
this; }
382 { iterator_type::operator++();
return *
this; }
385 { iterator_type::operator-=(i);
return *
this; }
387 { iterator_type::operator+=(i);
return *
this; }
400 {
return rhs.const_result_iterator::operator-(*this); }
409 {
return iterator_type::operator==(rhs); }
412 {
return !operator==(rhs); }
415 {
return iterator_type::operator>(rhs); }
417 {
return iterator_type::operator>=(rhs); }
419 {
return iterator_type::operator<(rhs); }
421 {
return iterator_type::operator<=(rhs); }
448 template<
typename CHAR>
452 S.write(F.
c_str(), std::streamsize(F.
size()));
465 {
return std::string(Obj.
c_str(), Obj.
size()); }
468 inline const_result_iterator
479 inline const_result_iterator
507 #include "pqxx/compiler-internal-post.hxx"
PQXX_PURE const_result_iterator base() const PQXX_NOEXCEPT
Definition: result.cxx:407
row_size_type size_type
Definition: row.hxx:55
bool operator>(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:418
row::size_type table_column(const std::string &ColName) const
What column in its table did this column come from?
Definition: result.hxx:185
void clear() PQXX_NOEXCEPT
Definition: result.hxx:133
const_result_iterator super
Definition: result.hxx:340
oid column_type(const char ColName[]) const
Type of given column.
Definition: result.hxx:163
Reverse iterator for result. Use as result::const_reverse_iterator.
Definition: result.hxx:336
const_reverse_result_iterator(const const_reverse_result_iterator &rhs)
Definition: result.hxx:354
unsigned long size_type
Definition: result.hxx:85
const_reverse_iterator reverse_iterator
Definition: result.hxx:92
const_result_iterator iterator_type
Definition: result.hxx:341
difference_type operator-(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:398
const char * c_str() const
Read as plain C string.
Definition: field.cxx:72
const_reverse_result_iterator operator+(difference_type i) const
Definition: result.hxx:394
const_result_iterator() PQXX_NOEXCEPT
Definition: result.hxx:260
const_reverse_result_iterator const_reverse_iterator
Definition: result.hxx:91
const_result_iterator operator+(result::difference_type o, const_result_iterator i)
Definition: result.hxx:476
const_iterator iterator
Definition: result.hxx:90
row reference
Definition: result.hxx:87
const_iterator end() const PQXX_NOEXCEPT
Definition: result.hxx:491
Reference to one row in a result.
Definition: row.hxx:52
oid column_table(const std::string &ColName) const
What table did this column come from?
Definition: result.hxx:174
const row * pointer
Definition: result.hxx:255
Reference to a field in a result set.
Definition: field.hxx:51
bool operator<=(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:416
const_result_iterator operator+(difference_type) const
Definition: result.hxx:469
bool operator<=(const const_result_iterator &i) const
Definition: result.hxx:307
const_reverse_result_iterator(const const_result_iterator &rhs)
Definition: result.hxx:357
const_reverse_result_iterator & operator+=(difference_type i)
Definition: result.hxx:384
Iterator for rows in a result. Use as result::const_iterator.
Definition: result.hxx:245
signed long difference_type
Definition: result.hxx:86
result(const result &rhs) PQXX_NOEXCEPT
Definition: result.hxx:95
const_reverse_result_iterator operator++()
Definition: result.hxx:378
const_reverse_result_iterator & operator-=(difference_type i)
Definition: result.hxx:386
const_reverse_result_iterator & operator--()
Definition: result.hxx:381
Iterator for fields in a row. Use as row::const_iterator.
Definition: row.hxx:212
const_result_iterator & operator-=(difference_type i)
Definition: result.hxx:293
const_reverse_result_iterator operator-(difference_type i)
Definition: result.hxx:396
result & operator=(const result &rhs) PQXX_NOEXCEPT
Definition: result.hxx:98
oid column_type(const std::string &ColName) const
Type of given column.
Definition: result.hxx:159
const_iterator pointer
Definition: result.hxx:89
std::basic_ostream< CHAR > & operator<<(std::basic_ostream< CHAR > &S, const pqxx::field &F)
Write a result field to any type of stream.
Definition: result.hxx:449
const_result_iterator & operator++()
Definition: result.hxx:287
bool operator<(const const_result_iterator &i) const
Definition: result.hxx:305
bool operator>(const const_result_iterator &i) const
Definition: result.hxx:309
reference operator*() const
Definition: result.hxx:279
const_result_iterator(const row &t) PQXX_NOEXCEPT
Definition: result.hxx:261
const_result_iterator operator-(difference_type) const
Definition: result.hxx:480
size_t num() const
Definition: row.hxx:179
bool operator==(const const_reverse_result_iterator &rhs) const PQXX_NOEXCEPT
Definition: result.hxx:407
const_iterator cend() const PQXX_NOEXCEPT
Definition: result.hxx:495
const_result_iterator const_iterator
Definition: result.hxx:88
result::size_type size_type
Definition: result.hxx:257
bool operator==(const const_result_iterator &i) const
Definition: result.hxx:301
const_result_iterator & operator--()
Definition: result.hxx:289
reference back() const PQXX_NOEXCEPT
Definition: result.hxx:121
size_type size() const PQXX_NOEXCEPT
Return number of bytes taken up by the field's value.
Definition: field.cxx:84
result::difference_type difference_type
Definition: result.hxx:258
oid column_table(int ColNum) const
What table did this column come from?
Definition: result.hxx:170
const_result_iterator & operator+=(difference_type i)
Definition: result.hxx:291
pointer operator->() const
Definition: result.hxx:278
bool operator>=(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:420
row::size_type table_column(int ColNum) const
What column in its table did this column come from?
Definition: result.hxx:181
result() PQXX_NOEXCEPT
Definition: result.hxx:94
Result set containing data returned by a query or command.
Definition: result.hxx:78
void from_string(const field &F, T &Obj)
Convert a field's string contents to another type.
Definition: result.hxx:459
oid column_type(int ColNum) const
Type of given column.
Definition: result.hxx:155
bool operator<(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:414
bool operator!=(const const_reverse_result_iterator &rhs) const PQXX_NOEXCEPT
Definition: result.hxx:410
std::string to_string(const field &Obj)
Convert a field to a string.
Definition: result.hxx:464
bool operator>=(const const_result_iterator &i) const
Definition: result.hxx:311
row reference
Definition: result.hxx:256
bool operator!=(const const_result_iterator &i) const
Definition: result.hxx:303
Reference-counted smart pointer to libpq-allocated object.
Definition: util.hxx:551