Lua: прочитать параметр таблицы из вызова функции c

Я действительно не уверен в обработке таблиц в C API Lua. Интерфейс, который я сейчас разрабатываю, требует, чтобы я читал содержимое таблицы, переданной моей функции c:

пример.lua:

myVector2 = {["x"]=20, ["y"]=30}
setSomePosition(myVector2)

Функция C я регистрирую как "setSomePosition":

static int lSetSomePosition(lua_State *L)
{
    //number of arguments
    if(lua_gettop(L) != 1)
    {
        //error handling
        return 0;
    }
    //Need your help with the following:
    //extract tables values of indexes "x" and "y"

    return 0;
}

Я знаю, что есть несколько способов обработки таблиц, индексы которых вам иногда нужно знать, что я и делаю. Я просто сейчас запутался в этом, и чем больше я исследую, тем больше я запутался. Вероятно, потому что я действительно не знаю, как описать то, что я ищу, в правильной терминологии.

Был бы очень признателен за хороший пример кода с комментариями о том, как вы могли бы заполнить пробел в моей функции c :)

(Если у вас есть простое для понимания руководство по этой теме, не возражайте комментировать)


person InDieTasten    schedule 02.11.2014    source источник
comment
lua.org/manual/5.1/manual.html#lua_getfield   -  person Colonel Thirty Two    schedule 02.11.2014


Ответы (1)


person    schedule
comment
что означает положительный в вызове lua_getfield? это похоже на то, когда вызов функции c получает 2 таблицы, я могу увеличить их на единицу, чтобы поместить значения из второй таблицы в стек? - person InDieTasten; 02.11.2014
comment
@InDieTasten Это индекс стека первого аргумента (то есть таблицы). - person IS4; 02.11.2014