Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

GcPseudoNew.h

Go to the documentation of this file.
00001 // 
00002 // Copyright (C) CERN, Geneva 
00003 // 
00004 
00005 #ifndef _GCPSEUDONEW_H
00006 #define _GCPSEUDONEW_H
00007 #include <vector>
00008 
00009 #ifdef AIDA_STD
00010 # undef AIDA_STD
00011 #endif
00012 
00013 #ifdef AIDA_NOT_USE_STD
00014 # define AIDA_STD
00015 #else
00016 # define AIDA_STD std
00017 #endif
00018 
00046 template <class T > class GcPseudoNew : public PseudoNew <T>  {
00047 public:
00049   GcPseudoNew (void *libFunPtr) : PseudoNew <T> (libFunPtr) {}
00050 
00052   virtual ~GcPseudoNew () {
00053     size_t i;
00054     for (i=0 ; i <instances.size(); i++)
00055       delete instances[i];
00056   }
00057 
00061   virtual T* create() {
00062     T* newItem = (*(this->newMethodPtr))();
00063     instances.push_back(newItem);
00064     return newItem;
00065   }
00066 private:
00067   AIDA_STD::vector <T*> instances;
00071   GcPseudoNew (GcPseudoNew &oldG) {}
00072   GcPseudoNew (GcPseudoNew &oldG, void *libFunPtr) : 
00073     PseudoNew <T> (libFunPtr) {}
00074   GcPseudoNew(const GcPseudoNew &oldG, void *libFunPtr): 
00075     PseudoNew <T> (libFunPtr){}
00076   void operator = (GcPseudoNew &oldG) {}
00077 };
00078 
00079 #endif // _PSEUDONEW_H

Generated on Tue May 20 14:50:25 2003 for HepUtilities by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002