intptr_t bouncer(IoBlock *self, intptr_t ret, intptr_t a, intptr_t b, intptr_t c, intptr_t d, intptr_t e) { IoObject *lobby = IoState_lobby(IOSTATE); IoNumber *n; static IoMessage *m = NULL; List *argNames = ((IoBlockData*)IoObject_dataPointer(self))->argNames; if (m == NULL) m = IoMessage_new(IOSTATE); if (0 < argNames->size) IoMessage_setCachedArg_toInt_(m, 0, (int)a); if (1 < argNames->size) IoMessage_setCachedArg_toInt_(m, 1, (int)b); if (2 < argNames->size) IoMessage_setCachedArg_toInt_(m, 2, (int)c); if (3 < argNames->size) IoMessage_setCachedArg_toInt_(m, 3, (int)d); if (4 < argNames->size) IoMessage_setCachedArg_toInt_(m, 4, (int)e); n = IoBlock_activate(self, lobby, lobby, m, lobby); if (ISNUMBER(n)) { return (intptr_t)IoNumber_asInt(n); } return 0; }
void IoDrawStuffKeyboardFunc(int key) { //printf("IoDrawStuffKeyboardFunc\n"); IoState_pushRetainPool(IoObject_state(proto)); IoMessage_setCachedArg_toInt_(DATA(proto)->keyboardMessage, 0, key); IoDrawStuff_tryCallback(proto, DATA(proto)->keyboardMessage); IoState_popRetainPool(IoObject_state(proto)); }
void IoDrawStuffStepFunc(int pause) { //printf("IoDrawStuffStepFunc\n"); IoState_pushRetainPool(IoObject_state(proto)); IoMessage_setCachedArg_toInt_(DATA(proto)->stepMessage, 0, pause); IoDrawStuff_tryCallback(proto, DATA(proto)->stepMessage); IoState_popRetainPool(IoObject_state(proto)); }