home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
cset21v1.zip
/
IBMCPP
/
IBMCLASS
/
ITBTRE.C
< prev
next >
Wrap
Text File
|
1993-09-22
|
5KB
|
123 lines
/*******************************************************************************
* *
* COPYRIGHT: *
* IBM C/C++ Tools Version 2.01 - Collection Class Library *
* Licensed Materials - Property of IBM *
* (C) Copyright IBM Corporation 1992, 1993 *
* All Rights Reserved *
* US Government Users Restricted Rights - Use, duplication, or disclosure *
* restricted by GSA ADP Schedule Contract with IBM Corp. *
* *
*******************************************************************************/
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToRoot () {
return ivCollection->setToRoot (*this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToChild (IPosition position) {
return ivCollection->setToChild (position, *this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToParent () {
return ivCollection->setToParent (*this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToFirstExistingChild () {
return ivCollection->setToFirstExistingChild (*this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToNextExistingChild () {
return ivCollection->setToNextExistingChild (*this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToLastExistingChild () {
return ivCollection->setToLastExistingChild (*this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
setToPreviousExistingChild () {
return ivCollection->setToPreviousExistingChild (*this);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
isValid () const {
return ivNode != 0;
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
void IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
invalidate () {
ivNode = 0;
}
template < class Element, class ElementOps, int numberOfChildren >
void IGTabularTree < Element, ElementOps, numberOfChildren >::
copySubtree (Node*& to, Node* from)
{ IASSERT (from != 0);
to = newNode (from->ivElement);
for (INumber n = 0; n < numberOfChildren; n++) {
if (from->ivChildren [n] == 0)
to->ivChildren [n] = 0;
else {
copySubtree (to->ivChildren [n], from->ivChildren [n]);
to->ivChildren [n]->ivParent = to;
}
}
}
template < class Element, class ElementOps, int numberOfChildren >
INumber IGTabularTree < Element, ElementOps, numberOfChildren >::
removeSubtree (Node* node)
{ IASSERT (node != 0);
INumber result = 0;
for (INumber n = 0; n < numberOfChildren; n++) {
if (node->ivChildren [n] != 0)
result += removeSubtree (node->ivChildren [n]);
}
delete node;
return result + 1;
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
constantFunctionIteration (void *iterationFunction,
void* env,
void const* node) {
return (*(IBoolean (*) (Element const&, void*)) iterationFunction)
(((Node const*)node)->ivElement, env);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
functionIteration (void *iterationFunction, void* env, void* node) {
return (*(IBoolean (*) (Element&, void*)) iterationFunction)
(((Node*)node)->ivElement, env);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
constantIteratorIteration (void* iterator, void const* node) {
return ((IConstantIterator < Element >*)iterator)->
applyTo (((Node const*)node)->ivElement);
}
template < class Element, class ElementOps, INumber pNumberOfChildren >
IBoolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
iteratorIteration (void* iterator, void* node) {
return ((IIterator < Element >*)iterator)->
applyTo (((Node*)node)->ivElement);
}