示例#1
0
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);
}
示例#2
0
int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);
  Compare b;
  qDebug()<<b.min(1,20);
  return a.exec();
}
示例#3
0
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);
}
示例#4
0
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;
}
示例#8
0
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;
			}
	}
}
示例#9
0
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;
			}
	}
}
示例#10
0
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()));
};
示例#11
0
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;
}
示例#13
0
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;
    }
}
示例#15
0
/** 
 * 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);
}
示例#16
0
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;
}
示例#17
0
	int compare(const T1& x, const T2& y) const
	{
		return m_comp.compare(operator()(x), operator()(y));
	}
示例#18
0
inline int EffectiveCompare_Aux(const Compare& comp, const T1& t1, const T2& t2, boost::mpl::true_ hasTriCompare)
{
	return comp.compare(t1, t2);
}
示例#19
0
	//
	//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;
	}