示例#1
0
bool Tree::is_clone_parallel(const Tree* a, const Tree* b) {
	if (a->_hash != b->_hash)
		return false;

	if (a->_type != b->_type ||
		 a->_label.compare(b->_label) != 0 ||
		 a->_children.size() != b->_children.size())
		return false;

	bool alltrue = true;
	for (unsigned i = 0; i < a->_children.size(); ++i)
	{
		auto ac = a->_children[i];
		auto bc = b->_children[i];
#pragma omp task shared(alltrue) if(a->size() > SUBTREE_SIZE_CUTOFF)
		{
			if (!ac->isClone(bc))
			{
#pragma omp atomic write
				alltrue = false;
#pragma omp cancel taskgroup
			}
		}
	}
#pragma omp taskwait
	return alltrue;
}
示例#2
0
QVariant XmlItem::data(int role) const
{
    switch(role) {
    case IsCloneRole:
        return isClone();
    case IsBookmarkRole:
        return isBookmark();
    case BookmarkDateRole:
        return bookmarkDate();
    }

    return QVariant();
}