Цитата |
---|
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 - глобальные.
-----------------------
вроде бы все понятно?
----------------------
попробуйте написать, потом выложите и спросите что не так.
=================