56 virtual ~DBResult() {}
58 typedef std::vector<std::string> COL;
59 typedef std::deque<COL> ROW;
65 operator bool()
const;
70 void setColName(
int index,
const std::string& name );
76 std::string getColName(
int index );
80 static int as_int(
const DBResult::COL::iterator& it );
81 static double as_double(
const DBResult::COL::iterator& it );
82 static std::string as_string(
const DBResult::COL::iterator& it );
83 static size_t num_cols(
const DBResult::iterator& it );
90 std::unordered_map<std::string, int> colname;
97 using iterator_category = std::bidirectional_iterator_tag;
98 using value_type = DBResult::ROW::value_type;
99 using difference_type = DBResult::ROW::difference_type;
100 using pointer = DBResult::ROW::pointer;
101 using reference = DBResult::ROW::reference;
103 std::string as_string(
const char* name )
const;
104 std::string as_string(
const std::string& name )
const;
105 int as_int(
const std::string& name )
const;
106 double as_double(
const std::string& name )
const;
108 std::string as_string(
int col )
const;
109 int as_int(
int col )
const;
110 double as_double(
int col )
const;
112 size_t num_cols()
const;
114 typename DBRowIterator::pointer operator->();
115 typename DBRowIterator::reference operator*()
const;
117 DBRowIterator(
const DBRowIterator& it );
119 bool operator!=(DBRowIterator
const& )
const;
120 bool operator==(DBRowIterator
const& )
const;
121 DBRowIterator& operator+(
int)
noexcept;
122 DBRowIterator& operator+=(
int)
noexcept;
123 DBRowIterator& operator++()
noexcept;
124 DBRowIterator operator++(
int)
noexcept;
125 DBRowIterator& operator-(
int)
noexcept;
126 DBRowIterator operator--(
int)
noexcept;
127 DBRowIterator& operator--()
noexcept;
128 DBRowIterator& operator-=(
int)
noexcept;
131 friend class DBResult;
132 DBRowIterator( DBResult& dbres,
const DBResult::ROW::iterator& );
135 DBResult::ROW::iterator it;