void RBtree<Key,Value,Compare>::add(Key k,Value v) { Compare comp; //obiekt porównujący Node* newone; newone = new Node(k,v); //z Node* y; //y Node* x; //x y = sentinel; x = root; while (x != sentinel) { y = x; if ( comp.less(newone->k,x->k) ) x = x->left; else x = x->right; } newone->parrent = y; if (y == sentinel) root = newone; else if ( comp.less(newone->k,y->k) ) y->left = newone; else y->right = newone; newone->left = sentinel; newone->right = sentinel; newone->color = RED; RBfix(newone); }
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Compare b; qDebug()<<b.min(1,20); return a.exec(); }
void CompareTest::min() { Compare a; QCOMPARE(a.min(1, 0), 0); QCOMPARE(a.min(-1, 1), -1); QCOMPARE(a.min(4, 8), 4); QCOMPARE(a.min(0, 0), 0); QCOMPARE(a.min(1, 1), 1); QCOMPARE(a.min(-10,-5), -10); }
Compare* Ast::CreateCompare(const location& loc, AstNode* seq, AstNode* opNode, AstNode* expr) { OperatorType op = AstToken::GetOperatorType(opNode); Compare *compSeq = dynamic_cast<Compare*>(seq); if (compSeq && !compSeq->IsAtomic()) { compSeq->Append(op, expr); return compSeq; } return new Compare(this, loc, seq, op, expr); }
static void sortRecursive(int column, Qt::SortOrder order, FileBrowserItem *i){ static Compare<Qt::AscendingOrder> acomp = Compare<Qt::AscendingOrder>(); static Compare<Qt::DescendingOrder> dcomp = Compare<Qt::DescendingOrder>(); if (column < 0 || !i || !i->childCount()) return; if (order == Qt::AscendingOrder) acomp.sort(column, i->childItems); else if (order == Qt::DescendingOrder) dcomp.sort(column, i->childItems); for (const auto &ii : i->childItems) sortRecursive(column, order, ii); }
int main(int argc, char* argv[]) { Compare *comp = new Compare(); if (argc < 3) { std::cout << "No input commands\n"; return 0; } comp->CompareFiles(argv[1],argv[2]); comp->DisplaySimilarCodes(); std::cout << "\n \t End of Processing files "; std::cout << "\n " << std::string(60, '-') << std::endl; return 0; }
I upper_bound(I first, I end, Compare& c, const Key& k) { I last = end; --last; //if (c.less(k, *first)) return first; if (c.less(*last, k)) return end; int step; int count = end - first; I it; while (count>0) { it = first; step=count/2; it += step; if (!c.less(k, *it)) { first=++it; count-=step+1; } else count=step; } return first; }
void bubblePassL(Config &config,SiftMatrix &matrix,Rank *r,Switchable &switchable,Compare &compare) { NodeV::reverse_iterator ri; for(ri = r->order.rbegin(); ri<r->order.rend()-1; ++ri) { if(!compare.comparable(*ri)) continue; for(NodeV::reverse_iterator li = ri+1;li!=r->order.rend(); ++li) if(!switchable.canSwitch(*li,*ri)) break; else if(compare.comparable(*li)) { if(compare.shouldSwitch(*li,*ri)) { moveBefore(config,matrix,*ri,*li); ri = li-1; } break; } } }
void bubblePassR(Config &config,SiftMatrix &matrix,Rank *r,Switchable &switchable,Compare &compare) { NodeV::iterator li; for(li = r->order.begin(); li<r->order.end()-1; ++li) { if(!compare.comparable(*li)) continue; // search to right: if you find something you can't switch, go on to next li // if you find something to switch, jump to place it's been put for(NodeV::iterator ri = li+1;ri!=r->order.end(); ++ri) if(!switchable.canSwitch(*li,*ri)) break; else if(compare.comparable(*ri)) { if(compare.shouldSwitch(*li,*ri)) { moveBefore(config,matrix,*li,(ri==r->order.end()-1)?0:*(ri+1)); li = ri; } break; } } }
void CloningVisitor::visitComparison(const Compare &expr) { int priority = ComparePriority; expr.getLeft().visit(*this); bool lhsConstVal = _constVal; setValueNodeParentheses(priority); std::unique_ptr<ValueNode> lhs(std::move(_valueNode)); revisit(); expr.getRight().visit(*this); _constVal &= lhsConstVal; setValueNodeParentheses(priority); std::unique_ptr<ValueNode> rhs(std::move(_valueNode)); const Operator &op(expr.getOperator()); _priority = priority; _resultSet.fill(); // should be less if const _node.reset(new Compare(std::move(lhs), op, std::move(rhs), expr.getBucketIdFactory())); };
void SearchModel::sort(int column, Qt::SortOrder order) { static Compare<Qt::AscendingOrder> acomp = Compare<Qt::AscendingOrder>(); static Compare<Qt::DescendingOrder> dcomp = Compare<Qt::DescendingOrder>(); sortColumn = column; sortOrder = order; if (sortColumn < 0 || sortColumn > columnCount()-1) return; emit layoutAboutToBeChanged(); try { if (order == Qt::AscendingOrder) acomp.sort(column, rootItem->childItems); else if (order == Qt::DescendingOrder) dcomp.sort(column, rootItem->childItems); } catch (SearchListException &e){ sort(COLUMN_SF_FILENAME, order); } emit layoutChanged(); }
void sort(I first, I last, Compare& c, uint64_t bytes) { char* tmp = new char[bytes]; while (last != first) { I cur = first; while (cur != last) { I next = cur+1; if (c.less(*(next), *cur)) { //std::cout << "Swapping values\n"; std::memcpy(tmp, *cur, bytes); std::memcpy(*cur, *(cur+1), bytes); std::memcpy(*(cur+1), tmp, bytes); //std::cout << "Swapped values\n"; //std::swap_ranges(*cur, *(cur+1), *(cur+1)); } ++cur; } --last; } delete[] tmp; }
int main(int argc, char *argv[]) { // Time start cout << Utils::timecall("START"); string outputString = ""; for(int i = 1; i <= NUMBER_OF_FILES; ++i) { // so that we can have leading zeros. stringstream ss; ss << setw(3) << setfill('0') << i; string number = ss.str(); string templateFile = "../dat/" + number + "_template.dat"; string AU01queryFile = "../dat/" + number + "_AU01_query.dat"; string AU12queryFile = "../dat/" + number + "_AU12_query.dat"; string AU17queryFile = "../dat/" + number + "_AU17_query.dat"; Compare compare; compare.setTemplate(templateFile); compare.setQuery(AU01queryFile); compare.compare(); compare.setQuery(AU12queryFile); compare.compare(); compare.setQuery(AU17queryFile); compare.compare(); } cout << outputString << endl; // Time Finish cout << Utils::timecall("FINISH"); return 0; }
I search(I first, I end, Compare& c, const Key& k) { I last = end; --last; if (c.less(k, *first) || c.less(*last, k)) return end; if (c.equal(k, *first)) return first; if (c.equal(k, *last)) return last; while (true) { int diff = last - first; if (diff <= 1) return end; I middle = first+diff/2; if (c.less(k, *middle)) last = middle; else if (c.less(*middle, k)) first = middle; else return middle; } }
/** * Compare results * * @param newFile * @param oldFile * @param newTit * @param oldTit * * @relates Compare * @ingroup pwglf_forward_tracklets */ void CompareResults(const char* newFile, const char* oldFile, const char* newTit, const char* oldTit) { Compare* c = new Compare; c->Run(newFile,oldFile,newTit,oldTit); }
bool SearchModel::addResult ( const QString &file, qulonglong size, const QString &tth, const QString &path, const QString &nick, const int free_slots, const int all_slots, const QString &ip, const QString &hub, const QString &host, const QString &cid, const bool isDir ) { static Compare<Qt::AscendingOrder> acomp = Compare<Qt::AscendingOrder>(); static Compare<Qt::DescendingOrder> dcomp = Compare<Qt::DescendingOrder>(); if (file.isEmpty()) return false; SearchItem *item; QFileInfo file_info(QDir::toNativeSeparators(file)); QString ext = ""; if (size > 0) ext = file_info.suffix().toUpper(); SearchItem * parent = NULL; if (!isDir && tths.contains(tth)) { parent = tths[tth]; if (parent->exists(cid)) return false; } else { parent = rootItem; } QList<QVariant> item_data; item_data << QVariant() << file << ext << WulforUtil::formatBytes(size) << size << tth << path << nick << free_slots << all_slots << ip << hub << host, item =new SearchItem(item_data, parent); if (!item) throw SearchListException(); item->isDir = isDir; item->cid = cid; if (parent == rootItem && !isDir) tths.insert(tth, item); else { if (sortColumn == COLUMN_SF_COUNT){ parent->appendChild(item); sort(sortColumn, sortOrder); return true; } beginInsertRows(createIndexForItem(parent), parent->childCount(), parent->childCount()); { parent->appendChild(item); } endInsertRows(); return true; } emit layoutAboutToBeChanged(); auto it = parent->childItems.end(); if (sortOrder == Qt::AscendingOrder) it = acomp.insertSorted(sortColumn, parent->childItems, item); else it = dcomp.insertSorted(sortColumn, parent->childItems, item); parent->childItems.insert(it, item); emit layoutChanged(); return true; }
int compare(const T1& x, const T2& y) const { return m_comp.compare(operator()(x), operator()(y)); }
inline int EffectiveCompare_Aux(const Compare& comp, const T1& t1, const T2& t2, boost::mpl::true_ hasTriCompare) { return comp.compare(t1, t2); }
// //using namespace pugi; int main() { int ok=0; int fail=0; string xml("<Search name='request_001' id='12345'><Filters><Filter name='CPU-Frequency' /><Filter name='MEM-Count' /><Filter name='OS-Name' /></Filters><Data><Compare type='OR'><Compare type='AND'><Atrybute name='CPU-frequency' compType='>=' value='1.0GHz' /><Atrybute name='CPU-frequency' compType='<=' value='2.0GHz' /></Compare><Atrybute name='MEM-Count' compType='>=' value='4GB' /></Compare></Data></Search>"); cout<<"Konstruktor domyslny -> "; Search sz; if(sz.getName()!="") { ++ok; cout<<"OK :"<<sz.getName()<<","<<sz.getId()<<endl; } else { ++fail; cout<<"FAIL "<<endl; } Search szuka; string s1("szukam"); cout<<"Nadanie nazwy -> "; szuka.setName(s1); if(s1==szuka.getName()) { ++ok; cout<<"OK :"<<sz.getName()<<endl; } else { ++fail; cout<<"FAIL "<<endl; } int id_n=60; cout<<"Nadanie nowej wartości id -> "; szuka.setId(id_n); if(szuka.getIdI()==id_n) { ++ok; cout<<"OK :"<<szuka.getId()<<endl; } else { ++fail; cout<<"FAIL "<<szuka.getId()<<endl; } Atribute* at=new Atribute(); vector<Atribute*> k; k.push_back(at); vector<Atribute> k2; Monitor m; Monitor m1("mon1",k); m1.addAtrib(at); m.addAtrib(at); m.addAtrib(at); m.addAtrib(at); at->setName("nnn"); m.addAtrib(at); Response rr; rr.addMonitor(&m); rr.addMonitor(&m); rr.addMonitor(&m1); vector<Monitor*> mov=rr.getMonitor(); Response rr1(3,mov); int r=mov.size(); Compare c; c.addInfo(at); at->setType("xxx"); c.addInfo(at); vector<Info*> n=c.getInfo(); r=n.size(); Compare c2; c2.Copy(c); c2.addInfo(at); c2.addInfo(&c); int siz=szuka.getComp().size(); cout<<"Dodanie porównania -> "; szuka.addCompare(&c2); if(szuka.getComp().size()>siz) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } szuka.addCompare(&c); string* napis=new string("napis"); siz=szuka.getFilters().size(); cout<<"Dodanie filtra -> "; szuka.addFilter(napis); if(szuka.getFilters().size()>siz) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } //setCompare vector<Compare* > c_vec; c_vec.push_back(&c); c_vec.push_back(&c2); c_vec.push_back(&c); c_vec.push_back(&c); c_vec.push_back(&c2); siz=szuka.getComp().size(); cout<<"Wstawienie nowego wektora porównań -> "; szuka.setCompare(c_vec); if(szuka.getComp().size()!=siz) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } //setFilters vector<string*> fil_v; siz=szuka.getFilters().size(); cout<<"ustawienie nowych filtrów -> "; szuka.setFilters(fil_v); if(siz!=szuka.getFilters().size()) { ++ok; cout<<"OK "<<endl; } else { ++fail; cout<<"FAIL "<<endl; } cout<<"Konstruktor zależny od striga zawierającego XMLa -> "; Search szuka2(xml); //szuka2.loadS(xml); if(szuka2.getName()!=""&&szuka2.getIdI()>0) { ++ok; cout<<"OK"; cout<<endl<<" --> utworzony obiekt o nazwie:"<<szuka2.getName()<<" i id: "<<szuka2.getId()<<endl; cout<<" --> z filtrami:"<<endl; vector<string*> vs=szuka2.getFilters(); r=vs.size(); for(int i=0;i<r;++i) { string ns=(*vs[i]); cout<<" "<<ns<<endl; } cout<<" --> z "; vector<Compare*> vc2=szuka2.getComp(); cout<<vc2.size()<<" elementami porównawczymi:"<<endl; r=vc2.size(); for(int i=0;i<r;++i) { int rr=vc2[i]->getInfo().size(); cout<<"\t type: "<<vc2[i]->getType()<<" , rozmiar: "<<rr<<endl; for(int j=0;j<rr;++j) { Compare* cc=new Compare(); Atribute* ati=new Atribute(); if(dynamic_cast<Compare*>(vc2[i]->getInfo()[j])) { cc=(dynamic_cast<Compare*>(vc2[i]->getInfo()[j]))->Copy(); int r2=cc->getInfo().size(); cout<<"\t\t Porownanie: "<<cc->getType()<<" , rozmiar: "<<r2<<endl; for(int k=0;k<r2;++k) { Compare* cc1=new Compare(); Atribute* at1=new Atribute(); if(dynamic_cast<Compare*>(cc->getInfo()[k])) { cc1=(dynamic_cast<Compare*>(cc->getInfo()[k]))->Copy(); cout<<"\t\t\t Porownanie: "<<cc1->getType()<<" , rozmiar: "<<cc1->getInfo().size()<<endl; delete cc1; } else { if(dynamic_cast<Atribute*>(cc->getInfo()[k])) { at1=(dynamic_cast<Atribute*>(cc->getInfo()[k]))->Copy(); cout<<"\t\t\t Atrybut: "<<at1->getName()<<" , "<<at1->getType()<<" , "<<at1->getValue()<<endl; delete at1; } else { cout<<"FAIL"<<endl; } } } delete cc; } else { if(dynamic_cast<Atribute*>(vc2[i]->getInfo()[j])) { ati=(dynamic_cast<Atribute*>(vc2[i]->getInfo()[j]))->Copy(); cout<<"\t\t Atribut: "<<ati->getName()<<" , "<<ati->getType()<<" , "<<ati->getValue()<<endl; delete ati; } else { cout<<"FAIL"; } } } } } else { ++fail; cout<<"NIC"<<endl; } cout<<"Podanie niepoprawnego ciagu "<<endl; string inny("<cos></cos>"); Search s21(inny); cout<<s21.getName()<<" , "<<s21.getId()<<" , Porownania: "<<s21.getComp().size()<<" , filtry "<<s21.getFilters().size()<<endl; Search s33; s33.loadS(""); cout<<s33.getName()<<" , "<<s33.getId()<<" , Porownania: "<<s33.getComp().size()<<" , filtry "<<s33.getFilters().size()<<endl; cout<<endl<<"Przeprowadzono "<<fail+ok<<" testów, gdzie:"<<endl<<"-> Poprawnych: "<<ok<<endl<<"-> Niepoprawnych: "<<fail<<endl; return 0; }