Files
PkmnLib/src/ScriptResolving/AngelScript/ContextPool.hpp
Deukhoofd 2ce766f589
All checks were successful
continuous-integration/drone/push Build is passing
Adds precompiled header.
2020-09-29 17:51:11 +02:00

37 lines
827 B
C++

#ifndef PKMNLIB_CONTEXTPOOL_HPP
#define PKMNLIB_CONTEXTPOOL_HPP
#include <angelscript.h>
class ContextPool {
std::vector<asIScriptContext*> _pool;
asIScriptEngine* _engine;
public:
ContextPool(asIScriptEngine* engine) : _engine(engine) {}
~ContextPool() {
for (auto ctx : _pool) {
ctx->Release();
}
}
asIScriptContext* RequestContext() {
// Get a context from the pool, or create a new
asIScriptContext* ctx = nullptr;
if (!_pool.empty()) {
ctx = *_pool.rbegin();
_pool.pop_back();
} else
ctx = _engine->CreateContext();
return ctx;
}
void ReturnContextToPool(asIScriptContext* ctx) {
ctx->Unprepare();
_pool.push_back(ctx);
}
};
#endif // PKMNLIB_CONTEXTPOOL_HPP