16 #include "../DependencyManager.h"
20 template <
typename T>
class ScriptInitializerMixin {
22 using ScriptInitializer = std::function<void(T)>;
23 virtual void registerScriptInitializer(ScriptInitializer initializer) {
24 InitializerLock lock(_scriptInitializerMutex);
25 _scriptInitializers.push_back(initializer);
27 virtual int runScriptInitializers(T engine) {
28 InitializerLock lock(_scriptInitializerMutex);
29 return std::count_if(_scriptInitializers.begin(), _scriptInitializers.end(),
30 [engine](
auto initializer){ initializer(engine); return true; }
33 virtual ~ScriptInitializerMixin() {}
35 std::mutex _scriptInitializerMutex;
36 using InitializerLock = std::lock_guard<std::mutex>;
37 std::list<ScriptInitializer> _scriptInitializers;
40 class ScriptInitializers :
public ScriptInitializerMixin<ScriptEngine*>,
public Dependency {
Provides an engine-independent interface for a scripting engine.
Definition: ScriptEngine.h:93