RowIterator positioning

This commit is contained in:
Aleksandar Fabijanic 2008-08-25 12:42:31 +00:00
parent 5bd23e62b3
commit c94cd468de
4 changed files with 12 additions and 9 deletions

View File

@ -424,7 +424,7 @@ private:
/// Sets the filter for the RecordSet.
RowFilter* getFilter();
const RowFilter* getFilter() const;
/// Returns the filter associated with the RecordSet.
std::size_t _currentRow;
@ -571,11 +571,12 @@ inline std::ostream& RecordSet::copyNames(std::ostream& os) const
}
inline RowFilter* RecordSet::getFilter()
inline const RowFilter* RecordSet::getFilter() const
{
return _pFilter;
}
/* TODO
namespace Keywords {

View File

@ -66,8 +66,10 @@ public:
static const int POSITION_END;
/// End position indicator.
RowIterator(RecordSet* pRecordSet, bool positionEnd = false);
/// Creates the RowIterator and positions it at the beginning.
RowIterator(RecordSet* pRecordSet, bool positionEnd);
/// Creates the RowIterator and positions it at the end of
/// the recordset if positionEnd is true. Otherwise, it is
/// positioned at the beginning.
RowIterator(const RowIterator& other);
/// Creates a copy of other RowIterator.

View File

@ -54,7 +54,7 @@ namespace Data {
RecordSet::RecordSet(const Statement& rStatement):
Statement(rStatement),
_currentRow(0),
_pBegin(new RowIterator(this)),
_pBegin(new RowIterator(this, 0 == extractionCount())),
_pEnd(new RowIterator(this, true)),
_pFilter(0)
{
@ -66,7 +66,7 @@ RecordSet::RecordSet(Session& rSession,
RowFormatter* pRowFormatter):
Statement((rSession << query, now)),
_currentRow(0),
_pBegin(new RowIterator(this)),
_pBegin(new RowIterator(this, 0 == extractionCount())),
_pEnd(new RowIterator(this, true)),
_pFilter(0)
{
@ -77,7 +77,7 @@ RecordSet::RecordSet(Session& rSession,
RecordSet::RecordSet(const RecordSet& other):
Statement(other.impl().duplicate()),
_currentRow(other._currentRow),
_pBegin(new RowIterator(this)),
_pBegin(new RowIterator(this, 0 == extractionCount())),
_pEnd(new RowIterator(this, true)),
_pFilter(other._pFilter)
{
@ -163,7 +163,7 @@ Row& RecordSet::row(std::size_t pos)
if (pos > rowCount() - 1)
throw RangeException("Invalid recordset row requested.");
RowMap::iterator it = _rowMap.find(pos);
RowMap::const_iterator it = _rowMap.find(pos);
Row* pRow = 0;
std::size_t columns = columnCount();
if (it == _rowMap.end())

View File

@ -50,7 +50,7 @@ const int RowIterator::POSITION_END = std::numeric_limits<std::size_t>::max();
RowIterator::RowIterator(RecordSet* pRecordSet, bool positionEnd):
_pRecordSet(pRecordSet),
_position((0 == pRecordSet->totalRowCount()) || positionEnd ? POSITION_END : 0)
_position(positionEnd ? POSITION_END : 0)
{
}