blob: ea07d2e976b0b0e72e8369f038a81c0a2fb8e078 [file] [log] [blame]
/* { dg-do compile } */
// { dg-timeout-factor 2.0 }
// { dg-additional-options "-std=c++11 -fsanitize=undefined -O2 -Wno-return-type" }
class ECoordinate { };
class EPoint {
public:
inline ECoordinate & y ();
};
ECoordinate & EPoint::y () { }
template < class KEY, class CONTENT > class AVLTree;
template < class KEY, class CONTENT > class AVLTreeNode {
friend class
AVLTree < KEY, CONTENT >;
KEY key;
void set_rthread (unsigned char b);
void set_lthread (unsigned char b);
};
template < class KEY, class CONTENT > class AVLTree {
public:
AVLTree ();
void insert (const KEY & key, const CONTENT & c);
AVLTreeNode < KEY, CONTENT > *root;
const KEY * _target_key;
virtual int compare (const KEY & k1, const KEY & k2) const;
void _add (AVLTreeNode < KEY, CONTENT > *&t);
virtual void _status (unsigned int) { }
};
template < class KEY, class CONTENT > void AVLTree < KEY, CONTENT >::_add (AVLTreeNode < KEY, CONTENT > *&t) {
int cmp = compare (*_target_key, t->key);
if (cmp == 0)
{ _status (1); }
}
template < class KEY, class CONTENT > void AVLTree < KEY, CONTENT >::insert (const KEY & key, const CONTENT & c) {
if (root == 0) {
root->set_rthread (1);
root->set_lthread (1);
}
else { _target_key = &key; _add (root); }
}
template < class KEY, class CONTENT > AVLTree < KEY, CONTENT >::AVLTree ()
: root (0) { }
class ContactRepository {
void insertContact (EPoint & pt, int val);
};
void ContactRepository::insertContact (EPoint & pt, int val) {
AVLTreeNode < ECoordinate, AVLTree < ECoordinate, int >*>*cont_x_node;
if (cont_x_node == __null)
{
AVLTree < ECoordinate, int >*insert_tree = new AVLTree < ECoordinate, int >;
insert_tree->insert (pt.y (), val);
}
}