UserdataMetatable &addPropertyAny(const char *name, GetterType getter) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered."); return *this; } property_map_[name] = AnyDataPusher(function(getter)); return *this; }
UserdataMetatable &addStaticField(const char *name, const Data &d) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered."); return *this; } member_map_[name] = AnyDataPusher(d); return *this; }
UserdataMetatable &addStaticFunction(const char *name, Fun f) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered."); return *this; } member_map_[name] = AnyDataPusher(kaguya::function(f)); return *this; }
UserdataMetatable &addProperty(const char *name, Ret class_type::*mem) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered."); return *this; } property_map_[name] = AnyDataPusher(kaguya::function(mem)); return *this; }
/// @brief assign function /// @param name name for lua /// @param f member function object. UserdataMetatable &addFunction(const char *name, PolymorphicMemberInvoker f) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered. To " "overload a function, use " "addOverloadedFunctions"); return *this; } member_map_[name] = AnyDataPusher(kaguya::function(f)); return *this; }
UserdataMetatable &addOverloadedFunctions(const char *name, Funcs... f) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered."); return *this; } member_map_[name] = AnyDataPusher(overload(f...)); return *this; }
UserdataMetatable &addProperty(const char *name, GetType (*getter)(const class_type &), void (*setter)(class_type &, SetType)) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered."); return *this; } property_map_[name] = AnyDataPusher(overload(getter, setter)); return *this; }
UserdataMetatable& addStaticField(const char* name, Data&& d) { if (has_key(name)) { throw KaguyaException("already registered."); return *this; } member_map_[name] = metatable_detail::makeDataHolder(std::move(d)); return *this; }
UserdataMetatable& addFunction(const char* name, Ret class_type::* f) { if (has_key(name)) { throw KaguyaException("already registered. if you want function overload,use addOverloadedFunctions"); return *this; } member_map_[name] = metatable_detail::makeDataHolder(function(f)); return *this; }
UserdataMetatable& addStaticFunction(const char* name, Fun f) { if (has_key(name)) { throw KaguyaException("already registered."); return *this; } member_map_[name] = metatable_detail::makeDataHolder(function(f)); return *this; }
UserdataMetatable& addProperty(const char* name, Ret class_type::* mem) { if (has_key(name)) { throw KaguyaException("already registered."); return *this; } property_map_[name] = metatable_detail::makeDataHolder(function(mem)); return *this; }
UserdataMetatable& addFunction(const char* name, Ret class_type::* f) { if (has_key(name)) { throw KaguyaException(std::string(name) + " is already registered. To overload a function, use addOverloadedFunctions"); return *this; } member_map_[name] = AnyDataPusher(kaguya::function(f)); return *this; }
UserdataMetatable& addCodeChunkResult(const char* name, const std::string& lua_code_chunk) { if (has_key(name)) { throw KaguyaException("already registered."); return *this; } member_map_[name] = metatable_detail::makeDataHolder(LuaCodeChunkResult(lua_code_chunk)); return *this; }
UserdataMetatable& addOverloadedFunctions(const char* name, Funcs... f) { if (has_key(name)) { throw KaguyaException("already registered."); return *this; } member_map_[name] = metatable_detail::makeDataHolder(overload(f...)); return *this; }