1 #include "daq/slc/system/BufferedReader.h"
3 #include <daq/slc/base/IOException.h>
9 BufferedReader::BufferedReader()
10 : m_memory(NULL), m_size(0), m_pos(0), m_allocated(false) {}
13 : m_memory(NULL), m_size(reader.m_size),
14 m_pos(reader.m_pos), m_allocated(reader.m_allocated)
17 m_memory =
new unsigned char [reader.m_size];
18 ::memcpy(m_memory, reader.m_memory, reader.m_size);
20 m_memory = reader.m_memory;
22 m_size = reader.m_size;
26 BufferedReader::BufferedReader(
size_t size,
unsigned char* memory)
27 : m_memory(memory), m_size(size), m_pos(0), m_allocated(false)
30 m_memory =
new unsigned char[size];
35 BufferedReader::~BufferedReader()
37 if (m_allocated && m_memory != NULL) {
47 m_allocated = reader.m_allocated;
49 m_memory =
new unsigned char [reader.m_size];
50 ::memcpy(m_memory, reader.m_memory, reader.m_size);
52 m_memory = reader.m_memory;
54 m_size = reader.m_size;
59 void BufferedReader::copy(
const void* buffer,
size_t count)
62 memcpy(m_memory, buffer, count);
66 (
int)count, (
int)m_size));
70 size_t BufferedReader::read(
void* buf,
const size_t count)
72 if (m_pos + count > size()) {
73 throw (
IOException(
"Out of buffer range: %d + %d > %d",
74 (
int)m_pos, (
int)count, (
int)m_size));
76 memcpy(buf, (m_memory + m_pos), count);