rcpp_framework/core/database_manager.h

35 lines
830 B
C++

#ifndef DATABASE_MANAGER_H
#define DATABASE_MANAGER_H
#include <vector>
#include <map>
#include <functional>
#include "database.h"
class DatabaseManager {
public:
std::vector<Database *> databases;
void load();
static DatabaseManager *get_singleton();
//note: not threadsafe, create these at the start of your program!
uint32_t create_database(const std::string &name);
static void _register_db_creation_func(const std::string &name, std::function<Database*()> func);
static void _unregister_db_creation_func(const std::string &name);
static Database *_create_database(const std::string &name);
DatabaseManager();
~DatabaseManager();
private:
static DatabaseManager * _instance;
static std::map<std::string, std::function<Database *()> > _db_creation_func_map;
};
#endif