30 #define _TREENODE_H_ 1
40 #define DEBUG_TREENODE 0
52 template <
class Tcontained >
100 cerr <<
"Cloning TreeNode. This node ";
110 cerr <<
"Deleting TreeNode. This node ";
157 throw E(
"This TreeNode's index is invalid (not yet set)");
174 template <
class Tcontained>
178 if( ExistsSuccessor(sucI) )
181 cout <<
"_m_successor["<< sucI<<
"] already set: overwriting!\n";
183 _m_successor[sucI] = suc;
187 std::pair< Index, TreeNode<Tcontained>* > arg_pair =
188 std::make_pair(sucI, suc);
189 std::pair< typename std::map< Index, TreeNode<Tcontained>* >::iterator,
bool>
191 result_pair = _m_successor.insert(arg_pair);
192 if(result_pair.second ==
false)
194 std::stringstream ss;
195 ss <<
"TreeNode<Tcontained>::SetSuccessor insertion failed, "
196 <<
"but _m_successor["<< sucI<<
"] wasn't already set ?!?";
204 template <
class Tcontained>
207 if(_m_successor.find(sucI)==_m_successor.end())
208 throw EInvalidIndex(
"TreeNode::GetSuccessor successor not found");
210 return(_m_successor[sucI]);
213 template <
class Tcontained>
216 if(_m_successor.find(sucI)==_m_successor.end())
223 template <
class Tcontained>
226 if(_m_containedElem != 0)
228 std::cout <<
"index: "<<_m_index<<
" - ";
229 _m_containedElem->Print();
233 template <
class Tcontained>
236 if(_m_containedElem != 0)
239 std::cout <<
"index: ";
241 std::cout<< _m_index;
243 std::cout <<
"INVALID";
245 _m_containedElem->Print();
246 std::cout << std::endl;
248 typename std::map< Index, TreeNode<Tcontained>*>::const_iterator it =
249 _m_successor.begin();
250 while(it != _m_successor.end())
252 if(it->second != 0) it->second->Print();