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; }
QVariant XmlItem::data(int role) const { switch(role) { case IsCloneRole: return isClone(); case IsBookmarkRole: return isBookmark(); case BookmarkDateRole: return bookmarkDate(); } return QVariant(); }