2020-09-17 19:59:10 +00:00
|
|
|
#ifndef AS_LSP_NATIVE_DATABASE_HPP
|
|
|
|
#define AS_LSP_NATIVE_DATABASE_HPP
|
2021-10-23 12:03:31 +00:00
|
|
|
#if !TESTS_BUILD
|
2020-09-17 22:26:14 +00:00
|
|
|
#include "../../node_modules/node-addon-api/napi.h"
|
2020-09-17 19:59:10 +00:00
|
|
|
#include "../angelscript/extensions/scriptbuilder/scriptbuilder.h"
|
2020-09-17 22:26:14 +00:00
|
|
|
#include "../angelscript/include/angelscript.h"
|
2021-10-23 12:03:31 +00:00
|
|
|
#include "ASTypeDefParser/TypeDefResult.hpp"
|
2020-09-17 22:26:14 +00:00
|
|
|
#include "Diagnostic.hpp"
|
2020-09-17 19:59:10 +00:00
|
|
|
|
|
|
|
class Database : public Napi::ObjectWrap<Database> {
|
|
|
|
private:
|
2021-10-23 12:03:31 +00:00
|
|
|
asIScriptEngine* _engine = nullptr;
|
2020-09-17 19:59:10 +00:00
|
|
|
CScriptBuilder _builder;
|
2021-10-23 12:03:31 +00:00
|
|
|
ASTypeDefParser::TypeDefResult _result;
|
2020-09-17 22:26:14 +00:00
|
|
|
std::vector<const Diagnostic*> _messages;
|
2021-10-23 12:03:31 +00:00
|
|
|
std::mutex _lock;
|
2020-09-17 19:59:10 +00:00
|
|
|
|
2021-10-23 12:03:31 +00:00
|
|
|
void SetupEngine();
|
2020-09-17 19:59:10 +00:00
|
|
|
void MessageCallback(const asSMessageInfo* msg);
|
|
|
|
|
|
|
|
public:
|
|
|
|
static Napi::Object Init(Napi::Env env, Napi::Object exports);
|
|
|
|
explicit Database(const Napi::CallbackInfo& info);
|
|
|
|
|
2020-09-18 15:48:45 +00:00
|
|
|
void SetEngineProperty(const Napi::CallbackInfo& info);
|
2020-09-17 22:26:14 +00:00
|
|
|
void Reset(const Napi::CallbackInfo& info);
|
2020-09-17 19:59:10 +00:00
|
|
|
void LoadScript(const Napi::CallbackInfo& info);
|
2021-10-23 12:03:31 +00:00
|
|
|
void LoadTypeDef(const Napi::CallbackInfo& info);
|
2020-09-17 22:26:14 +00:00
|
|
|
Napi::Value Build(const Napi::CallbackInfo& info);
|
2020-09-17 19:59:10 +00:00
|
|
|
Napi::Value GetMessages(const Napi::CallbackInfo& info);
|
|
|
|
};
|
|
|
|
|
2021-10-23 12:03:31 +00:00
|
|
|
#endif
|
2020-09-17 19:59:10 +00:00
|
|
|
#endif // AS_LSP_NATIVE_DATABASE_HPP
|