22 #include "pqxx/compiler-public.hxx" 23 #include "pqxx/compiler-internal-pre.hxx" 31 #include "pqxx/internal/result_data.hxx" 33 #include "pqxx/except" 49 class result_connection;
50 class result_creation;
51 class result_sql_cursor;
56 class const_result_iterator;
57 class const_reverse_result_iterator;
83 const internal::result_data, internal::freemem_result_data>
86 const internal::result_data, internal::freemem_result_data>
super;
102 result() throw () : super(), m_data(0) {}
104 super(rhs), m_data(rhs.m_data) {}
107 { super::operator=(rhs); m_data=rhs.m_data;
return *
this; }
113 bool operator==(
const result &)
const throw ();
115 {
return !operator==(rhs); }
118 const_reverse_iterator rbegin()
const;
119 const_reverse_iterator rend()
const;
121 const_iterator begin()
const throw ();
122 inline const_iterator end()
const throw ();
124 reference
front()
const throw () {
return tuple(
this,0); }
125 reference
back()
const throw () {
return tuple(
this,size()-1);}
127 size_type PQXX_PURE size()
const throw ();
128 bool PQXX_PURE empty()
const throw ();
129 size_type
capacity()
const throw () {
return size(); }
131 void swap(
result &)
throw ();
134 {
return tuple(
this, i); }
135 const tuple at(size_type)
const throw (
range_error);
137 void clear() throw () { super::reset(); m_data = 0; }
151 {
return column_number(Name.c_str());}
164 {
return column_type(column_number(ColName)); }
168 {
return column_type(column_number(ColName)); }
179 {
return column_table(column_number(ColName)); }
190 {
return table_column(column_number(ColName)); }
194 const PGSTD::string & PQXX_PURE query()
const throw ();
200 oid PQXX_PURE inserted_oid()
const;
206 size_type PQXX_PURE affected_rows()
const;
217 friend class
pqxx::internal::gate::result_creation;
218 result(internal::pq::PGresult *rhs,
220 const PGSTD::
string &Query,
222 void PQXX_PRIVATE CheckStatus() const;
224 friend class
pqxx::internal::gate::result_connection;
225 bool operator!() const throw () {
return !m_data; }
226 operator bool()
const throw () {
return m_data != 0; }
228 void PQXX_PRIVATE PQXX_NORETURN ThrowSQLError(
229 const PGSTD::string &Err,
230 const PGSTD::string &Query)
const;
231 int PQXX_PRIVATE PQXX_PURE errorposition()
const throw ();
232 PGSTD::string PQXX_PRIVATE StatusError()
const;
234 friend class pqxx::internal::gate::result_sql_cursor;
235 const char * PQXX_PURE CmdStatus()
const throw ();
238 pqxx::internal::pq::PGresult *m_data;
240 static const PGSTD::
string PQXX_PRIVATE s_empty_string;
250 public PGSTD::iterator<
251 PGSTD::random_access_iterator_tag,
290 const_result_iterator operator++(
int);
291 const_result_iterator &
operator++() { ++m_Index;
return *
this; }
292 const_result_iterator operator--(
int);
293 const_result_iterator &
operator--() { --m_Index;
return *
this; }
296 { m_Index = size_type(difference_type(m_Index) + i);
return *
this; }
298 { m_Index = size_type(difference_type (m_Index) - i);
return *
this; }
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;}
314 {
return m_Index>i.m_Index;}
316 {
return m_Index>=i.m_Index;}
323 inline const_result_iterator
operator+(difference_type)
const;
326 const_result_iterator);
327 inline const_result_iterator operator-(difference_type)
const;
328 inline difference_type operator-(const_result_iterator)
const;
340 private const_result_iterator
343 typedef const_result_iterator
super;
345 using iterator_type::iterator_category;
349 using iterator_type::value_type;
353 typedef const tuple &reference;
354 typedef tuple value_type;
359 const_result_iterator(rhs) {}
361 const const_result_iterator &rhs) :
362 const_result_iterator(rhs) { super::operator--(); }
364 const_result_iterator PQXX_PURE base()
const throw ();
370 using const_result_iterator::operator->;
371 using const_result_iterator::operator*;
380 { iterator_type::operator=(r);
return *
this; }
382 { iterator_type::operator--();
return *
this; }
385 { iterator_type::operator++();
return *
this; }
388 { iterator_type::operator-=(i);
return *
this; }
390 { iterator_type::operator+=(i);
return *
this; }
403 {
return rhs.const_result_iterator::operator-(*this); }
412 {
return iterator_type::operator==(rhs); }
415 {
return !operator==(rhs); }
418 {
return iterator_type::operator>(rhs); }
420 {
return iterator_type::operator>=(rhs); }
422 {
return iterator_type::operator<(rhs); }
424 {
return iterator_type::operator<=(rhs); }
451 template<
typename CHAR>
453 PGSTD::basic_ostream<CHAR> &S,
const pqxx::field &F)
455 S.write(F.
c_str(), PGSTD::streamsize(F.
size()));
468 {
return PGSTD::string(Obj.
c_str(), Obj.
size()); }
471 inline const_result_iterator
474 return const_result_iterator(
478 inline const_result_iterator
482 inline const_result_iterator
485 return const_result_iterator(
495 {
return const_result_iterator(
this, size()); }
506 #include "pqxx/compiler-internal-post.hxx" oid column_type(const std::string &ColName) const
Type of given column.
Definition: result.hxx:163
Result set containing data returned by a query or command.
Definition: result.hxx:81
Reference to one row in a result.
Definition: tuple.hxx:52
oid column_type(int ColNum) const
Type of given column.
Definition: result.hxx:159
bool operator<=(const const_result_iterator &i) const
Definition: result.hxx:311
bool operator!=(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:413
oid column_table(int ColNum) const
What table did this column come from?
Definition: result.hxx:174
bool operator>=(const const_result_iterator &i) const
Definition: result.hxx:315
Reference to a field in a result set.
Definition: field.hxx:43
const_result_iterator & operator-=(difference_type i)
Definition: result.hxx:297
const_result_iterator & operator--()
Definition: result.hxx:293
const_result_iterator operator-(difference_type) const
Definition: result.hxx:483
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:452
const_reverse_result_iterator operator++()
Definition: result.hxx:381
const_result_iterator const_iterator
Definition: result.hxx:91
const tuple * pointer
Definition: result.hxx:259
pqxx::field field
For backward compatibility only.
Definition: result.hxx:100
void clear()
Definition: result.hxx:137
const_result_iterator iterator_type
Definition: result.hxx:344
result()
Definition: result.hxx:102
const_result_iterator & operator+=(difference_type i)
Definition: result.hxx:295
pqxx::tuple reference
Definition: result.hxx:90
const_iterator pointer
Definition: result.hxx:92
bool operator==(const const_result_iterator &i) const
Definition: result.hxx:305
result & operator=(const result &rhs)
Definition: result.hxx:106
size_t size_type
Definition: field.hxx:46
difference_type operator-(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:401
const_reverse_result_iterator operator+(difference_type i) const
Definition: result.hxx:397
result::difference_type difference_type
Definition: result.hxx:262
tuple::size_type table_column(const std::string &ColName) const
What column in its table did this column come from?
Definition: result.hxx:189
const_reverse_result_iterator & operator-=(difference_type i)
Definition: result.hxx:389
Reverse iterator for result. Use as result::const_reverse_iterator.
Definition: result.hxx:339
void from_string(const field &F, T &Obj)
Convert a field's string contents to another type.
Definition: result.hxx:462
const_reverse_result_iterator & operator+=(difference_type i)
Definition: result.hxx:387
bool operator>(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:421
const_reverse_result_iterator(const const_result_iterator &rhs)
Definition: result.hxx:360
reference operator*() const
Definition: result.hxx:283
size_type capacity() const
Definition: result.hxx:129
Iterator for rows (tuples) in a result. Use as result::const_iterator.
Definition: result.hxx:249
const_result_iterator operator+(difference_type) const
Definition: result.hxx:472
oid column_table(const std::string &ColName) const
What table did this column come from?
Definition: result.hxx:178
const_result_iterator & operator++()
Definition: result.hxx:291
bool operator!=(const const_result_iterator &i) const
Definition: result.hxx:307
const_result_iterator operator+(result::difference_type o, const_result_iterator i)
Definition: result.hxx:479
result::size_type size_type
Definition: result.hxx:261
result(const result &rhs)
Definition: result.hxx:103
tuple_size_type size_type
Definition: tuple.hxx:55
tuple::size_type table_column(int ColNum) const
What column in its table did this column come from?
Definition: result.hxx:185
bool operator<(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:417
const_iterator end() const
Definition: result.hxx:494
Reference-counted smart pointer to libpq-allocated object.
Definition: util.hxx:559
pointer operator->() const
Definition: result.hxx:282
const_result_iterator(const tuple &t)
Definition: result.hxx:265
pqxx::tuple tuple
For backward compatibility only.
Definition: result.hxx:98
bool operator>(const const_result_iterator &i) const
Definition: result.hxx:313
std::string to_string(const field &Obj)
Convert a field to a string.
Definition: result.hxx:467
const_result_iterator super
Definition: result.hxx:343
bool operator<(const const_result_iterator &i) const
Definition: result.hxx:309
size_t num() const
Definition: tuple.hxx:166
bool operator==(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:410
size_type size() const
Definition: field.cxx:86
const_reverse_result_iterator(const const_reverse_result_iterator &rhs)
Definition: result.hxx:357
const_result_iterator()
Definition: result.hxx:264
const_reverse_result_iterator & operator--()
Definition: result.hxx:384
tuple::size_type column_number(const std::string &Name) const
Number of given column (throws exception if it doesn't exist)
Definition: result.hxx:150
reference back() const
Definition: result.hxx:125
bool operator<=(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:419
bool operator!=(const result &rhs) const
Definition: result.hxx:114
const tuple operator[](size_type i) const
Definition: result.hxx:133
const_reverse_result_iterator & operator=(const const_reverse_result_iterator &r)
Definition: result.hxx:378
oid column_type(const char ColName[]) const
Type of given column.
Definition: result.hxx:167
signed long difference_type
Definition: result.hxx:89
reference front() const
Definition: result.hxx:124
const char * c_str() const
Read as plain C string.
Definition: field.cxx:74
unsigned long size_type
Definition: result.hxx:88
tuple reference
Definition: result.hxx:260
bool operator>=(const const_reverse_result_iterator &rhs) const
Definition: result.hxx:423
const_reverse_iterator reverse_iterator
Definition: result.hxx:95
const_reverse_result_iterator operator-(difference_type i)
Definition: result.hxx:399
The home of all libpqxx classes, functions, templates, etc.
Definition: basic_connection.hxx:35
const_reverse_result_iterator const_reverse_iterator
Definition: result.hxx:94
Something is out of range, similar to std::out_of_range.
Definition: except.hxx:203
const_iterator iterator
Definition: result.hxx:93
const_result_iterator PQXX_PURE base() const
Definition: result.cxx:386