// { dg-do assemble }
|
// { dg-do assemble }
|
// { dg-options "-w -O3" }
|
// { dg-options "-w -O3" }
|
// GROUPS passed incdec
|
// GROUPS passed incdec
|
typedef void* Pix;
|
typedef void* Pix;
|
class ndbArtPtrVec
|
class ndbArtPtrVec
|
{
|
{
|
public:
|
public:
|
ndbArtPtrVec (ndbArtPtrVec&);
|
ndbArtPtrVec (ndbArtPtrVec&);
|
};
|
};
|
class intndbArtPtrVecMap
|
class intndbArtPtrVecMap
|
{
|
{
|
protected:
|
protected:
|
int count;
|
int count;
|
ndbArtPtrVec def;
|
ndbArtPtrVec def;
|
intndbArtPtrVecMap(ndbArtPtrVec& dflt);
|
intndbArtPtrVecMap(ndbArtPtrVec& dflt);
|
virtual ndbArtPtrVec& operator [] (int key) = 0;
|
virtual ndbArtPtrVec& operator [] (int key) = 0;
|
virtual void del(int key) = 0;
|
virtual void del(int key) = 0;
|
public:
|
public:
|
virtual Pix first() = 0;
|
virtual Pix first() = 0;
|
virtual void next(Pix& i) = 0;
|
virtual void next(Pix& i) = 0;
|
virtual int& key(Pix i) = 0;
|
virtual int& key(Pix i) = 0;
|
virtual ndbArtPtrVec& contents(Pix i) = 0;
|
virtual ndbArtPtrVec& contents(Pix i) = 0;
|
};
|
};
|
struct intndbArtPtrVecAVLNode
|
struct intndbArtPtrVecAVLNode
|
{
|
{
|
ndbArtPtrVec cont;
|
ndbArtPtrVec cont;
|
intndbArtPtrVecAVLNode(int h, ndbArtPtrVec& c,
|
intndbArtPtrVecAVLNode(int h, ndbArtPtrVec& c,
|
intndbArtPtrVecAVLNode* l=0, intndbArtPtrVecAVLNode* r=0);
|
intndbArtPtrVecAVLNode* l=0, intndbArtPtrVecAVLNode* r=0);
|
};
|
};
|
class intndbArtPtrVecAVLMap : intndbArtPtrVecMap
|
class intndbArtPtrVecAVLMap : intndbArtPtrVecMap
|
{
|
{
|
protected:
|
protected:
|
intndbArtPtrVecAVLNode* root;
|
intndbArtPtrVecAVLNode* root;
|
public:
|
public:
|
ndbArtPtrVec& operator [] (int key);
|
ndbArtPtrVec& operator [] (int key);
|
intndbArtPtrVecAVLMap(intndbArtPtrVecAVLMap&);
|
intndbArtPtrVecAVLMap(intndbArtPtrVecAVLMap&);
|
};
|
};
|
ndbArtPtrVec& intndbArtPtrVecAVLMap::operator [] (int item)
|
ndbArtPtrVec& intndbArtPtrVecAVLMap::operator [] (int item)
|
{
|
{
|
++count;
|
++count;
|
root = new intndbArtPtrVecAVLNode(item, def);
|
root = new intndbArtPtrVecAVLNode(item, def);
|
}
|
}
|
intndbArtPtrVecAVLMap::intndbArtPtrVecAVLMap(intndbArtPtrVecAVLMap& b) :intndbArtPtrVecMap(b.def)
|
intndbArtPtrVecAVLMap::intndbArtPtrVecAVLMap(intndbArtPtrVecAVLMap& b) :intndbArtPtrVecMap(b.def)
|
{
|
{
|
for (Pix i = b.first(); i != 0; b.next(i))
|
for (Pix i = b.first(); i != 0; b.next(i))
|
(*this)[b.key(i)] = b.contents(i);
|
(*this)[b.key(i)] = b.contents(i);
|
}
|
}
|
|
|