pgLab/pgsql/Pgsql_Row.h

85 lines
1.4 KiB
C
Raw Normal View History

#ifndef PGSQL_ROW_H
#define PGSQL_ROW_H
#include "Pgsql_Value.h"
namespace Pgsql {
class IResult;
/** \brief A reference to a specific row from a result.
*
* As it is a reference its contents won't be valid after its associated result has
* been destroyed.
*/
class Row {
public:
class const_iterator {
public:
const_iterator(const Row &r, int col)
: m_row(r)
, m_col(col)
{}
const_iterator operator++()
{
const_iterator t(*this);
++m_col;
return t;
}
const_iterator& operator++(int)
{
++m_col;
return *this;
}
bool operator==(const const_iterator &rhs)
{
return m_row == rhs.m_row && m_col == rhs.m_col;
}
bool operator!=(const const_iterator &rhs)
{
return !operator==(rhs);
}
const Value operator*()
{
return m_row.get(m_col);
}
const Value operator->()
{
return m_row.get(m_col);
}
private:
const Row &m_row;
int m_col;
};
Row(const IResult &result, int row);
bool next();
bool operator==(const Row& rhs) const;
Value get(int col) const;
//Value get(const char *colname) const;
//bool get(int col, QString &s);
const_iterator begin() const
{
return const_iterator(*this, 0);
}
const_iterator end() const;
private:
const IResult& m_result;
int m_row;
};
} // end namespace Pgsql
#endif // PGSQL_ROW_H