// // Created by koncord on 08.05.16. // #ifndef PLUGINSYSTEM3_LANGPAWN_HPP #define PLUGINSYSTEM3_LANGPAWN_HPP #include "Language.hpp" #include class LangPAWN: public Language { private: template struct indices {}; template struct build_indices : build_indices {}; template struct build_indices<0, Is...> : indices {}; template using IndicesFor = build_indices; public: virtual lib_t GetInterface() override; template static AMX_NATIVE_INFO* functions(indices); AMX *amx; public: LangPAWN(); LangPAWN(AMX *amx); ~LangPAWN(); static cell MakePublic(AMX *amx, const cell *params) noexcept; static cell CallPublic(AMX *amx, const cell *params) noexcept; static cell CreateTimer(AMX *amx, const cell *params) noexcept; static cell CreateTimerEx(AMX *amx, const cell *params) noexcept; virtual void LoadProgram(const char *filename) override; virtual int FreeProgram() override; virtual bool IsCallbackPresent(const char *name) override; virtual boost::any Call(const char *name, const char *argl, int buf, ...) override; virtual boost::any Call(const char *name, const char *argl, const std::vector &args) override; }; #endif //PLUGINSYSTEM3_LANGPAWN_HPP