Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

AllocStack.h

Go to the documentation of this file.
00001 /*  AllocStack.h - Object pointer stack with auto-deletion semantics
00002     Copyright (C) 2001-2004 Mark Weaver
00003     Written by Mark Weaver <mark@npsl.co.uk>
00004 
00005     Part of the Open-Win32 library.
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public
00017     License along with this library; if not, write to the
00018     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019     Boston, MA  02111-1307, USA.
00020 */
00021 
00026 #ifndef OW32_AllocStack_h
00027 #define OW32_AllocStack_h
00028 
00029 namespace OW32
00030 {
00031 
00033 template <class T>
00034 class CAllocStack
00035 {
00036 private:
00038     std::stack<T*> m_allocs;
00039 
00040 public:
00044     void push(T* x) {
00045         m_allocs.push(x);
00046     }
00047 
00050     void pop() {
00051         m_allocs.pop();
00052     }
00053 
00057     T* top() const { return m_allocs.top(); }
00058 
00060     ~CAllocStack()
00061     {
00062         while (!m_allocs.empty()) {
00063             T* x = m_allocs.top();
00064             m_allocs.pop();
00065             delete x;
00066         }
00067     }
00068 
00072     bool empty() { return m_allocs.empty(); }
00073 };
00074 
00075 }; // namespace OW32
00076 
00077 #endif // OW32_AllocStack_h

Generated on Sun Jun 5 01:29:17 2005 for OW32 by  doxygen 1.3.9.1