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() ) ); }
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); }); } }
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); } }
void macroUndefined( MacroName const & macroName ) { assert( !fromCache() ); macroState_.undefineMacro( macroName ); changedHere_.insert( macroName ); }
void macroDefined( MacroName const & macroName, MacroValue const & macroValue ) { assert( !fromCache() ); macroState_.defineMacro( macroName, macroValue ); changedHere_.insert( macroName ); }
Headers & includedHeaders() { assert( !fromCache() ); return includedHeaders_; }
void addHeader( Header const & header ) { assert( !fromCache() ); includedHeaders_.insert( header ); }