Cache.h
Go to the documentation of this file.
00001 #ifndef Cache_H
00002 #define Cache_H
00003 #include <map>
00004 #include <queue>
00005 
00006 using namespace std;
00007 
00008 template <class T>
00009 
00010 // temporary size limit
00011 #define upperLimit 5000
00012 
00013 class Cache 
00014 {
00015 private:
00016         map<string, T> keyToValue;
00017         queue<string> keyQueue;
00018 public:
00019         Cache()
00020         {
00021         }
00022         virtual ~Cache()
00023         {
00024 
00025         }
00026 
00027         void put(string key, T value)
00028         {
00029                 if(keyQueue.size() >= upperLimit)
00030                 {
00031                         string toDelete = keyQueue.front();
00032                         keyToValue.erase(toDelete);
00033                         keyQueue.pop();
00034                 }
00035                 keyToValue[key] = value;
00036                 keyQueue.push(key);
00037         }
00038         bool hasKey(string key)
00039         {
00040                 return keyToValue.find(key) != keyToValue.end();
00041         }
00042 
00043         T& get(string key)
00044         {
00045                 return keyToValue[key];
00046         }
00047 
00048         void purge()
00049         {
00050                 keyToValue.clear();
00051                 while(!keyQueue.empty())
00052                 {
00053                         keyQueue.pop();
00054                 }
00055         }
00056 
00057 };
00058 
00059 #endif 


appl
Author(s): petercai
autogenerated on Tue Jan 7 2014 11:02:28