Beispiel #1
0
void rsd (arbore *rad)
{
    if (rad)
    {
        printf("%d ", rad->info);
        rsd(rad->stg);
        rsd(rad->dr);
    }
}
Beispiel #2
0
//----------------------------------------------------------------------------------------------------
//for caching objects
/*static*/ unsigned Specific::stackid(FncT _pf){
	Locker<Mutex> lock(Thread::gmutex());
	SpecificData &rsd(SpecificData::current());
	cassert(rsd.ops.size() < rsd.ops.capacity());
	cv.push_back(_pf);
	return cv.size() - 1;
}
Beispiel #3
0
/*static*/ void* Specific::pop(unsigned _id){
	SpecificData &rsd(SpecificData::current());
	if(_id >= rsd.ops.size()){
		rsd.ops.resize(_id + 1);
	}else if(rsd.ops[_id].pnode){
		BufferNode	*pbn(rsd.ops[_id].pnode);
		void 		*pv(voidPointer(pbn));
		rsd.ops[_id].pnode = pbn->pnext;
		--rsd.ops[_id].sz;
		void **ppv = reinterpret_cast<void**>(pbn);
		*ppv = pbn;
		return pv;
	}
	++rsd.ops[_id].cp;
	return NULL;
}
Beispiel #4
0
/*static*/ int Specific::push(void *_pv, unsigned _id, unsigned _maxcp){
	SpecificData					&rsd(SpecificData::current());
	cassert(_pv);
	cassert(_id < rsd.ops.size());
	SpecificData::ObjectCachePoint	&rocp(rsd.ops[_id]);
	if(rocp.sz < _maxcp){
		checkObjectBuffer(_pv);
		BufferNode *pbn(bufferNodePointer(_pv));
		pbn->pnext = rocp.pnode;
		rocp.pnode = pbn;
		++rocp.sz;
		return 0;
	}
	--rsd.ops[_id].cp;
	return -1;
}
Beispiel #5
0
/*static*/ void Specific::pushBuffer(char *&_pb, unsigned _id){
	cassert(_pb);
	cassert(_id < SpecificData::Capacity);
	SpecificData				&rsd(SpecificData::current());
	SpecificData::CachePoint	&rcp(rsd.cps[_id]);
	idbgx(Debug::specific,"pushBuffer "<<_id<<" cp "<<rcp.cp<<' '<<(void*)_pb);
	if(rcp.sz < rsd.pcc->stackCapacity(_id)){
		BufferNode *pbn(reinterpret_cast<BufferNode*>(_pb));
		++rcp.sz;
		pbn->pnext = rcp.pnode;
		rcp.pnode = pbn;
	}else{
		--rcp.cp;
		delete []_pb;
	}
	_pb = NULL;
}
Beispiel #6
0
/*static*/ char* Specific::popBuffer(unsigned _id){
	cassert(_id < SpecificData::Capacity);
	SpecificData				&rsd(SpecificData::current());
	SpecificData::CachePoint	&rcp(rsd.cps[_id]);
	char *tb;
	if(rcp.pnode){
		BufferNode *pnbn = rcp.pnode->pnext;
		tb = reinterpret_cast<char*>(rcp.pnode);
		rcp.pnode = pnbn;
		--rcp.sz;
	}else{
		++rcp.cp;
		tb = new char[indexToCapacity(_id)];
	}
	idbgx(Debug::specific,"popBuffer "<<_id<<" cp "<<rcp.cp<<' '<<(void*)tb);
	return tb;
}
Beispiel #7
0
int main()
{
    int x,n;
    arbore *rad = NULL;

    insert(&rad, 50);
    insert(&rad, 30);
    insert(&rad, 80);
    insert(&rad, 60);
    insert(&rad, 90);
    insert(&rad, 70);
    insert(&rad, 20);
    insert(&rad, 40);
    insert(&rad, 35);




    printf("Ce nr cautam ?");
    scanf ("%d", &x);

    if (search(rad, x)== 1)
        printf("Nr. cautat exista \n");
    else printf("Nr. cautat nu exista \n");

    printf("Maxim: %d \n", findMax(rad)->info);

    delete0 (&rad, 35, 0);

    printf("\n");
    rsd(rad);

    printf("\n");


    printf("Hello world!\n");

    return 0;
}