#ifndef CONTEXT_MANAGER_H #define CONTEXT_MANAGER_H #include <QAtomicInt> #include <QDebug> #include <QMap> #include "context.h" class ContextManager { private: static ContextManager *local_instance; ContextManager() { qDebug() << "ContextManager constructor"; } ~ContextManager() { qDebug() << "ContextManager destructor"; } QAtomicInt *counter = new QAtomicInt(); QMap<int, Context*> *contextMap = new QMap<int, Context*>(); 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