Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

store.hpp

Go to the documentation of this file.
00001 #ifndef _STORE_HPP
00002 #define _STORE_HPP
00003 
00004 #include <stack>
00005 
00014 template <typename T>
00015 class Store {
00016 
00017  protected:
00018 
00022   std::stack<T*> items;
00023 
00024  public:
00025 
00029   Store() { }
00030   
00034   ~Store();
00035 
00039   T* newItem();
00040 
00044   void deleteItem(T* item);
00045 
00046 };
00047 
00048 template <typename T>
00049 Store<T>::~Store() {
00050   while (!items.empty()) {
00051     delete items.top();
00052     items.pop();
00053   }
00054 }
00055 
00056 template <typename T>
00057 T* Store<T>::newItem() {
00058   if (items.empty())
00059     return new T();
00060   else {
00061     T* item = items.top();
00062     items.pop();
00063     return item;
00064   }
00065 }
00066 
00067 template <typename T>
00068 void Store<T>::deleteItem(T* item) {
00069   items.push(item);
00070 }
00071 
00072 #endif

Generated on Wed May 25 14:39:19 2005 for Arak by doxygen 1.3.6