luaL_len отсутствует в Lua 5.1

Страницы: 1
RSS
luaL_len отсутствует в Lua 5.1
 
Пытаюсь в моей dll применить код на Си
Код
static int forLua_SumArray (lua_State* L) {    // Get the length of the table (same as # operator in Lua)
    int n = luaL_len(L, 1);
    double sum = 0.0;

    // For each index from 1 to n, get the table value as a number and add to sum
    for (int i = 1; i <= n; ++i) {
      lua_rawgeti(L, 1, i);
      sum += lua_tonumber(L, -1);
      lua_pop(L, 1);
    }

    lua_pushnumber(L, sum);
    return 1; 
}
всё хорошо, но в Луа 5.1. нет функции luaL_len. Она появилась в более поздних версиях.
Вот код этой функции в Луа 5.3.




Как мне это внедрить в свою dll?
Как дописать строку в lauxlib.h - это понятно.  А вот файла lauxlib.c в моей Луа 5.1.5 вообще нет.
 
перебор таблиц можно делать не только по типу for(i=0;i<count;i++). кол-во элементов знать не обязательно.
Код
static int forLua_SumArray (lua_State* L) {
    double sum = 0; //при учете что на стеке таблица
    lua_pushnil(L); //nil
    while (lua_next(L, -2)) //след ключ+значение
    {
        double value = lua_tonumber(L, -1);        
        sum += value;
        lua_pop(L, 1); //чистим значение, оставляем таблица+послед. ключ
    }   
    lua_pop(L, 2); //2 или 1, не помню будет там посл. ключ или только таблица, вроде 2.
    lua_pushnumber(L, sum);
    return 1; 
}
 
Спасибо, Антон.
господа разработчики, обновите пожалуйста Луа в Квике до свежей версии
 
Цитата
Let_it_go написал:
Спасибо, Антон.
господа разработчики, обновите пожалуйста Луа в Квике до свежей версии
Добрый день.
Пока обновлять версию Lua не планируем
 
Подскажите пожалуйста как мне отдельные функции Луа 5.3 внедрять в текущую версию 5.1.
Например, luaL_len(L, 1)
 
Цитата
Let_it_go написал:
Подскажите пожалуйста как мне отдельные функции Луа 5.3 внедрять в текущую версию 5.1.
Например, luaL_len(L, 1)
написать эту функцию самому на с внутри библиотеки или написать ее на луа и вызывать из библиотеки.

оба варианта тривиальны.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Страницы: 1
Читают тему
Наверх