LUABIND_API void add_overload( object const& context, char const* name, object const& fn) { function_object* f = *touserdata<function_object*>(getupvalue(fn, 1)); f->name = name; if (object overloads = context[name]) { if (is_luabind_function(overloads) && is_luabind_function(fn)) { f->next = *touserdata<function_object*>(getupvalue(overloads, 1)); f->keepalive = overloads; } } context[name] = fn; }
LUABIND_API void add_overload( object const& context, char const* name, object const& fn) { function* f = touserdata<function>(getupvalue(fn, 1)); f->m_name = name; if (object overloads = context[name]) { if (tocfunction(overloads) == &function_dispatcher && tocfunction(fn) == &function_dispatcher) { f->m_next = touserdata<function>(getupvalue(overloads, 1)); f->m_keep_alive = overloads; f->m_name = name; } } context[name] = fn; }