Вызвать Lua функцию из С++ c передачей callback`а

Страницы: 1
RSS
Вызвать Lua функцию из С++ c передачей callback`а, Вызвать Lua функцию из С++ c передачей callback`а
 

Подскажите пожалуйста, есть ли пример, как вызывать функцию к примеру SetUpdateCallback с передачей в нее параметров ?

Ну то есть, вот аналог код в Lua:

Код
local my_table_= CreateDataSource(code_class_, code_paper_, interval)

my_table_:SetUpdateCallback(function(idx)my_callback_(my_table_, code_class_, code_paper_, interval) end)

Код
function my_callback_(my_table_, code_class, code_paper, interval)
...код

end
Код
//В L - на вершине стека уже находится таблица возвращенная CreateDataSource.

lua_getfield(L, -1, "SetUpdateCallback");          //"Извлекаем" на вершину стека из "таблицы" функцию SetUpdateCallback.


Теперь нужно поместить в стек последовательно параметры функции SetUpdateCallback, но тут уже не могу понять:
- как поместить function(idx)
- как поместить my_callback_

Не могу понять, где должна быть объявлена моя функция callback ?


В Lua скрипте и тогда мне ее нужно просто получить через Lua_global или же в C++ ?
 
Цитата
Quikos написал:
Подскажите пожалуйста, есть ли пример, как вызывать функцию к примеру SetUpdateCallback с передачей в нее параметров ?  Ну то есть, вот аналог код в Lua:  
Код
   local  my_table_ =   CreateDataSource (code_class_, code_paper_, interval)

my_table_: SetUpdateCallback ( function (idx)my_callback_(my_table_, code_class_, code_paper_, interval)  end )
  
       
Код
   function   my_callback_ (my_table_, code_class, code_paper, interval)
 .. .код

 end   
 
Код
  //В L  -  на вершине стека уже находится таблица возвращенная  CreateDataSource .

lua_getfield(L,  -  1 ,  "SetUpdateCallback" );          //"Извлекаем" на вершину стека из  "таблицы"  функцию  SetUpdateCallback .  


Теперь нужно поместить в стек последовательно параметры функции SetUpdateCallback, но тут уже не могу понять:
- как поместить function(idx)
- как поместить my_callback_

Не могу понять, где должна быть объявлена моя функция callback ?


В Lua скрипте и тогда мне ее нужно просто получить через Lua_global или же в C++ ?
Не совсем понятно, что Вы не знаете -луа или библиотеку QLUA, поэтому поясняю оба момента.
----------------------------
см. документацию  луа:
----------------
Следующий пример показывает, как хост-программа может выполнять эквивалент этого кода Lua: a = f("как", т.x, 14)
Вот оно в C:
lua_getglobal(L, "f"); /* вызываемая функция */
lua_pushliteral(L, "как"); /* 1-й аргумент */
lua_getglobal(L, "t"); /* таблица, подлежащая индексации */
lua_getfield(L, -1, "x"); /* результат ввода t.x (2-й аргумент) */
lua_remove(L, -2); /* удалить 't' из стека */
lua_pushinteger(L, 14); /* 3-й аргумент */
lua_call(L, 3, 1); /* вызов 'f' с 3 аргументами и 1 результатом */
lua_setglobal(L, "a"); /* установить глобальный 'a' */
=================
см документацию библиотеки QLUA ,
-----------------
Формат функции обратного вызова:  function call_back(NUMBER index)
Пример получения времени из свечки:
function cb( index )   -- объявили колбек функцию
local t = ds:T(index)
end
------------------
SetUpdateCallback(ds,cb)   -- запихнули ссылку на нее в таблицу источника
===============================
если Вы пишите на Си то колбек объявляете на СИ,
но можете и на луа.
в любом случае это глобальная функция.
-----------------
ВСЕ функции библиотеки QLUA - глобальные.
-----------------------
вроде бы все понятно?
----------------------
попробуйте  написать, потом выложите и спросите что не так.
=================
Страницы: 1
Читают тему (гостей: 1)
Наверх