ocarina/include/database.h
Anna Schumaker 79d592ed64 database: Add a function for printing
Other tests may need to print out a database.  To make this easier I've
added a print() function to the base database class.  This function will
only exist when CONFIG.TEST == True, so don't use it outside of testing!

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:56:54 -04:00

62 lines
956 B
C++

/*
* Copyright 2013 (c) Anna Schumaker.
*/
#ifndef OCARINA_DATABASE_H
#define OCARINA_DATABASE_H
#include <file.h>
#include <print.h>
#include <vector>
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 T>
class Database {
private:
std::vector<T> db;
unsigned int _size;
File file;
DatabaseFlags flags;
public:
Database(std::string, DatabaseFlags);
~Database();
void save();
void load();
#ifdef CONFIG_DEBUG
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 */