static otto DaoPF10002( int *_cs, DaoMethod *_ro, DaoObject *_ob, const otto& value ) { DaoValue *_dp[1] = { NULL }; DaoValue *_res; DaoCdata *_cd; DaoProcess *_vmp; otto _test = 0; if( _ro == NULL ) goto EndCall; _dp[0] = DaoValue_WrapCdata( dao_otto_Typer, (void*) &value ); _ro = DaoMethod_Resolve( _ro, (DaoValue*)_ob, _dp, 1 ); if( DaoValue_CastRoutine( (DaoValue*)_ro ) == NULL ) goto EndCall; _vmp = DaoVmSpace_AcquireProcess( __daoVmSpace ); if( (*_cs = DaoProcess_Call( _vmp, _ro, (DaoValue*)_ob, _dp, 1 )) ==0 ) goto EndCall; _res = DaoProcess_GetReturned( _vmp ); DaoVmSpace_ReleaseProcess( __daoVmSpace, _vmp ); if( DaoValue_CastObject(_res) ) _res = (DaoValue*)DaoObject_MapCdata( (DaoObject*)_res, dao_otto_Typer ); if( DaoValue_CastCdata(_res) && DaoCdata_IsType( (DaoCdata*)_res, dao_otto_Typer ) ){ _test = *(otto*) DaoValue_TryCastCdata( _res, dao_otto_Typer ); } EndCall: DaoValue_ClearAll( _dp, 1 ); return _test; }
DaoCstruct* DaoxResource_CallMethod( DaoxResource *self, const char *method, DaoType *ctype ) { DaoValue *res = NULL; DaoObject *obj = NULL; DaoRoutine *rout = Dao_Get_Object_Method( (DaoCstruct*) self, & obj, method ); DaoProcess *proc; if( rout == NULL || obj == NULL ) return NULL; proc = DaoVmSpace_AcquireProcess( dao_vmspace_graphics ); rout = DaoRoutine_Resolve( rout, (DaoValue*) obj, NULL, NULL, NULL, 0, 0 ); if( rout == NULL ) goto Finalize; DaoProcess_Call( proc, rout, (DaoValue*) obj, NULL, 0 ); res = DaoProcess_GetReturned( proc ); if( res == NULL || res->type != DAO_OBJECT ) return NULL; return DaoObject_CastCstruct( (DaoObject*)res, ctype ); Finalize: DaoVmSpace_ReleaseProcess( dao_vmspace_graphics, proc ); return 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; }