#include "StringHash.h"

// A hash function for String class
template <class Dtype>
int StringHash<Dtype>::HashFunction(String Key){
  int RetVal=0xAAAAAAAA;
  for(int i=0;i<Key.Length();i++){
    int tmp=(int)Key[i];
    for(int j=0;j<5;j++)
      RetVal^=(tmp<<(j*7));
  }
  return RetVal%hashTableSize;
}

// Another hash function for String class
template <class Dtype>
int StringHash<Dtype>::SecondHash(String Key){
  int RetVal=0x55555555;
  for(int i=0;i<Key.Length();i++){
    int tmp=(int)Key[i];
      for(int j=0;j<7;j++)
        RetVal^=(tmp<<(j*5));
  }
  return RetVal%hashTableSize;
}
