Dependency Injection for Modern C++
Create a cpp file with following codes:
#include <Runtime.hpp>
REXLOG_RUNTIME_IMPLEMENTION;
#include <runtime.hpp>
rexlog::Runtime *runtime = rexlog::Runtime::getInstance();
//Setter: can store any type of data;
std::string serverName="My HTTP Server";
runtime->set("serverName", serverName);
runtime->set("serverPort", static_cast<int>(8080));
//Getter: template method
std::cout <<"The server name is"<<runtime->get<std::string>("serverName")<<std::endl;
std::cout <<"The server port is"<<runtime->get<int>("serverPort")<<std::endl;
class MyClass {
protected:
int m_int;
public:
static void freeMethod(rexlog::RuntimeStorage *self){
rexlog::RealRuntimeStorage<MyClass*> *storage=static_cast<rexlog::RealRuntimeStorage<MyClass*>>(self);
delete storage->data;
}
public:
MyClass(){
this->m_int=new int;
}
~MyClass(){
delete this-> m_int;
}
}
rexlog::Runtime *runtime = rexlog::Runtime::getInstance();
runtime->set("myObj", new MyClass, MyClass::freeMethod);
class MyClass {
protected:
int m_int;
public:
MyClass(){
this->m_int=new int;
}
~MyClass(){
delete this-> m_int;
}
}
rexlog::Runtime *runtime = rexlog::Runtime::getInstance();
runtime->set("myObj", new MyClass, [&](rexlog::RuntimeStorage *self){
rexlog::RealRuntimeStorage<MyClass*> *storage=static_cast<rexlog::RealRuntimeStorage<MyClass*>>(self);
delete storage->data;
});