예제 #1
0
void findInUpdate(int numAccs, unsigned type, struct gbRelease* release,
                  struct numRange* versions, struct numRange* modDates,
                  unsigned flags, unsigned orgCats,
                  struct gbUpdate* update, struct hash* accTbl, int* accCount)
/* find entries in an update to copy based on number of versions. */
{
struct gbProcessed* processed;
/* scan entries in an update */
for (processed = update->processed;
     (processed != NULL) && (*accCount < numAccs);
     processed = processed->updateLink)
    {
    if (shouldSelect(type, versions, modDates, flags, orgCats,
                     processed->entry))
        selectAcc(processed, accTbl, accCount);
    }
}
NodePtr CommonBfJlModules::select()
{
	if (shouldSelect() == false)
		return nullptr;

	NodePtr pSelectedNode = getJobLevelRoot();
	assert(m_pBfsHandler != nullptr);
	if (m_pBfsHandler->isProvenNode(pSelectedNode))
		return nullptr;

	NodePtr pBestChildNode = m_pBfsHandler->selectBestChild(pSelectedNode);
	while (pBestChildNode != nullptr) {
		pSelectedNode = pBestChildNode;
		if (m_pBfsHandler->isLastestGenerated(pSelectedNode))
			generatePostponedSibling(pSelectedNode);
		pBestChildNode = m_pBfsHandler->selectBestChild(pSelectedNode);
	}

	if (pSelectedNode == getJobLevelRoot() && 
		(m_pBfsHandler->isRunningJob(pSelectedNode) || m_pBfsHandler->isFlagged(pSelectedNode)))
		return nullptr;

	return pSelectedNode;
}