LMMS
Loading...
Searching...
No Matches
MemoryBlock.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the Water library.
5 Copyright (c) 2016 ROLI Ltd.
6 Copyright (C) 2017 Filipe Coelho <falktx@falktx.com>
7
8 Permission is granted to use this software under the terms of the ISC license
9 http://www.isc.org/downloads/software-support-policy/isc-license/
10
11 Permission to use, copy, modify, and/or distribute this software for any
12 purpose with or without fee is hereby granted, provided that the above
13 copyright notice and this permission notice appear in all copies.
14
15 THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
16 TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
18 OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
19 USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
21 OF THIS SOFTWARE.
22
23 ==============================================================================
24*/
25
26#ifndef WATER_MEMORYBLOCK_H_INCLUDED
27#define WATER_MEMORYBLOCK_H_INCLUDED
28
29#include "HeapBlock.h"
30
31namespace water {
32
33//==============================================================================
39{
40public:
41 //==============================================================================
43 MemoryBlock() noexcept;
44
50 MemoryBlock (const size_t initialSize,
51 bool initialiseToZero = false);
52
54 MemoryBlock (const MemoryBlock&);
55
61 MemoryBlock (const void* dataToInitialiseFrom, size_t sizeInBytes);
62
64 ~MemoryBlock() noexcept;
65
70
71 //==============================================================================
75 bool operator== (const MemoryBlock& other) const noexcept;
76
80 bool operator!= (const MemoryBlock& other) const noexcept;
81
83 bool matches (const void* data, size_t dataSize) const noexcept;
84
85 //==============================================================================
91 void* getData() const noexcept { return data; }
92
96 template <typename Type>
97 char& operator[] (const Type offset) const noexcept { return data [offset]; }
98
99
100 //==============================================================================
102 size_t getSize() const noexcept { return size; }
103
116 void setSize (const size_t newSize,
117 bool initialiseNewSpaceToZero = false);
118
128 void ensureSize (const size_t minimumSize,
129 bool initialiseNewSpaceToZero = false);
130
132 void reset();
133
134 //==============================================================================
138 void fillWith (uint8 valueToUse) noexcept;
139
143 void append (const void* data, size_t numBytes);
144
148 void replaceWith (const void* data, size_t numBytes);
149
155 void insert (const void* dataToInsert, size_t numBytesToInsert, size_t insertPosition);
156
164 void removeSection (size_t startByte, size_t numBytesToRemove);
165
166 //==============================================================================
174 void copyFrom (const void* srcData,
175 int destinationOffset,
176 size_t numBytes) noexcept;
177
185 void copyTo (void* destData,
186 int sourceOffset,
187 size_t numBytes) const noexcept;
188
189 //==============================================================================
193 void swapWith (MemoryBlock& other) noexcept;
194
195 //==============================================================================
197 void* release () noexcept;
198
199 //==============================================================================
202
203 //==============================================================================
211 void loadFromHexString (StringRef sourceHexString);
212
213 //==============================================================================
215 void setBitRange (size_t bitRangeStart,
216 size_t numBits,
217 int binaryNumberToApply) noexcept;
218
220 int getBitRange (size_t bitRangeStart,
221 size_t numBitsToRead) const noexcept;
222
223private:
224 //==============================================================================
226 size_t size;
227};
228
229}
230
231#endif // WATER_MEMORYBLOCK_H_INCLUDED
#define noexcept
Definition DistrhoDefines.h:72
HeapBlock< char > data
Definition MemoryBlock.h:225
MemoryBlock() noexcept
Definition MemoryBlock.cpp:30
Definition HeapBlock.h:77
Definition MemoryBlock.h:39
size_t size
Definition MemoryBlock.h:226
HeapBlock< char > data
Definition MemoryBlock.h:225
bool matches(const void *data, size_t dataSize) const noexcept
Definition MemoryBlock.cpp:101
void insert(const void *dataToInsert, size_t numBytesToInsert, size_t insertPosition)
Definition MemoryBlock.cpp:188
void removeSection(size_t startByte, size_t numBytesToRemove)
Definition MemoryBlock.cpp:206
void setBitRange(size_t bitRangeStart, size_t numBits, int binaryNumberToApply) noexcept
Definition MemoryBlock.cpp:293
void reset()
Definition MemoryBlock.cpp:136
void ensureSize(const size_t minimumSize, bool initialiseNewSpaceToZero=false)
Definition MemoryBlock.cpp:142
void copyFrom(const void *srcData, int destinationOffset, size_t numBytes) noexcept
Definition MemoryBlock.cpp:222
void append(const void *data, size_t numBytes)
Definition MemoryBlock.cpp:167
bool operator==(const MemoryBlock &other) const noexcept
Definition MemoryBlock.cpp:91
size_t getSize() const noexcept
Definition MemoryBlock.h:102
void setSize(const size_t newSize, bool initialiseNewSpaceToZero=false)
Definition MemoryBlock.cpp:109
void fillWith(uint8 valueToUse) noexcept
Definition MemoryBlock.cpp:162
void * getData() const noexcept
Definition MemoryBlock.h:91
MemoryBlock() noexcept
Definition MemoryBlock.cpp:30
void loadFromHexString(StringRef sourceHexString)
Definition MemoryBlock.cpp:317
void swapWith(MemoryBlock &other) noexcept
Definition MemoryBlock.cpp:148
void copyTo(void *destData, int sourceOffset, size_t numBytes) const noexcept
Definition MemoryBlock.cpp:240
void replaceWith(const void *data, size_t numBytes)
Definition MemoryBlock.cpp:178
String toString() const
Definition MemoryBlock.cpp:263
void * release() noexcept
Definition MemoryBlock.cpp:155
~MemoryBlock() noexcept
Definition MemoryBlock.cpp:75
bool operator!=(const MemoryBlock &other) const noexcept
Definition MemoryBlock.cpp:96
char & operator[](const Type offset) const noexcept
Definition MemoryBlock.h:97
int getBitRange(size_t bitRangeStart, size_t numBitsToRead) const noexcept
Definition MemoryBlock.cpp:269
MemoryBlock & operator=(const MemoryBlock &)
Definition MemoryBlock.cpp:79
Definition String.h:48
Definition StringRef.h:67
JSAMPIMAGE data
Definition jpeglib.h:945
Definition AudioSampleBuffer.h:33
unsigned char uint8
Definition water.h:90
#define const
Definition zconf.h:137