00001
00002
00003 #ifndef XAODROOTACCESS_TOOLS_TAUXVECTOR_H
00004 #define XAODROOTACCESS_TOOLS_TAUXVECTOR_H
00005
00006
00007 #include "AthContainersInterfaces/IAuxTypeVector.h"
00008
00009
00010 class TClass;
00011 class TVirtualCollectionProxy;
00012 namespace SG {
00013 class IAuxTypeVectorFactory;
00014 }
00015
00016 namespace xAOD {
00017
00032 class TAuxVector : public SG::IAuxTypeVector {
00033
00034 public:
00036 TAuxVector( const SG::IAuxTypeVectorFactory* factory,
00037 ::TClass* cl, size_t size, size_t capacity );
00039 TAuxVector( const TAuxVector& parent );
00041 ~TAuxVector();
00042
00044 TAuxVector& operator= ( const TAuxVector& other );
00045
00048
00050 virtual SG::IAuxTypeVector* clone() const;
00051
00053 virtual void* toPtr();
00055 virtual void* toVector();
00056
00058 virtual size_t size() const;
00059
00061 virtual void resize( size_t sz );
00063 virtual void reserve( size_t sz );
00065 virtual void shift( size_t pos, ptrdiff_t offs );
00066
00068
00069 private:
00071 void copyRange( const void* src, void* dst, size_t n );
00072
00073 void clearRange( void* dst, size_t n );
00074
00076 const SG::IAuxTypeVectorFactory* m_factory;
00078 ::TVirtualCollectionProxy* m_proxy;
00080 void* m_vec;
00081
00082 };
00083
00084 }
00085
00086 #endif // XAODROOTACCESS_TOOLS_TAUXVECTOR_H