40 data.allocate (initialSize, initialiseToZero);
62 wassert (((ssize_t) sizeInBytes) >= 0);
66 wassert (dataToInitialiseFrom !=
nullptr);
70 if (dataToInitialiseFrom !=
nullptr)
93 return matches (other.data, other.size);
103 return size == dataSize
104 && memcmp (
data, dataToCompare,
size) == 0;
121 data.realloc (newSize);
123 if (initialiseToZero && (newSize >
size))
128 data.allocate (newSize, initialiseToZero);
144 if (
size < minimumSize)
145 setSize (minimumSize, initialiseToZero);
150 std::swap (
size, other.size);
151 data.swapWith (other.data);
158 return data.release();
172 const size_t oldSize =
size;
193 insertPosition =
jmin (
size, insertPosition);
194 const size_t trailingDataSize =
size - insertPosition;
197 if (trailingDataSize > 0)
198 memmove (
data + insertPosition + numBytes,
199 data + insertPosition,
202 memcpy (
data + insertPosition, srcData, numBytes);
208 if (startByte + numBytesToRemove >=
size)
212 else if (numBytesToRemove > 0)
214 memmove (
data + startByte,
215 data + startByte + numBytesToRemove,
216 size - (startByte + numBytesToRemove));
224 const char*
d =
static_cast<const char*
> (src);
229 num += (size_t) -offset;
233 if ((
size_t) offset + num >
size)
234 num =
size - (size_t) offset;
242 char*
d =
static_cast<char*
> (dst);
248 num -= (size_t) -offset;
252 if ((
size_t) offset + num >
size)
254 const size_t newNum = (size_t)
size - (
size_t) offset;
273 size_t byte = bitRangeStart >> 3;
274 size_t offsetInByte = bitRangeStart & 7;
275 size_t bitsSoFar = 0;
277 while (numBits > 0 && (
size_t)
byte <
size)
279 const size_t bitsThisTime =
jmin (numBits, 8 - offsetInByte);
280 const int mask = (0xff >> (8 - bitsThisTime)) << offsetInByte;
282 res |= (((
data[
byte] &
mask) >> offsetInByte) << bitsSoFar);
284 bitsSoFar += bitsThisTime;
285 numBits -= bitsThisTime;
295 size_t byte = bitRangeStart >> 3;
296 size_t offsetInByte = bitRangeStart & 7;
297 uint32 mask = ~((((
uint32) 0xffffffff) << (32 - numBits)) >> (32 - numBits));
299 while (numBits > 0 && (
size_t)
byte <
size)
301 const size_t bitsThisTime =
jmin (numBits, 8 - offsetInByte);
303 const uint32 tempMask = (
mask << offsetInByte) | ~((((
uint32) 0xffffffff) >> offsetInByte) << offsetInByte);
304 const uint32 tempBits = (
uint32) bitsToSet << offsetInByte;
309 numBits -= bitsThisTime;
310 bitsToSet >>= bitsThisTime;
311 mask >>= bitsThisTime;
335 if (
c >=
'0' &&
c <=
'9') {
byte |=
c -
'0';
break; }
336 if (
c >=
'a' &&
c <=
'z') {
byte |=
c - (
'a' - 10);
break; }
337 if (
c >=
'A' &&
c <=
'Z') {
byte |=
c - (
'A' - 10);
break; }
347 *dest++ = (char)
byte;
#define noexcept
Definition DistrhoDefines.h:72
goto loop
Definition Spc_Cpu.h:155
static const unsigned long mask[]
Definition bitwise.c:31
#define byte
Definition blargg_source.h:87
Definition CharPointer_UTF8.h:45
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
void setSize(const size_t newSize, bool initialiseNewSpaceToZero=false)
Definition MemoryBlock.cpp:109
void fillWith(uint8 valueToUse) noexcept
Definition MemoryBlock.cpp:162
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
int getBitRange(size_t bitRangeStart, size_t numBitsToRead) const noexcept
Definition MemoryBlock.cpp:269
MemoryBlock & operator=(const MemoryBlock &)
Definition MemoryBlock.cpp:79
static String fromUTF8(const char *utf8buffer, int bufferSizeBytes=-1)
Definition String.cpp:1961
Definition StringRef.h:67
int length() const noexcept
Definition StringRef.h:103
CharPointer_UTF8 text
Definition StringRef.h:120
struct huft * t
Definition inflate.c:943
unsigned d
Definition inflate.c:940
static PuglViewHint int value
Definition pugl.h:1708
#define wassert(expression)
Definition AudioSampleBuffer.h:33
unsigned int uint32
Definition water.h:98
bool operator==(const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &object1, ReferenceCountedObjectClass *const object2) noexcept
Definition ReferenceCountedObject.h:359
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
void zeromem(void *memory, size_t numBytes) noexcept
Definition Memory.h:37
unsigned char uint8
Definition water.h:90
uint32 water_uchar
Definition CharacterFunctions.h:38
return c
Definition crypt.c:175
memcpy(hh, h, RAND_HEAD_LEN)