// Request disc info; returns true if request will be handled and false if request can not be processed FXbool CDDBInfo::requestData() { FXbool success=TRUE; FXbool foundlocal=FALSE; disc_data data; setStatus(CDINFO_PENDING); cddb_init_disc_data(&data); if(settings.localcopy) { if(getLocalInfo(&data)) foundlocal=TRUE; } if(!foundlocal&&!getRemoteInfo(&data)) success=FALSE; fillCurrentData(data); cddb_free_disc_data(&data); setStatus(success ? CDINFO_DONE : CDINFO_ERROR); // Signal completion to main thread if(signal!=NULL) signal->signal(); return success; }
void MultiBlock3D::resetFlags() { std::vector<plint> const& blocks = getLocalInfo().getBlocks(); for (pluint iBlock=0; iBlock<blocks.size(); ++iBlock) { plint blockId = blocks[iBlock]; getComponent(blockId).setFlag(false); } }
void MultiBlock3D::evaluateStatistics() { std::vector<plint> const& blocks = getLocalInfo().getBlocks(); for (pluint iBlock=0; iBlock<blocks.size(); ++iBlock) { plint blockId = blocks[iBlock]; getComponent(blockId).evaluateStatistics(); } if (isInternalStatisticsOn()) reduceStatistics(); }
void MultiBlock3D::executeInternalProcessors(plint level, bool communicate) { std::vector<plint> const& blocks = getLocalInfo().getBlocks(); for (pluint iBlock=0; iBlock<blocks.size(); ++iBlock) { plint blockId = blocks[iBlock]; getComponent(blockId).executeInternalProcessors(level); } if (communicate) { duplicateOverlapsInModifiedMultiBlocks(level); } }
void MultiBlock3D::reduceStatistics() { std::vector<plint> const& blocks = getLocalInfo().getBlocks(); std::vector<BlockStatistics const*> individualStatistics; // Prepare a vector containing the BlockStatistics of all components for (pluint iBlock=0; iBlock<blocks.size(); ++iBlock) { plint blockId = blocks[iBlock]; individualStatistics.push_back(&getComponent(blockId).getInternalStatistics()); } // Execute reduction operation on all individual statistics and store result into // statistics of current MultiBlock. combinedStatistics -> combine(individualStatistics, this->getInternalStatistics()); // Copy result to each individual statistics for (pluint iBlock=0; iBlock<blocks.size(); ++iBlock) { plint blockId = blocks[iBlock]; (getComponent(blockId).getInternalStatistics()) = (this->getInternalStatistics()); } }