Exemple #1
0
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;
}