#ifndef CONTEXT_MANAGER_H #define CONTEXT_MANAGER_H #include #include #include #include "context.h" class ContextManager { private: static ContextManager *local_instance; ContextManager() { qDebug() << "ContextManager constructor"; } ~ContextManager() { qDebug() << "ContextManager destructor"; } QAtomicInt *counter = new QAtomicInt(); QMap *contextMap = new QMap(); public: static ContextManager *getInstance() { static ContextManager locla_s; return &locla_s; } Context *createContext(QString *script, QString *source) { int contextId = counter->fetchAndAddOrdered(1); Context *context = new Context(contextId, source); contextMap->insert(contextId, context); context->driver->createContext(contextId, script); return context; } Context *getContext(int contextId) { return contextMap->take(contextId); } }; #endif // CONTEXT_MANAGER_H