/sqlite3cc

To get this branch, use:
bzr branch http://bzr.ed.am/sqlite3cc
2 by edam
- further initial development
1
/*
2
 * row.cc
3
 *
4
 * Copyright (C) 2009 Tim Marston <edam@waxworlds.org>
5
 *
6
 * This file is part of sqlite3cc (hereafter referred to as "this program").
7
 * See http://www.waxworlds.org/edam/software/sqlite3cc for more information.
8
 *
9
 * This program is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU Lesser General Public License as published
11
 * by the Free Software Foundation, either version 3 of the License, or
12
 * (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU Lesser General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Lesser General Public License
20
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
 */
22
23
#include <sqlite3cc/row.h>
24
#include <sqlite3cc/query.h>
25
#include <sqlite3cc/manipulator.h>
26
#include <cassert>
27
28
29
sqlite::row::row(
30
	query &query,
31
	bool valid )
32
	:
33
	_query( query ),
34
	_column_index( 0 ),
35
	_valid( valid )
36
{
37
}
38
39
40
int sqlite::row::column_type(
41
	unsigned int index )
42
{
43
	assert( index <= _query.column_count() );
44
	return sqlite3_column_type( _query._handle, index );
45
}
46
47
48
unsigned int sqlite::row::column_bytes(
49
	unsigned int index )
50
{
51
	return sqlite3_column_bytes( _query._handle, index );
52
}
53
54
55
sqlite::row &sqlite::row::operator >>(
56
	_set_index_t t )
57
{
58
	_column_index = t._index;
59
	return *this;
60
}
61
62
63
template< >
64
sqlite::row &sqlite::row::operator >> < sqlite::_null_t >(
65
	_null_t & )
66
{
67
	assert( _column_index < _query.column_count() );
68
	_column_index++;
69
	return *this;
70
}