/* FILE: hashmap.h * DATE MODIFIED: 31-Aug-07 * DESCRIPTION: Part of the SREC graph compiler project source files. * * Copyright 2007, 2008 Nuance Communciations, Inc. * * * * Licensed under the Apache License, Version 2.0 (the 'License'); * * you may not use this file except in compliance with the License. * * * * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an 'AS IS' BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * * * *---------------------------------------------------------------------------*/ #ifndef __hashmap_h__ #define __hashmap_h__ #include <iostream> #include <map> #include <vector> template <typename T1, typename T2> class HashMap { public: //typedef T1 MapValue; HashMap(); void setName(std::string s); bool insert( T1 const & index, T2 const & value); bool remove( T1 const & index); bool isEmpty(); bool clear(); bool getFirst( T1 *index, T2 *value ); bool getNext( T1 *index, T2 *value ); bool getValue( T1 const & index, T2 *value); //returns value bool getIndex( T2 const & value, T1 *index ); //returns index void print(); void writeFile( std::string fileName ); typename std::map<T1,T2>::iterator begin(); typename std::map<T1,T2>::iterator end(); int size(); private: std::string m_Name; std::map<T1, T2> m_Map; typename std::map<T1,T2>::iterator m_pPos; unsigned int m_NextAutoIndex; }; #endif // __hashmap_h__