00001
00002
00003 #ifndef XAODROOTACCESS_TOOLS_TAUXVECTORFACTORY_H
00004 #define XAODROOTACCESS_TOOLS_TAUXVECTORFACTORY_H
00005
00006
00007 #include <TMethodCall.h>
00008
00009
00010 #include "AthContainersInterfaces/IAuxTypeVectorFactory.h"
00011
00012
00013 class TClass;
00014 class TVirtualCollectionProxy;
00015
00016 namespace xAOD {
00017
00032 class TAuxVectorFactory : public SG::IAuxTypeVectorFactory {
00033
00034 public:
00036 TAuxVectorFactory( ::TClass* cl );
00038 virtual ~TAuxVectorFactory();
00039
00042
00044 virtual SG::IAuxTypeVector* create( size_t size, size_t capacity ) const;
00045
00047 virtual void copy( void* dst, size_t dst_index,
00048 const void* src, size_t src_index ) const;
00049
00051 virtual void swap( void* a, size_t aindex,
00052 void* b, size_t bindex ) const;
00053
00055 virtual void clear( void* dst, size_t dst_index ) const;
00056
00058 virtual size_t getEltSize() const;
00059
00061 virtual const std::type_info* tiVec() const;
00062
00064 virtual bool isDynamic() const { return true; }
00065
00067
00068 private:
00070 ::TClass* m_class;
00072 ::TVirtualCollectionProxy* m_proxy;
00074 mutable ::TMethodCall m_assign;
00076 mutable void* m_defElt;
00077
00078 };
00079
00080 }
00081
00082 #endif // XAODROOTACCESS_TOOLS_TAUXVECTORFACTORY_H