home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
cset21v1.zip
/
IBMCPP
/
IBMCLASS
/
IASRTMAP.C
< prev
next >
Wrap
Text File
|
1993-09-22
|
4KB
|
122 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 Key >
INumber IASortedMap < Element, Key >::
numberOfOccurrences (Element const& element) const
{ if (contains (element))
return 1;
else
return 0;
}
template < class Element, class Key >
IBoolean IASortedMap < Element, Key >::
locateNext (Element const&, ICursor& cursor) const
{ elementAt (cursor); // just for precondition checking
cursor.invalidate ();
return False;
}
template < class Element, class Key >
INumber IASortedMap < Element, Key >::
removeAllOccurrences (Element const& element)
{ if (remove (element))
return 1;
else
return 0;
}
template < class Element, class Key >
IBoolean IASortedMap < Element, Key >::
operator == (IASortedMap < Element, Key > const& collection) const
{ if (numberOfElements () != collection.numberOfElements ())
return False;
return containsAllFrom (collection);
}
template < class Element, class Key >
IBoolean IASortedMap < Element, Key >::
operator != (IASortedMap < Element, Key > const& collection) const
{ return ! operator == (collection);
}
template < class Element, class Key >
INumber IASortedMap < Element, Key >::
numberOfElementsWithKey (Key const& key) const
{ if (containsElementWithKey (key))
return 1;
else
return 0;
}
template < class Element, class Key >
IBoolean IASortedMap < Element, Key >::
locateNextElementWithKey (Key const&, ICursor& cursor) const
{ elementAt (cursor); // just for precondition checking
cursor.invalidate ();
return False;
}
template < class Element, class Key >
INumber IASortedMap < Element, Key >::
removeAllElementsWithKey (Key const& key)
{ if (removeElementWithKey (key))
return 1;
else
return 0;
}
template < class Element, class Key >
INumber IASortedMap < Element, Key >::
numberOfDifferentKeys () const
{ return numberOfElements ();
}
template < class Element, class Key >
IBoolean IASortedMap < Element, Key >::
setToNextWithDifferentKey (ICursor& cursor) const
{ return setToNext (cursor);
}
template < class Element, class Key >
long IASortedMap < Element, Key >::
compare (IASortedMap < Element, Key > const& collection,
long (*comparisonFunction) (Element const&, Element const&)) const
{ long result = 0;
ICursor *thisCursor = newCursor ();
ICursor *collectionCursor = collection.newCursor ();
for (thisCursor->setToFirst (), collectionCursor->setToFirst ();
result == 0 && thisCursor->isValid () && collectionCursor->isValid ();
thisCursor->setToNext (), collectionCursor->setToNext ()) {
result = (*comparisonFunction) (this->elementAt (*thisCursor),
collection.elementAt (*collectionCursor));
}
if (result == 0) {
if (thisCursor->isValid () && ! collectionCursor->isValid ())
result = 1;
else if (! thisCursor->isValid () && collectionCursor->isValid ())
result = -1;
else {
}
}
delete thisCursor;
delete collectionCursor;
return result;
}