00001
00002
00011 #ifndef ATHCONTAINERSINTERFACES_IAUXTYPEVECTORFACTORY_H
00012 #define ATHCONTAINERSINTERFACES_IAUXTYPEVECTORFACTORY_H
00013
00014
00015 #include <cstddef>
00016 #include <typeinfo>
00017
00018
00019 namespace SG {
00020
00021
00022 class IAuxTypeVector;
00023
00024
00042 class IAuxTypeVectorFactory
00043 {
00044 public:
00048 virtual ~IAuxTypeVectorFactory() {}
00049
00050
00056 virtual IAuxTypeVector* create (size_t size, size_t capacity) const = 0;
00057
00058
00068 virtual void copy (void* dst, size_t dst_index,
00069 const void* src, size_t src_index) const = 0;
00070
00071
00081 virtual void swap (void* a, size_t aindex,
00082 void* b, size_t bindex) const = 0;
00083
00084
00090 virtual void clear (void* dst, size_t dst_index) const = 0;
00091
00092
00096 virtual size_t getEltSize() const = 0;
00097
00098
00102 virtual const std::type_info* tiVec() const = 0;
00103
00104
00110 virtual bool isDynamic() const = 0;
00111 };
00112
00113
00114 }
00115
00116
00117 #endif // not ATHCONTAINERSINTERFACES_IAUXTYPEVECTORFACTORY_H