home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) IBM Corp. 1992 */
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- setToRoot () {
- return ivCollection->setToRoot (*this);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- setToChild (IPosition position) {
- return ivCollection->setToChild (position, *this);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- setToFirstExistingChild () {
- return ivCollection->setToFirstExistingChild (*this);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- setToNextExistingChild () {
- return ivCollection->setToNextExistingChild (*this);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- setToLastExistingChild () {
- return ivCollection->setToLastExistingChild (*this);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- setToPreviousExistingChild () {
- return ivCollection->setToPreviousExistingChild (*this);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::Cursor::
- isValid () const {
- return ivNode != 0 && *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 >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
- constantFunctionIteration (void *iterationFunction,
- void* env,
- void const* node) {
- return (*(Boolean (*) (Element const&, void*)) iterationFunction)
- (((Node const*)node)->ivElement, env);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
- functionIteration (void *iterationFunction, void* env, void* node) {
- return (*(Boolean (*) (Element&, void*)) iterationFunction)
- (((Node*)node)->ivElement, env);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- Boolean 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 >
- Boolean IGTabularTree < Element, ElementOps, pNumberOfChildren >::
- iteratorIteration (void* iterator, void* node) {
- return ((IIterator < Element >*)iterator)->
- applyTo (((Node*)node)->ivElement);
- }
-
- template < class Element, class ElementOps, INumber pNumberOfChildren >
- ElementOps IGTabularTree < Element, ElementOps, pNumberOfChildren >::
- cvElementOps;