int DaoCstruct_CallKeyboardMethod( DaoCstruct *cdata, const char *method, int key, int x, int y ) { DaoObject *obj = NULL; DaoRoutine *rout = Dao_Get_Object_Method( cdata, & obj, method ); DaoProcess *proc; DaoValue **params; if( rout == NULL || obj == NULL ) return 0; proc = DaoVmSpace_AcquireProcess( __daoVmSpace ); DaoProcess_NewInteger( proc, (daoint) key ); DaoProcess_NewInteger( proc, (daoint) x ); DaoProcess_NewInteger( proc, (daoint) y ); params = DaoProcess_GetLastValues( proc, 3 ); rout = DaoRoutine_Resolve( rout, (DaoValue*) obj, NULL, params, NULL, 3, 0 ); if( rout == NULL ) goto Finalize; DaoProcess_Call( proc, rout, (DaoValue*) obj, params, 3 ); Finalize: DaoVmSpace_ReleaseProcess( __daoVmSpace, proc ); return rout != NULL; }
static int DaoPF10293( int *_cs, DaoRoutine *_ro, DaoObject *_ob, double t, const double* y, double* dydt, DaoValue *params ) { DaoProcess *_proc = DaoVmSpace_AcquireProcess( __daoVmSpace ); DaoValue *_res, **_dp; DaoCdata *_cd; int X = (int) 0; if( _ro == NULL ) goto EndCall; DaoProcess_NewFloat( _proc, (dao_float) t ); DaoProcess_NewVectorFloat64( _proc, (double*) y, 0 ); DaoProcess_NewVectorFloat64( _proc, (double*) dydt, 0 ); DaoProcess_CacheValue( _proc, params ); _dp = DaoProcess_GetLastValues( _proc, 4 ); _ro = DaoRoutine_ResolveByValue( _ro, (DaoValue*) _ob, _dp, 4 ); if( _ro == NULL || DaoRoutine_IsWrapper( _ro ) ) goto EndCall; if( (*_cs = DaoProcess_Call( _proc, _ro, (DaoValue*)_ob, _dp, 4 )) ) goto EndCall; _res = DaoProcess_GetReturned( _proc ); if(DaoValue_CastInteger(_res)) X=(int)DaoValue_TryGetInteger(_res); EndCall: DaoVmSpace_ReleaseProcess( __daoVmSpace, _proc ); return X; }