55 jassert (((
ssize_t) sizeInBytes) >= 0);
109 return size == dataSize
130 zeromem (data + size,
newSize - size);
163 memset (data, (
int) value, size);
194 setSize (size + numBytes,
false);
223 auto* d =
static_cast<const char*
> (
src);
232 if ((
size_t) offset +
num > size)
233 num = size - (
size_t) offset;
241 auto* d =
static_cast<char*
> (
dst);
245 zeromem (d, (
size_t) -offset);
251 if ((
size_t) offset +
num > size)
276 while (
numBits > 0 && (
size_t)
byte < size)
298 while (
numBits > 0 && (
size_t)
byte < size)
332 auto c =
t.getAndAdvance();
334 if (
c >=
'0' &&
c <=
'9') {
byte |=
c -
'0';
break; }
335 if (
c >=
'a' &&
c <=
'z') {
byte |=
c - (
'a' - 10);
break; }
336 if (
c >=
'A' &&
c <=
'Z') {
byte |=
c - (
'A' - 10);
break; }
340 setSize (
static_cast<size_t> (dest - data));
346 *dest++ = (
char)
byte;
351static const char base64EncodingTable[] =
".ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+";
355 auto numChars = ((size << 3) + 5) / 6;
365 for (
size_t i = 0; i <
numChars; ++i)
372static const char base64DecodingTable[] =
374 63, 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0,
375 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
376 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52
402 if (isPositiveAndBelow (
c, numElementsInArray (base64DecodingTable)))
Holds a resizable array of primitive or copy-by-value objects.
int size() const noexcept
Returns the current number of elements in the array.
ElementType * data() const noexcept
Returns a pointer to the first element in the array.
static CharPointerType1 find(CharPointerType1 textToSearch, const CharPointerType2 substringToLookFor) noexcept
Returns a pointer to the first occurrence of a substring in a string.
void malloc(SizeType newNumElements, size_t elementSize=sizeof(ElementType))
Allocates a specified amount of memory.
void allocate(SizeType newNumElements, bool initialiseToZero)
Allocates a specified amount of memory and optionally clears it.
void realloc(SizeType newNumElements, size_t elementSize=sizeof(ElementType))
Re-allocates a specified amount of memory.
void free() noexcept
Frees any currently-allocated data.
A class to hold a resizable block of raw data.
void copyFrom(const void *srcData, int destinationOffset, size_t numBytes) noexcept
Copies data into this MemoryBlock from a memory address.
~MemoryBlock() noexcept
Destructor.
void ensureSize(const size_t minimumSize, bool initialiseNewSpaceToZero=false)
Increases the block's size only if it's smaller than a given size.
bool fromBase64Encoding(StringRef encodedString)
Takes a string created by MemoryBlock::toBase64Encoding() and extracts the original data.
String toBase64Encoding() const
Returns a string of characters in a JUCE-specific text encoding that represents the binary contents o...
bool matches(const void *data, size_t dataSize) const noexcept
Returns true if the data in this MemoryBlock matches the raw bytes passed-in.
void append(const void *data, size_t numBytes)
Adds another block of data to the end of this one.
MemoryBlock() noexcept
Create an uninitialised block with 0 size.
void setSize(const size_t newSize, bool initialiseNewSpaceToZero=false)
Resizes the memory block.
String toString() const
Attempts to parse the contents of the block as a zero-terminated UTF8 string.
void copyTo(void *destData, int sourceOffset, size_t numBytes) const noexcept
Copies data from this MemoryBlock to a memory address.
void insert(const void *dataToInsert, size_t numBytesToInsert, size_t insertPosition)
Inserts some data into the block.
void swapWith(MemoryBlock &other) noexcept
Exchanges the contents of this and another memory block.
int getBitRange(size_t bitRangeStart, size_t numBitsToRead) const noexcept
Reads a number of bits from the memory block, treating it as one long binary sequence.
void replaceWith(const void *data, size_t numBytes)
Resizes this block to the given size and fills its contents from the supplied buffer.
void loadFromHexString(StringRef sourceHexString)
Parses a string of hexadecimal numbers and writes this data into the memory block.
void removeSection(size_t startByte, size_t numBytesToRemove)
Chops out a section of the block.
MemoryBlock & operator=(const MemoryBlock &)
Copies another memory block onto this one.
void fillWith(uint8 valueToUse) noexcept
Fills the entire memory block with a repeated byte value.
bool operator!=(const MemoryBlock &other) const noexcept
Compares two memory blocks.
void setBitRange(size_t bitRangeStart, size_t numBits, int binaryNumberToApply) noexcept
Sets a number of bits in the memory block, treating it as a long binary sequence.
void reset()
Frees all the blocks data, setting its size to 0.
bool operator==(const MemoryBlock &other) const noexcept
Compares two memory blocks.
A simple class for holding temporary references to a string literal or String.
static String fromUTF8(const char *utf8buffer, int bufferSizeBytes=-1)
Creates a String from a UTF-8 encoded buffer.
int getIntValue() const noexcept
Reads the value of the string as a decimal number (up to 32 bits in size).