//---------------------------------------------------------------- // File and Version Information: // $Id: AstAbsSTLMap.cc,v 1.1.1.1 2005/03/29 16:49:05 steinke Exp $ // // Description: // Implementation of AstAbsMap class. // // Author List: // Matthias Steinke // // Bertram Kopf (RUB) migrated to PandaRoot //--------------------------------------------------------------- //----------------------- // This Class's Header -- //----------------------- #include "AstAbsSTLMap.h" //------------- // C Headers -- //------------- extern "C" { } //--------------- // C++ Headers -- //--------------- #include //------------------------------- // Collaborating Class Headers -- //------------------------------- //----------------------------------------------------------------------- // Local Macros, Typedefs, Structures, Unions and Forward Declarations -- //----------------------------------------------------------------------- // ---------------------------------------- // -- Public Function Member Definitions -- // ---------------------------------------- //---------------- // Constructors -- //---------------- template AstAbsSTLMap::AstAbsSTLMap(size_t buckets) : _myHashFunction(&AstAbsSTLMap::hashFunction), _hashSetT1(new std::set), _buckets(buckets) {} template AstAbsSTLMap::AstAbsSTLMap(unsigned (*hashFunction)(T1 *const &), size_t buckets) : _myHashFunction(hashFunction), _hashSetT1(new std::set), _buckets(buckets) {} //-------------- // Destructor -- //-------------- template AstAbsSTLMap::~AstAbsSTLMap() { delete _hashSetT1; } //------------- // Modifiers -- //------------- template void AstAbsSTLMap::append( T1* const & t1ref, T2* const & t2ref){ _hashSetT1->insert(t1ref); this->appendToMap(t1ref, t2ref); } // ------------------------------------------- // -- Protected Function Member Definitions -- // ------------------------------------------- template bool AstAbsSTLMap::findIntersectionSet(const std::set &withThis, std::set &returnedSet) const{ std::set result; typename std::set::const_iterator iter = withThis.begin(); while (iter != withThis.end()) { if (_hashSetT1->find(*iter) != _hashSetT1->end()) result.insert(*iter); ++iter; } returnedSet.clear(); returnedSet = result; if (returnedSet.size()==0) return false; return true; } template bool AstAbsSTLMap::findDifferenceSet(const std::set &withThis, std::set &returnedSet) const{ returnedSet=withThis; typename std::set::iterator iter = _hashSetT1->begin(); typename std::set::iterator found; while (iter != _hashSetT1->end()) { if ( (found = returnedSet.find(*iter)) != returnedSet.end()) returnedSet.erase(found); ++iter; } if (returnedSet.size()==0) return false; return true; } // ----------------------------------------------- // -- Static Data & Function Member Definitions -- // ----------------------------------------------- template unsigned AstAbsSTLMap::hashFunction(T1 *const& p) { return ((unsigned long) p >> 5) & 0x03ff; }