virtmem
virtual memory library for Arduino
static_alloc.h
Go to the documentation of this file.
1 #ifndef VIRTMEM_STATIC_ALLOC_H
2 #define VIRTMEM_STATIC_ALLOC_H
3 
9 // allocator using static array; for testing
10 
11 #include <string.h>
12 
13 #include "internal/alloc.h"
14 
15 namespace virtmem {
16 
31 template <uint32_t poolSize=VIRTMEM_DEFAULT_POOLSIZE, typename Properties=DefaultAllocProperties>
32 class StaticVAllocP : public VAlloc<Properties, StaticVAllocP<poolSize, Properties> >
33 {
34  char staticData[poolSize];
35 
36  void doStart(void) { }
37  void doSuspend(void) { }
38  void doStop(void) { }
39 
40  void doRead(void *data, VPtrSize offset, VPtrSize size)
41  {
42  ::memcpy(data, &staticData[offset], size);
43  }
44 
45  void doWrite(const void *data, VPtrSize offset, VPtrSize size)
46  {
47  ::memcpy(&staticData[offset], data, size);
48  }
49 
51 
52 public:
53  StaticVAllocP(void) { this->setPoolSize(poolSize); }
54 };
55 
57 
58 }
59 
60 #endif // VIRTMEM_STATIC_ALLOC_H
contains all code from virtmem
Definition: base_alloc.cpp:22
Base template class for virtual memory allocators.
Definition: alloc.h:28
void setPoolSize(VPtrSize ps)
Sets the total size of the memory pool.
Definition: base_alloc.h:155
virtual memory class header
uint32_t VPtrSize
Numeric type used to store the size of a virtual memory block.
Definition: base_alloc.h:22
StaticVAllocP(void)
Constructs (but not initializes) the allocator.
Definition: static_alloc.h:53
StaticVAllocP StaticVAlloc
Shortcut to StaticVAllocP with default template arguments.
Definition: static_alloc.h:56
Virtual memory allocator that uses a static array (in regular RAM) as memory pool.
Definition: static_alloc.h:32