46 lines
1.0 KiB
C++
46 lines
1.0 KiB
C++
#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
|