![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
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.