Exemple #1
0
struct rdl * rdl_find (struct rdl *rdl, json_object *args)
{
    lua_rdl_method_push (rdl, "find");

    if (json_object_to_lua (rdl->L, args) < 0) {
        VERR (rdl->rl, "Failed to convert JSON to Lua\n");
        return (NULL);
    }
    /*
     *  stack: [ Method, object, args-table ]
     */
    if (lua_pcall (rdl->L, 2, LUA_MULTRET, 0) || lua_isnoneornil (rdl->L, 1)) {
        VERR (rdl->rl, "find(%s): %s\n",
                json_object_to_json_string (args),
                lua_tostring (rdl->L, -1));
        return (NULL);
    }

    return (lua_pop_new_rdl (rdl));
}
Exemple #2
0
const char *rdl_next_hierarchy (struct rdl *rdl, const char *last)
{
    lua_rdl_method_push (rdl, "hierarchy_next");

    if (last)
        lua_pushstring (rdl->L, last);
    else
        lua_pushnil (rdl->L);

    /* stack: [ Method, object, last ] */
    if (lua_pcall (rdl->L, 2, LUA_MULTRET, 0)) {
        VERR (rdl->rl, "next_hierarchy: %s\n", lua_tostring (rdl->L, -1));
        return (NULL);
    }
    if (lua_isnil (rdl->L, -1)) {
        /* End of child list is indicated by nil return */
        return (NULL);
    }
    return (lua_tostring (rdl->L, -1));
}