Shadowrun: Awakened 29 September 2011 - Build 871
ManagedVector.h
Go to the documentation of this file.
00001 #ifndef __MANAGEDVECTOR_H
00002 #define __MANAGEDVECTOR_H
00003 
00004 #include "CodeGenMacros.h"
00005 #include <vector>
00006 
00012 template <class Value>
00013 class ManagedVector : public std::vector<Value*>
00014 {
00015 protected:
00016         bool _manageMemory;
00017 
00018 public:
00022     ManagedVector() : _manageMemory(false) 
00023     {
00024     }
00025 
00030     ManagedVector(bool manageMemory) : _manageMemory(manageMemory) 
00031     {
00032     }
00033 
00038     virtual ~ManagedVector()
00039     {
00040         //if we are not managing memory, then abort
00041         if(!_manageMemory)
00042             return;
00043 
00044         std::vector<Value*>::const_iterator iter = begin();
00045         std::vector<Value*>::const_iterator endIter = end();
00046         while(iter != endIter)
00047         {
00048             delete (*iter);
00049             ++iter;
00050         }
00051     }
00052 
00053     //If "managed" is true then delete values in destructor, else do nothing
00054     INLINE GET(getManaged, bool, _manageMemory)
00055     INLINE SET(setManaged, bool, _manageMemory)
00056 };
00057 
00058 #endif

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net