16 #ifndef TMVA_DNN_ARCHITECTURES_CPU_CPUBUFFER
17 #define TMVA_DNN_ARCHITECTURES_CPU_CPUBUFFER
42 template<
typename AFloat>
49 std::shared_ptr<AFloat *> fBuffer;
53 void operator()(AFloat ** pointer);
60 TCpuBuffer(
size_t size);
61 TCpuBuffer() =
default;
62 TCpuBuffer(
const TCpuBuffer &) =
default;
63 TCpuBuffer( TCpuBuffer &&) =
default;
64 TCpuBuffer & operator=(
const TCpuBuffer &) =
default;
65 TCpuBuffer & operator=( TCpuBuffer &&) =
default;
67 operator AFloat * ()
const {
return (* fBuffer) + fOffset;}
69 class FakeIteratorBegin{
73 FakeIteratorBegin(AFloat& x): fBeginRet(x){}
79 FakeIteratorBegin begin(){
80 return FakeIteratorBegin(*((* fBuffer) + fOffset));
86 TCpuBuffer GetSubBuffer(
size_t offset,
size_t start)
const;
88 AFloat & operator[](
size_t i) {
return (*fBuffer.get())[fOffset + i];}
89 AFloat operator[](
size_t i)
const {
return (*fBuffer.get())[fOffset + i];}
93 void CopyFrom(
const TCpuBuffer &);
96 void CopyTo(TCpuBuffer &)
const;
102 size_t GetSize()
const {
return fSize;}
104 size_t GetUseCount()
const {
return fBuffer.use_count(); }