// evaluateAsLHS() // LHSObject *MemberExpression::evaluateAsLHS( Interpreter *interpreter, Scope *scope ) { Instance *instance = getInstance_( interpreter, scope ); // new reference if ( !instance ) return 0; // error already set return new LHSMember( instance, memberName_ ); // takes reference }
void UniqueIdGenerator::setSeed(UInt64 seed) { // modifies static members #ifdef _OPENMP #pragma omp critical (OPENMS_UniqueIdGenerator_setSeed) #endif { UniqueIdGenerator& instance = getInstance_(); instance.seed_ = seed; instance.rng_->seed( instance.seed_ ); instance.dist_->reset(); } }
// evaluate() // Object *MemberExpression::evaluate_( Interpreter *interpreter, Scope *scope ) { Instance *instance = getInstance_( interpreter, scope ); // new reference if ( !instance ) return 0; // error already set Object *result = instance->getMember( memberName_ ); // new reference // clean up instance->decRef(); return result; }
UInt64 UniqueIdGenerator::getUniqueId() { UniqueIdGenerator& instance = getInstance_(); #ifdef _OPENMP UInt64 val; #pragma omp critical (OPENMS_UniqueIdGenerator_getUniqueId) { val = (*instance.dist_)(*instance.rng_); } // note: OpenMP can only work on a structured block, return needs to be outside that block return val; #else return (*instance.dist_)(*instance.rng_); #endif }
UInt64 UniqueIdGenerator::getSeed() { return getInstance_().seed_; }