#ifndef AS_LSP_NATIVE_DATABASE_HPP #define AS_LSP_NATIVE_DATABASE_HPP #if !TESTS_BUILD #include "../../node_modules/node-addon-api/napi.h" #include "../angelscript/extensions/scriptbuilder/scriptbuilder.h" #include "../angelscript/include/angelscript.h" #include "ASTypeDefParser/TypeDefResult.hpp" #include "Diagnostic.hpp" class Database : public Napi::ObjectWrap { private: asIScriptEngine* _engine = nullptr; CScriptBuilder _builder; ASTypeDefParser::TypeDefResult _result; std::vector _messages; std::mutex _lock; void SetupEngine(); void MessageCallback(const asSMessageInfo* msg); public: static Napi::Object Init(Napi::Env env, Napi::Object exports); explicit Database(const Napi::CallbackInfo& info); void SetEngineProperty(const Napi::CallbackInfo& info); void Reset(const Napi::CallbackInfo& info); void LoadScript(const Napi::CallbackInfo& info); void LoadTypeDef(const Napi::CallbackInfo& info); Napi::Value Build(const Napi::CallbackInfo& info); Napi::Value GetMessages(const Napi::CallbackInfo& info); }; #endif #endif // AS_LSP_NATIVE_DATABASE_HPP