コード例 #1
0
ファイル: luasupport.c プロジェクト: caryhaynie/jamplus
static LIST *luahelper_addtolist(ls_lua_State *L, LIST *list, int index)
{
    if (ls_lua_isboolean(L, index))
        return list_append(list, ls_lua_toboolean(L, index) ? "true" : "false", 0);

    if (ls_lua_isnumber(L, index)) {
        LIST* newList;
        ls_lua_pushvalue(L, index);
        newList = list_append(list, ls_lua_tostring(L, -1), 0);
        ls_lua_pop(L, 1);
        return newList;
    }

    if (ls_lua_isstring(L, index)) {
        const char* value = ls_lua_tostring(L, index);
        return list_append(list, value, 0);
    }

    else if (ls_lua_istable(L, index))
    {
        ls_lua_pushnil(L);
        while (ls_lua_next(L, index) != 0)
        {
            list = luahelper_addtolist(L, list, ls_lua_gettop(L));
            ls_lua_pop(L, 1);
        }
    }

    return list;
}
コード例 #2
0
ファイル: luasupport.c プロジェクト: lucasmeijer/jamplus
static LIST *luahelper_addtolist(ls_lua_State *L, LIST *list, int index)
{
    if (ls_lua_isboolean(L, index))
	return list_new(list, ls_lua_toboolean(L, index) ? "true" : "false", 0);

    if (ls_lua_isnumber(L, index))
	return list_new(list, ls_lua_tostring(L, index), 0);

    if (ls_lua_isstring(L, index))
	return list_new(list, ls_lua_tostring(L, index), 0);

    else if (ls_lua_istable(L, index))
    {
	ls_lua_pushnil(L);
	while (ls_lua_next(L, index) != 0)
	{
	    list = luahelper_addtolist(L, list, index + 2);
	    ls_lua_pop(L, 1);
	}
    }

    return list;
}