示例#1
0
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;
}
示例#2
0
文件: IoDrawStuff.c 项目: ADTSH/io
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));
}
示例#3
0
文件: IoDrawStuff.c 项目: ADTSH/io
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));
}