Now the RCPPFramework singleton will allocate the DatabaseManager if databases are enabled by default.

This commit is contained in:
Relintai 2022-02-05 18:26:32 +01:00
parent 20739e4aa0
commit cf7458caaf
2 changed files with 37 additions and 21 deletions

View File

@ -3,6 +3,7 @@
#include "core/error_macros.h"
#if DATABASES_ENABLED
#include "database/database_manager.h"
#include "database_backends/db_init.h"
#endif
@ -64,6 +65,10 @@ RCPPFramework::RCPPFramework() {
_instance = this;
_initialized = false;
#if DATABASES_ENABLED
allocate_database_manager_singleton = true;
#endif
}
RCPPFramework::~RCPPFramework() {
@ -91,6 +96,13 @@ void RCPPFramework::_do_initialize() {
backend_hash_hashlib_install_providers();
PlatformInitializer::allocate_all();
#if DATABASES_ENABLED
if (allocate_database_manager_singleton) {
DatabaseManager *dbm = new DatabaseManager();
manage_object(dbm);
}
#endif
}
void RCPPFramework::_do_uninitialize() {

View File

@ -1,44 +1,48 @@
#ifndef RCPP_FRAMEWORK_H
#define RCPP_FRAMEWORK_H
#include "core/string.h"
#include "core/containers/vector.h"
#include "core/string.h"
#include "core/object.h"
class RCPPFramework : Object {
RCPP_OBJECT(RCPPFramework, Object);
RCPP_OBJECT(RCPPFramework, Object);
public:
// Helper methods to allocate and destroy the singleton.
// Note that creating / deleting an instance manually in your app will also work.
static void create();
static void destroy();
//Usie these if you don't want to mess with the default settings.
static void create_and_init();
static void create_and_init(int argc, char **argv, char **envp);
// Helper methods to allocate and destroy the singleton.
// Note that creating / deleting an instance manually in your app will also work.
static void create();
static void destroy();
// Usie these if you don't want to mess with the default settings.
static void create_and_init();
static void create_and_init(int argc, char **argv, char **envp);
void initialize();
void uninitialize();
void initialize();
void uninitialize();
void setup_args(int argc, char **argv, char **envp);
void setup_args(int argc, char **argv, char **envp);
void manage_object(Object* obj);
void manage_object(Object *obj);
RCPPFramework();
~RCPPFramework();
RCPPFramework();
~RCPPFramework();
static RCPPFramework *get_singleton();
static RCPPFramework *get_singleton();
#if DATABASES_ENABLED
bool allocate_database_manager_singleton;
#endif
protected:
virtual void _do_initialize();
virtual void _do_uninitialize();
virtual void _do_initialize();
virtual void _do_uninitialize();
bool _initialized;
bool _initialized;
Vector<Object *> _managed_objects;
Vector<Object *> _managed_objects;
static RCPPFramework *_instance;
static RCPPFramework *_instance;
};
#endif