| /* 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__ |