blob: 96640334e2b92bef42465d58eb57bc9a1b75f6a6 [file] [log] [blame]
//#####################################################################
// Copyright 2004, Geoffrey Irving.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class SPLAY_TREE_NODE
//#####################################################################
#ifndef __SPLAY_TREE_NODE__
#define __SPLAY_TREE_NODE__
namespace PhysBAM
{
template<class T, class TV>
class SPLAY_TREE_NODE
{
public:
SPLAY_TREE_NODE<T, TV> *left, *right;
T key;
TV value;
SPLAY_TREE_NODE (SPLAY_TREE_NODE<T, TV>*const left_input, SPLAY_TREE_NODE<T, TV>*const right_input, const T& key_input, const TV& value_input)
: left (left_input), right (right_input), key (key_input), value (value_input)
{}
~SPLAY_TREE_NODE()
{
delete left;
delete right;
}
template<class T2> void Iterate (T2 data, void (*f) (T2, SPLAY_TREE_NODE<T, TV>*))
{
if (left) left->Iterate (data, f);
f (data, this);
if (right) right->Iterate (data, f);
}
//#####################################################################
};
}
#endif