/* * 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 Database :: Database(std::string filepath) : _size(0), file(filepath, FILE_TYPE_DATA) { } template Database :: ~Database() { } template unsigned int Database :: insert(T val) { db.push_back(val); _size++; return db.size() - 1; } template unsigned int Database :: size() { return _size; } template unsigned int Database :: num_rows() { return db.size(); } template unsigned int Database :: first() { for (unsigned int i = 0; i < db.size(); i++) { if (db[i].valid == true) return i; } return db.size(); } template unsigned int Database :: last() { for (unsigned int i = db.size() - 1; i >= 0; i--) { if (db[i].valid == true) return i; } return db.size(); } template unsigned int Database :: 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 T &Database :: operator[](unsigned int id) { return db[id]; } #endif /* OCARINA_DATABASE_HPP */