-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathscriptloader.hpp
27 lines (26 loc) · 1005 Bytes
/
scriptloader.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once
#include "engine/vm.hpp"
class ScriptLoaderImplement : public Interpreter::ScriptLoader {
private:
Interpreter::ScriptLoader* mLoader;
Interpreter::ScriptLoader* mBuiltinLoader;
std::map<std::string, int> mBuiltinScriptFiles;
public:
ScriptLoaderImplement(Interpreter::ScriptLoader* loader,
Interpreter::ScriptLoader* builtinLoader)
: mLoader(loader), mBuiltinLoader(builtinLoader) {}
scoped_refptr<Interpreter::Script> LoadScript(const std::string& name, std::string& error) {
if (IsBuiltinScript(name)) {
return mBuiltinLoader->LoadScript(name, error);
}
return mLoader->LoadScript(name, error);
}
void AddBuiltinScriptFiles(std::list<std::string>& files) {
for (auto iter : files) {
mBuiltinScriptFiles[iter] = 1;
}
}
bool IsBuiltinScript(const std::string& name) {
return mBuiltinScriptFiles.find(name) != mBuiltinScriptFiles.end();
}
};