00001 // This file's extension implies that it's C, but it's really -*- C++ -*-. 00002 // $Id$ 00011 #include "AthContainersInterfaces/IAuxTypeVectorFactory.h" 00012 #include "AthContainers/tools/AuxTypeVector.h" 00013 00014 00015 #ifndef ATHCONTAINERS_AUXTYPEVECTORFACTORY_H 00016 #define ATHCONTAINERS_AUXTYPEVECTORFACTORY_H 00017 00018 00019 namespace SG { 00020 00021 00028 template <class T> 00029 class AuxTypeVectorFactory 00030 : public IAuxTypeVectorFactory 00031 { 00032 public: 00038 virtual IAuxTypeVector* create (size_t size, size_t capacity) const; 00039 00040 00050 virtual void copy (void* dst, size_t dst_index, 00051 const void* src, size_t src_index) const; 00052 00053 00063 virtual void swap (void* a, size_t aindex, 00064 void* b, size_t bindex) const; 00065 00066 00072 virtual void clear (void* dst, size_t dst_index) const; 00073 00074 00078 virtual size_t getEltSize() const; 00079 00080 00084 virtual const std::type_info* tiVec() const; 00085 00086 00092 virtual bool isDynamic() const; 00093 }; 00094 00095 00096 } // namespace SG 00097 00098 00099 #include "AthContainers/tools/AuxTypeVectorFactory.icc" 00100 00101 00102 #endif // not ATHCONTAINERS_AUXTYPEVECTORFACTORY_H