S
Size: a a a
S
AZ
S
S
for (int i = 0; i < сcallback; i++){
struct foo * = callback[i];
lua_getglobal(L, foo->funcname);
lua_pushstring(L, foo->a);
lua_pushstring(L, foo->b);
lua_call(L, 2, 1);
if(lua_isboolean(L, -1)) do_something();
}
Если тут ещё и количество аргументов разное, а при некоторых условиях мы заполняем стек аргументами но не вызываем функцию (например, её не существует, или при каких-то обстоятельствах нужно подставить вместо неё другую функцию с чуть другими аргументами) — ваще треш, со стеком начинает твориться куча странного.AZ
AZ
for (int i = 0; i < сcallback; i++){
struct foo * = callback[i];
lua_getglobal(L, foo->funcname);
lua_pushstring(L, foo->a);
lua_pushstring(L, foo->b);
lua_call(L, 2, 1);
if(lua_isboolean(L, -1)) do_something();
}
Если тут ещё и количество аргументов разное, а при некоторых условиях мы заполняем стек аргументами но не вызываем функцию (например, её не существует, или при каких-то обстоятельствах нужно подставить вместо неё другую функцию с чуть другими аргументами) — ваще треш, со стеком начинает твориться куча странного.S
AZ
for (int i = 0; i < сcallback; i++){
struct foo * = callback[i];
lua_getglobal(L, foo->funcname);
lua_pushstring(L, foo->a);
lua_pushstring(L, foo->b);
lua_call(L, 2, 1);
if(lua_isboolean(L, -1)) do_something();
}
Если тут ещё и количество аргументов разное, а при некоторых условиях мы заполняем стек аргументами но не вызываем функцию (например, её не существует, или при каких-то обстоятельствах нужно подставить вместо неё другую функцию с чуть другими аргументами) — ваще треш, со стеком начинает твориться куча странного.S
S
S
this->CallCallback
— вызывает конкретный пользовательский колбек, именно для данного вызоваFriend:getAvatar('large', callback_func)
. И он проверяет, если эта функция вернула true
— оставляет её на будущее. Но этого колбека может не быть.this->CallUserFunction
— вызов общеиспользуемого "глобального" колбека типаsteam.callback.avatarImageLoaded(friend, something)
S
S
S
S