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