10#include <Pt/SmartPtr.h>
11#include <Pt/Db/IResult.h>
46 typedef std::size_t size_type;
48 typedef Row value_type;
74 size_type
size()
const {
return _result->size(); }
86 Row operator[] (size_type row_num)
const;
110 typedef std::random_access_iterator_tag iterator_category;
111 typedef Row value_type;
112 typedef std::ptrdiff_t difference_type;
113 typedef const Row* pointer;
114 typedef const Row& reference;
116 typedef const value_type& const_reference;
117 typedef const value_type* const_pointer;
124 void setOffset(size_type off)
130 if (_offset < _result.size())
131 _current = _result.getRow(_offset);
137 ConstIterator(
const Result& r, size_type off)
141 if (_offset < r.
size())
142 _current = r.
getRow(_offset);
145 bool operator== (
const ConstIterator& it)
const
146 {
return _offset == it._offset; }
148 bool operator!= (
const ConstIterator& it)
const
149 {
return !operator== (it); }
151 ConstIterator& operator++()
152 { setOffset(_offset + 1);
return *
this; }
154 ConstIterator operator++(
int)
156 ConstIterator ret = *
this;
157 setOffset(_offset + 1);
161 ConstIterator operator--()
162 { setOffset(_offset - 1);
return *
this; }
164 ConstIterator operator--(
int)
166 ConstIterator ret = *
this;
167 setOffset(_offset - 1);
171 const_reference operator*()
const
174 const_pointer operator->()
const
175 {
return &_current; }
177 ConstIterator& operator+= (difference_type n)
179 setOffset(_offset + n);
183 ConstIterator operator+ (difference_type n)
const
185 ConstIterator it(*
this);
190 ConstIterator& operator-= (difference_type n)
192 setOffset(_offset - n);
196 ConstIterator operator- (difference_type n)
const
198 ConstIterator it(*
this);
203 difference_type operator- (
const ConstIterator& it)
const
204 {
return _offset - it._offset; }
Buffered query-result backend.
Definition IResult.h:24
Random-access iterator over the rows of a Result.
Definition Result.h:108
size_type getFieldCount() const
Returns the number of columns.
Definition Result.h:82
Row getRow(size_type row_num) const
Returns the row at row_num without range checking.
size_type size() const
Returns the number of rows.
Definition Result.h:74
bool operator!() const
Returns true if this object is not bound to a result.
Definition Result.h:98
bool empty() const
Returns true if this result has no rows.
Definition Result.h:78
ConstIterator end() const
Returns a random-access iterator past the last row.
Result()
Creates an unbound result.
Definition Result.h:56
ConstIterator begin() const
Returns a random-access iterator to the first row.
Result(IResult *res)
Takes ownership of the backend res.
Definition Result.h:60
Value getValue(size_type row_num, size_type field_num) const
Returns the value at row_num, field_num without range checking.
const IResult * getImpl() const
Returns the backend implementation.
Definition Result.h:102
One row of a buffered query result.
Definition Row.h:34
One column value of a query result.
Definition Value.h:35
Policy based smart pointer.
Definition SmartPtr.h:462
Portable SQL database access.
Core module.
Definition Allocator.h:33