#pragma once namespace gsc { class function_args { public: function_args(std::vector); unsigned int size() const; std::vector get_raw() const; scripting::script_value get(const int index) const; scripting::script_value operator[](const int index) const { return this->get(index); } private: std::vector values_; }; using builtin_function = void(*)(); using builtin_method = void(*)(game::scr_entref_t); using script_function = std::function; using script_method = std::function; namespace function { void add(const std::string& name, const script_function& func); } namespace method { void add(const std::string& name, const script_method& func); } }