Создать 1d числовую таблицу lua из обратного вызова C - PullRequest
0 голосов
/ 08 июня 2019

Как мне создать 1d числовую таблицу из обратного вызова C, который может вызываться много раз?Библиотека предоставляет следующую сигнатуру функции обратного вызова:

int callback(int x, int y, int z, void *cb);

Предположим, она вызывается три раза со следующими значениями:

(1) x=3 y=1 z=4 cb=<ptr>
(2) x=1 y=5 z=9 cb=<ptr>
(3) x=2 y=6 z=5 cb=<ptr>

Я ожидаю, что результирующая таблица lua будет выглядеть следующим образом:

{ [1]=3, [2]=1, [3]=4, [4]=1, [5]=5, [6]=9, [7]=2, [8]=6, [9]=5 }

Вот соответствующий код:

int callback(int x, int y, int z, void *cb) {
  (lua_State *)L = cb;
  // what do I add here? something with lua_pushnumber()?
}

static int caller(lua_state *L) {
  lua_createtable(L); //empty table is now on top of stack
  exec(callback, L); //can be called any amount of times
  return 1;
}

Поскольку обратный вызов может вызываться тысячи раз, я бы хотел, чтобы x, y и z были немедленно добавлены в таблицу.не использовать весь стек lua, если это возможно.

...