ocarina/include/database.hpp

82 lines
1.3 KiB
C++
Raw Normal View History

/*
* Copyright 2013 (c) Anna Schumaker.
*
* DO NOT INCLUDE THIS FILE DIRECTLY. THIS IS A TEMPLATE DEFINITION FILE
* AND ONLY MEANT TO BE INCLUDED BY include/database.h!
*/
#ifndef OCARINA_DATABASE_HPP
#define OCARINA_DATABASE_HPP
template <class T>
Database<T> :: Database(std::string filepath)
: _size(0), file(filepath, FILE_TYPE_DATA)
{
}
template <class T>
Database<T> :: ~Database()
{
}
template <class T>
unsigned int Database<T> :: insert(T val)
{
db.push_back(val);
_size++;
return db.size() - 1;
}
template <class T>
unsigned int Database<T> :: size()
{
return _size;
}
template <class T>
unsigned int Database<T> :: num_rows()
{
return db.size();
}
template <class T>
unsigned int Database<T> :: first()
{
for (unsigned int i = 0; i < db.size(); i++) {
if (db[i].valid == true)
return i;
}
return db.size();
}
template <class T>
unsigned int Database<T> :: last()
{
for (unsigned int i = db.size() - 1; i >= 0; i--) {
if (db[i].valid == true)
return i;
}
return db.size();
}
template <class T>
unsigned int Database<T> :: next(unsigned int id)
{
for (unsigned int i = id + 1; i < db.size(); i++) {
if (db[i].valid == true)
return i;
}
return db.size();
}
template <class T>
T &Database<T> :: operator[](unsigned int id)
{
return db[id];
}
#endif /* OCARINA_DATABASE_HPP */