HARDT - The Ham Radio DSP Toolkit
hmemoryreader.h
1 #ifndef __HMEMORYREADER_H
2 #define __HMEMORYREADER_H
3 
13 template <class T>
14 class HMemoryReader : public HReader<T>
15 {
16  private:
17 
18  T* _buffer;
19  int _size;
20  int _pos;
21  bool _infinite;
22 
23  public:
24 
26  HMemoryReader(T* buffer, size_t size, bool infinite = false):
27  _buffer(buffer),
28  _size(size),
29  _pos(0),
30  _infinite(infinite)
31  {}
32 
34  int Read(T* dest, size_t blocksize)
35  {
36  if( _pos + blocksize > _size ) {
37  return 0;
38  }
39  memcpy((void*) dest, (void*) &_buffer[_pos], blocksize * sizeof(T));
40  _pos += _infinite ? 0 : blocksize;
41  return blocksize;
42  }
43 
45  bool Command(HCommand* command) {
46  // No further propagation of commands
47  return true;
48  }
49 
51  void Reset() {
52  _pos = 0;
53  }
54 
56  int GetPosition() {
57  return _pos;
58  }
59 
61  int GetSize() {
62  return _size;
63  }
64 };
65 
66 #endif
HMemoryReader::Read
int Read(T *dest, size_t blocksize)
Definition: hmemoryreader.h:34
HMemoryReader::HMemoryReader
HMemoryReader(T *buffer, size_t size, bool infinite=false)
Definition: hmemoryreader.h:26
HReader
Definition: hreader.h:24
HMemoryReader::Command
bool Command(HCommand *command)
Definition: hmemoryreader.h:45
HCommand
Definition: hcommand.h:81
HMemoryReader::Reset
void Reset()
Definition: hmemoryreader.h:51
HMemoryReader::GetPosition
int GetPosition()
Definition: hmemoryreader.h:56
HMemoryReader
Definition: hmemoryreader.h:14
HMemoryReader::GetSize
int GetSize()
Definition: hmemoryreader.h:61