/* * Copyright 2013 (c) Anna Schumaker. */ #ifndef OCARINA_DATABASE_H #define OCARINA_DATABASE_H #include #include #include #include class DatabaseEntry { public: bool valid; DatabaseEntry(); virtual const std::string primary_key() = 0; virtual void write(File &) = 0; virtual void read(File &) = 0; }; template class Database { private: std::vector _db; std::map _keys; unsigned int _size; bool _autosave; File _file; public: typedef typename std::vector::iterator iterator; typedef typename std::vector::const_iterator const_iterator; Database(std::string, bool); ~Database(); void save(); void autosave(); void load(); unsigned int insert(T); void remove(unsigned int); unsigned int size(); unsigned int actual_size(); iterator begin(); iterator end(); iterator next(iterator &); iterator at(unsigned int); iterator find(const std::string &); }; #include "database.hpp" #endif /* OCARINA_DATABASE_H */