void DynamicSieve<T,TSmall>::Generate( T upperBound ) { SetStorage( true ); // Compute all of the needed "small" odd primes for testing candidates // up to a (loose) upper bound of upperBound + 2*(segmentSize-1) T largestCandidate = upperBound + 2*(segmentSize_-1); oddPrimes.reserve( PrimeCountingEstimate(largestCandidate) ); while( oddPrimes.back()*oddPrimes.back() < largestCandidate ) { AugmentPrimes( 2*oddPrimes.size() ); } if( segmentOffset_ < oddPrimes.back()+2 ) { MoveSegmentOffset( oddPrimes.back()+2 ); } for( ; segmentOffset_<upperBound; segmentOffset_+=2*segmentSize_ ) { SieveSegment(); for( TSmall k=0; k<segmentSize_; ++k ) { if( segmentTable_[k] ) { T p = segmentOffset_ + 2*k; oddPrimes.push_back( p ); } } } SetStorage( false ); }
void Object::Rafinery::EventConstructed() { Model::Building::EventConstructed(); if(!GetStorage()) { std::list<Object::IBase*> l_List; m_Player->GetUnitsList(&l_List, Model::ModelBuilding, Object::ObjectWarehouse); for(auto It = l_List.begin(); It != l_List.end(); It++) if(dynamic_cast<Object::Warehouse*>(*It)->IsConstructed()) SetStorage((Object::Warehouse*)(*It)); } }
CPersistentInteger::CPersistentInteger(const char* p_szFile ) { m_szFile[0] = 0; SetStorage( p_szFile ); }