Belle II Software  release-05-01-25
Buffer.cc
1 #include "daq/slc/system/Buffer.h"
2 
3 #include <cstring>
4 
5 using namespace Belle2;
6 
7 Buffer::Buffer() : m_memory(NULL), m_size(0), m_allocated(false) {}
8 
9 Buffer::Buffer(unsigned int size, unsigned char* memory)
10  : m_memory(memory), m_size(size), m_allocated(false)
11 {
12  if (memory == NULL && size > 0) {
13  m_memory = new unsigned char[size];
14  ::memset(m_memory, 0, size);
15  m_allocated = true;
16  }
17 }
18 
19 Buffer::Buffer(const Buffer& buf)
20  : m_memory(NULL), m_size(buf.m_size),
21  m_allocated(buf.m_allocated)
22 {
23  if (m_allocated) {
24  m_memory = new unsigned char [buf.m_size];
25  ::memset(m_memory, 0, buf.m_size);
26  ::memcpy(m_memory, buf.m_memory, buf.m_size);
27  } else {
28  m_memory = buf.m_memory;
29  }
30  m_size = buf.m_size;
31 }
32 
33 Buffer::~Buffer()
34 {
35  if (m_allocated && m_memory != NULL) {
36  delete [] m_memory;
37  m_allocated = false;
38  m_memory = NULL;
39  }
40 }
41 
42 const Buffer& Buffer::operator=(const Buffer& buf)
43 {
44  if (m_allocated) {
45  delete [] m_memory;
46  }
47  m_allocated = buf.m_allocated;
48  if (m_allocated) {
49  m_memory = new unsigned char [buf.m_size];
50  ::memset(m_memory, 0, buf.m_size);
51  ::memcpy(m_memory, buf.m_memory, buf.m_size);
52  } else {
53  m_memory = buf.m_memory;
54  }
55  m_size = buf.m_size;
56  return *this;
57 }
Belle2::Buffer
Definition: Buffer.h:12
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19