home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
cset21v1.zip
/
IBMCPP
/
IBMCLASS
/
IAVLKSS.C
< prev
next >
Wrap
Text File
|
1993-09-22
|
6KB
|
137 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. *
* *
*******************************************************************************/
#include <ibexcept.h>
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Cursor::setToFirst () {
return ivCollection->setToFirst (*this);
}
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Cursor::setToNext () {
return ivCollection->setToNext (*this);
}
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Cursor::isValid () const {
return ivNode != 0;
}
template < class Element, class Key, class ElementOps >
void IGAvlKeySortedSet < Element, Key, ElementOps >::Cursor::invalidate () {
ivNode = 0;
}
template < class Element, class Key, class ElementOps >
IAvlKeySortedSetImpl::Node* IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
newNode (void const* element) const {
Node *result = new Node (*(Element const*) element);
ICHECK (result != 0, IOutOfMemory, IOutOfMemoryText)
return result;
}
template < class Element, class Key, class ElementOps >
IAvlKeySortedSetImpl::Node* IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
copyNode (void const* node) const {
Node *result = new Node (((Node const*) node)->ivElement);
ICHECK (result != 0, IOutOfMemory, IOutOfMemoryText)
return result;
}
template < class Element, class Key, class ElementOps >
void IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
deleteNode (void* node) const {
delete (Node*) node;
}
template < class Element, class Key, class ElementOps >
void* IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
elementAt (void* node) const
{ return &((Node*) node)->ivElement;
}
template < class Element, class Key, class ElementOps >
void const* IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
constElementAt (void const* node) const
{ return &((Node*) node)->ivElement;
}
template < class Element, class Key, class ElementOps >
void const* IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
keyAt (void const* node) const
{ return &elementOps().key (((Node*) node)->ivElement);
}
template < class Element, class Key, class ElementOps >
long IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
compareKeyToElement (void const* node, void const* element) const
{ return elementOps().keyOps.compare
(elementOps().key (((Node const*)node)->ivElement),
elementOps().key (*(Element const*)element));
}
template < class Element, class Key, class ElementOps >
long IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
compareKeyToKey (void const* node, void const* key) const
{ return elementOps().keyOps.compare
(elementOps().key (((Node const*)node)->ivElement),
(*(Key const*)key));
}
template < class Element, class Key, class ElementOps >
void IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
copyFrom (void* node, void const* element) const
{ elementOps().assign
(((Node*)node)->ivElement, *(Element const*)element);
}
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
constantFunctionIteration (void *iterationFunction,
void* env,
void const* node) {
return (*(IBoolean (*) (Element const&, void*)) iterationFunction)
(((Node const*)node)->ivElement, env);
}
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
functionIteration (void *iterationFunction, void* env, void* node) {
return (*(IBoolean (*) (Element&, void*)) iterationFunction)
(((Node*)node)->ivElement, env);
}
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
constantIteratorIteration (void* iterator, void const* node) {
return ((IConstantIterator < Element >*)iterator)->
applyTo (((Node const*)node)->ivElement);
}
template < class Element, class Key, class ElementOps >
IBoolean IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
iteratorIteration (void* iterator, void* node) {
return ((IIterator < Element >*)iterator)->
applyTo (((Node*)node)->ivElement);
}
template < class Element, class Key, class ElementOps >
long IGAvlKeySortedSet < Element, Key, ElementOps >::Operations::
functionComparison (void *comparisonFunction,
void const* node1,
void const* node2) {
return (*(long (*) (Element const&, Element const&) const)
comparisonFunction)
( ((Node const*)node1)->ivElement,
((Node const*)node2)->ivElement );
}