ATLAS Offline Software
Loading...
Searching...
No Matches
v5_DataBuffer.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6#include "v5_DataBuffer.h"
7
8#include <string.h>
9
11
12public:
13
17
18 implementation(const uint32_t& size):
19 m_buffer(0),
20 m_buffersize(0){
21 m_buffer = new char[size];
22 m_buffersize = size;
23 }
24
25 implementation (const implementation&) = delete;
27
29 { delete[] m_buffer; }
30
31
32 void realloc(const uint32_t& newsize)
33 {
34 delete[] m_buffer;
35 m_buffer = new char[newsize];
36 m_buffersize = newsize;
37 }
38
39 void grow(const uint32_t& newsize)
40 {
41 if(newsize <= m_buffersize)
42 return;
43
44 char * new_buffer = new char[newsize];
45 ::memcpy(new_buffer, m_buffer, m_buffersize);
46 delete[] m_buffer;
47
48 m_buffer = new_buffer;
49 m_buffersize = newsize;
50 }
51
52 void * handle()
53 { return m_buffer; }
54
55 uint32_t buffersize() const
56 { return m_buffersize; }
57
58private:
59 char* m_buffer;
60 uint32_t m_buffersize;
61
62};
63
67
71
74
76{ return m_rep->realloc(newsize); }
77
78void offline_EventStorage_v5::DataBuffer::grow(const uint32_t& newsize)
79{ return m_rep->grow(newsize); }
80
82{ return m_rep->handle(); }
83
85{ return m_rep->buffersize(); }
implementation & operator=(const implementation &)=delete
implementation(const implementation &)=delete
void grow(const uint32_t &newsize)
void realloc(const uint32_t &newsize)