Exemple #1
0
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 );
}