/* * cbufferevent Class (*buffer_event_cb)() 1st stage callback from event_base_dispatch(), NEVER BE CALLED FROM OTHERS. */ static void Cbev_eventCB_1st(struct bufferevent *bev, short what, void *arg) { kbuffereventCBArg *cbArg = arg; KonohaContext *kctx = cbArg->kctx; BEGIN_UnusedStack(lsfp); KClass *returnType = kMethod_GetReturnType(cbArg->kcb[BEV_EventCB]->method); KUnsafeFieldSet(lsfp[0].asObject, K_NULL); KUnsafeFieldSet(lsfp[1].asObject, (kObject *)cbArg->cbev); lsfp[2].intValue = what; KUnsafeFieldSet(lsfp[3].asObject, (kObject *)cbArg->arg); KStackSetFuncAll(lsfp, KLIB Knull(kctx, returnType), 0/*UL*/, cbArg->kcb[BEV_EventCB], 3); KStackCall(lsfp); END_UnusedStack(); }
/* * cevent_base Class 1st stage callback from event_base_dispatch(), NEVER BE CALLED FROM OTHERS. */ static void cevent_callback_1st(evutil_socket_t evd, short event, void *arg) { keventCBArg *cbArg = arg; KonohaContext *kctx = cbArg->kctx; BEGIN_UnusedStack(lsfp); KClass *returnType = kMethod_GetReturnType(cbArg->kcb->method); KUnsafeFieldSet(lsfp[0].asObject, K_NULL); lsfp[1].intValue = evd; lsfp[2].intValue = event; KUnsafeFieldSet(lsfp[3].asObject, (kObject *)cbArg->arg); KStackSetFuncAll(lsfp, KLIB Knull(kctx, returnType), 0/*UL*/, cbArg->kcb, 3); KStackCall(lsfp); END_UnusedStack(); }
static void Cbev_dataCB_dispatcher(enum e_buffereventCB cat, struct bufferevent *bev, void *arg) { kbuffereventCBArg *cbArg = arg; KonohaContext *kctx = cbArg->kctx; BEGIN_UnusedStack(lsfp); KClass *returnType = kMethod_GetReturnType(cbArg->kcb[cat]->method); KUnsafeFieldSet(lsfp[0].asObject, K_NULL); KUnsafeFieldSet(lsfp[1].asObject, (kObject *)cbArg->cbev); KUnsafeFieldSet(lsfp[2].asObject, (kObject *)cbArg->arg); KStackSetFuncAll(lsfp, KLIB Knull(kctx, returnType), 0/*UL*/, cbArg->kcb[cat], 2); KStackCall(lsfp); END_UnusedStack(); }
/* copied from src/parser/import/token.h */ static void CallSugarMethod(KonohaContext *kctx, KonohaStack *sfp, kFunc *fo, int argc, kObject *obj) { KStackSetFuncAll(sfp, obj, 0, fo, argc); KLIB KRuntime_tryCallMethod(kctx, sfp); }