// Dictionary Class Header

#ifndef INCLUDE_DICTIONARY
#define INCLUDE_DICTIONARY

#include <map>

namespace ISR
{
          typedef std::map<std::string, int> WordMap;

          class cDictionary
          {
            public:
                     cDictionary();            // ctor
                    ~cDictionary();            // dctor
        
                     void PrintHighReferences(bool occurances = false);
                     void PrintAlphabetical(bool occurances = false);
                     void Populate(bool display = false);
                     void Populate(cDictionary &Stop, bool display = false);                     
                     bool PopulateCheckFile(bool display = false);
                     bool PopulateCheckFile(cDictionary &Stop, bool display = false);                     

                     WordMap::const_iterator BeginDict() { return mTable.begin(); }
                     WordMap::const_iterator EndDict() { return mTable.end(); }

                     int AddRef( const std::string &);
                     int ChangeRef( const std::string &, int );
                     int SubRef( const std::string &);
                     int GetRef( const std::string &);
                     
                     unsigned int Size( void ) { return (unsigned int)mTable.size(); }

            private:
                     WordMap mTable;
          };
}
#endif // INCLUDE_DICTIONARY