|
virtmem
virtual memory library for Arduino
|
contains all code from virtmem More...
Namespaces | |
| serram_utils | |
| Contains utilities for serial allocator. | |
Classes | |
| class | BaseVAlloc |
| Base class for virtual memory allocators. More... | |
| class | BaseVPtr |
| This is the base class of VPtr and can be used for typeless pointers. More... | |
| struct | DefaultAllocProperties |
| This struct contains default parameters for virtual memory pages. More... | |
| class | MultiSPIRAMVAllocP |
| Virtual allocator that uses multiple SRAM chips (i.e. 23LC series from Microchip) as memory pool. More... | |
| class | SDVAllocP |
| Virtual memory allocator class that uses SD card as virtual pool. More... | |
| class | SerialVAllocP |
| Virtual memory allocator that uses external memory via a serial connection as memory pool. More... | |
| struct | SPIRamConfig |
This struct is used to configure each SRAM chip used by a MultiSPIRAMVAllocP allocator. More... | |
| class | SPIRAMVAllocP |
| Virtual memory allocator that uses SPI (serial) RAM (i.e. the 23LC series from Microchip) as memory pool. More... | |
| class | StaticVAllocP |
| Virtual memory allocator that uses a static array (in regular RAM) as memory pool. More... | |
| class | StdioVAllocP |
| Virtual memory allocator that uses a regular file (via stdio) as memory pool. More... | |
| class | VAlloc |
| Base template class for virtual memory allocators. More... | |
| class | VPtr |
| Virtual pointer class that provides an interface to access virtual much like 'regular pointers'. More... | |
| class | VPtrLock |
| Creates a lock to some virtual data. More... | |
Typedefs | |
| typedef uint32_t | VPtrNum |
| Numeric type used to store raw virtual pointer addresses. | |
| typedef uint32_t | VPtrSize |
| Numeric type used to store the size of a virtual memory block. | |
| typedef uint16_t | VirtPageSize |
| Numeric type used to store the size of a virtual memory page. | |
| typedef nullptr_t | NILL_t |
| typedef SDVAllocP | SDVAlloc |
| Shortcut to SDVAllocP with default template arguments. | |
| typedef SerialVAllocP | SerialVAlloc |
| Shortcut to SerialVAllocP with default template arguments. | |
| typedef SPIRAMVAllocP | SPIRAMVAlloc |
| Shortcut to SPIRAMVAllocP with default template arguments. | |
| typedef StaticVAllocP | StaticVAlloc |
| Shortcut to StaticVAllocP with default template arguments. | |
| typedef StdioVAllocP | StdioVAlloc |
| Shortcut to StdioVAllocP with default template arguments. | |
Functions | |
| template<typename T > | |
| VPtrLock< T > | makeVirtPtrLock (const T &w, VirtPageSize s, bool ro=false) |
| Creates a virtual lock (shortcut) More... | |
| template<typename C , typename M , typename A > | |
| VPtr< M, A > | getMembrPtr (const VPtr< C, A > &c, const M C::*m) |
| Obtains a virtual pointer to a data member that is stored in virtual memory. More... | |
| template<typename C , typename M , typename NC , typename NM , typename A > | |
| VPtr< NM, A > | getMembrPtr (const VPtr< C, A > &c, const M C::*m, const NM NC::*nm) |
| Obtains a virtual pointer to a nested data member that is stored in virtual memory. More... | |
Overloads of C library functions for virtual pointers | |
The following functions are overloads of some common C functions for dealing with memory and strings. They accept virtual pointers or a mix of virtual and regular pointers. Please note that they are defined in the virtmem namespace like any other code from | |
| template<typename T1 , typename A1 , typename T2 , typename A2 > | |
| VPtr< T1, A1 > | memcpy (VPtr< T1, A1 > dest, const VPtr< T2, A2 > src, VPtrSize size) |
| template<typename T , typename A > | |
| VPtr< T, A > | memcpy (VPtr< T, A > dest, const void *src, VPtrSize size) |
| template<typename T , typename A > | |
| void * | memcpy (void *dest, VPtr< T, A > src, VPtrSize size) |
| template<typename A > | |
| VPtr< char, A > | memset (VPtr< char, A > dest, int c, VPtrSize size) |
| template<typename T , typename A > | |
| VPtr< T, A > | memset (VPtr< T, A > dest, int c, VPtrSize size) |
| template<typename T1 , typename A1 , typename T2 , typename A2 > | |
| int | memcmp (VPtr< T1, A1 > s1, const VPtr< T2, A2 > s2, VPtrSize n) |
| template<typename T , typename A > | |
| int | memcmp (VPtr< T, A > s1, const void *s2, VPtrSize n) |
| template<typename T , typename A > | |
| int | memcmp (const void *s1, const VPtr< T, A > s2, VPtrSize n) |
| template<typename A1 , typename A2 > | |
| VPtr< char, A1 > | strncpy (VPtr< char, A1 > dest, const VPtr< const char, A2 > src, VPtrSize n) |
| template<typename A > | |
| VPtr< char, A > | strncpy (VPtr< char, A > dest, const char *src, VPtrSize n) |
| template<typename A > | |
| char * | strncpy (char *dest, const VPtr< const char, A > src, VPtrSize n) |
| template<typename A1 , typename A2 > | |
| VPtr< char, A1 > | strcpy (VPtr< char, A1 > dest, const VPtr< const char, A2 > src) |
| template<typename A > | |
| VPtr< char, A > | strcpy (VPtr< char, A > dest, const char *src) |
| template<typename A > | |
| char * | strcpy (char *dest, const VPtr< const char, A > src) |
| template<typename A1 , typename A2 > | |
| int | strncmp (VPtr< const char, A1 > dest, VPtr< const char, A2 > src, VPtrSize n) |
| template<typename A > | |
| int | strncmp (VPtr< const char, A > dest, const char *src, VPtrSize n) |
| template<typename A > | |
| int | strncmp (const char *dest, VPtr< const char, A > src, VPtrSize n) |
| template<typename A1 , typename A2 > | |
| int | strcmp (VPtr< const char, A1 > dest, VPtr< const char, A2 > src) |
| template<typename A > | |
| int | strcmp (const char *dest, VPtr< const char, A > src) |
| template<typename A > | |
| int | strcmp (VPtr< const char, A > dest, const char *src) |
| template<typename A > | |
| int | strlen (VPtr< const char, A > str) |
Variables | |
| const NILL_t | NILL = NILL_t() |
| Global instance of a NILL_t class. More... | |
contains all code from virtmem
|
inline |
Obtains a virtual pointer to a data member that is stored in virtual memory.
| C | Type of virtual data (e.g. the structure) |
| M | Type of the data member |
| A | Type of the virtual memory allocator |
| c | The virtual pointer of the structure (or class) to which the data member belongs |
| m | A pointer to the member (e.g. &MyStruct::x) |
|
inline |
Obtains a virtual pointer to a nested data member that is stored in virtual memory.
| C | Type of virtual data (e.g. the structure) |
| M | Type of the data member |
| NC | Type of the nested structure |
| NM | Type of nested data member |
| A | Type of the virtual memory allocator |
| c | The virtual pointer of the structure (or class) to which the data member belongs |
| m | A pointer to the nested structure/class (e.g. &MyStruct::MyOtherStruct) |
| nm | A pointer to the nested data member (e.g. &MyStruct::MyOtherStruct::y) |
| VPtrLock<T> virtmem::makeVirtPtrLock | ( | const T & | w, |
| VirtPageSize | s, | ||
| bool | ro = false |
||
| ) |
Creates a virtual lock (shortcut)
This function is a shortcut for making a virtual lock: unlike using VPtrLock, you don't need to specify the virtual pointer type as a template parameter. The function parameters are the same as VPtrLock::VPtrLock.