Beispiel #1
0
    void propagateToParent() const
    {
        assert( parent_ );
        assert( !parent_->fromCache() );

        if ( fromCache() )
        {
            cacheHit_->forEachUsedMacro( [this]( Macro const & macro )
            {
                parent_->macroUsed( macro.first, macro.second );
            });

            cacheHit_->macroState().forEachMacro([this]( Macro const & macro )
            {
                parent_->changedHere_.insert( macro.first );
                macroState_.defineMacro( macro.first, macro.second );
            });
        }
        else
        {
            for ( Macro const & macro : usedHere_ )
            {
                parent_->macroUsed( macro.first, macro.second );
            }
            parent_->changedHere_.insert( changedHere_.begin(), changedHere_.end() );
        }

        std::copy
        (
            includedHeaders().begin(),
            includedHeaders().end  (),
            std::inserter( parent_->includedHeaders(),
                parent_->includedHeaders().begin() )
        );
    }
Beispiel #2
0
 void macroUsed( MacroName const & macroName, MacroValue const & macroValue )
 {
     assert( !fromCache() );
     // Macro is marked as 'used' in this header only if it was not changed
     // here.
     if ( changedHere_.find( macroName ) == changedHere_.end() )
         usedHere_.addMacro( macroName, macroValue );
 }
void StorageAccess::accessCache(QString const & pCacheString, CacheMissCallback && pMiss, DataCallback && pHit)
{
	QByteArray lData;
	if (fromCache(pCacheString, lData))
	{
		pHit(lData);
	}
	else
	{
		pMiss([this, pCacheString, CAPTURE(pHit)] (QByteArray const& pData)
		{
			insertInCache(pCacheString, pData);
			pHit(pData);
		});
	}
}
Beispiel #4
0
void AlbumWidget::LoadImage(QString album, QString artist) {
    QString name = artist + "_" + album;
    QImage* img = NULL;   
    
    if ((img = fromCache(name))) {        
        Logger::getInstance()->log("CACHE HIT", LOG_LEVEL_INFO);
    } else if ((img = fromDirCache(name))) {
        Logger::getInstance()->log("DIRECTORY CACHE HIT", LOG_LEVEL_INFO);
        cache(name, img);
    } else {
        fromInternet(album, artist);
        Logger::getInstance()->log("FROM LAST.FM", LOG_LEVEL_INFO);
        return;
    }

    if (img != NULL) {
        resize(img->width(), img->height());
        m_pixmap = QPixmap::fromImage(*img);
        update();
    } else {
        resize(300, 300);
        Logger::getInstance()->log("NO COVER AVAILABLE", LOG_LEVEL_INFO);
    }
}
Beispiel #5
0
 void macroUndefined( MacroName const & macroName )
 {
     assert( !fromCache() );
     macroState_.undefineMacro( macroName );
     changedHere_.insert( macroName );
 }
Beispiel #6
0
 void macroDefined( MacroName const & macroName, MacroValue const & macroValue )
 {
     assert( !fromCache() );
     macroState_.defineMacro( macroName, macroValue );
     changedHere_.insert( macroName );
 }
Beispiel #7
0
 Headers       & includedHeaders()       { assert( !fromCache() ); return includedHeaders_; }
Beispiel #8
0
 void addHeader( Header const & header )
 {
     assert( !fromCache() );
     includedHeaders_.insert( header );
 }