/* * Copyright 2013 (c) Anna Schumaker. */ #ifndef OCARINA_DATABASE_H #define OCARINA_DATABASE_H #include #include #include class DatabaseEntry { public: bool valid; DatabaseEntry(); virtual void write(File &) = 0; virtual void read(File &) = 0; #ifdef CONFIG_DEBUG virtual void print() = 0; #endif /* CONFIG_DEBUG */ }; enum DatabaseFlags { DB_NORMAL, DB_UNIQUE, }; template class Database { private: std::vector db; unsigned int _size; File file; DatabaseFlags flags; public: Database(std::string, DatabaseFlags); ~Database(); void save(); void load(); #ifdef CONFIG_DEBUG void clear(); void print(); #endif /* CONFIG_DEBUG */ unsigned int insert(T); void remove(unsigned int); unsigned int size(); unsigned int num_rows(); unsigned int first(); unsigned int last(); unsigned int next(unsigned int); T &operator[](unsigned int); }; #include "database.hpp" #endif /* OCARINA_DATABASE_H */