Loading...
Searching...
No Matches
juce::MemoryBlock Class Reference

## Detailed Description

A class to hold a resizable block of raw data.

The documentation for this class was generated from the following file:

- juce_core/memory/juce_MemoryBlock.h

## Public Member Functions

| MemoryBlock () noexcept
| Create an uninitialised block with 0 size.
| MemoryBlock (size_t initialSize, bool initialiseToZero=false)
| Creates a memory block with a given initial size.
| MemoryBlock (const MemoryBlock &)
| Creates a copy of another memory block.
| MemoryBlock (const void *dataToInitialiseFrom, size_t sizeInBytes)
| Creates a memory block using a copy of a block of data.
| ~MemoryBlock () noexcept
| Destructor.
MemoryBlock & | operator= (const MemoryBlock &)
| Copies another memory block onto this one.
| MemoryBlock (MemoryBlock &&) noexcept
| Move constructor.
MemoryBlock & | operator= (MemoryBlock &&) noexcept
| Move assignment operator.
bool | operator== (const MemoryBlock &other) const noexcept
| Compares two memory blocks.
bool | operator!= (const MemoryBlock &other) const noexcept
| Compares two memory blocks.
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 * | getData () noexcept
| Returns a void pointer to the data.
const void * | getData () const noexcept
| Returns a void pointer to the data.
template<typename Type>
char & | operator[] (const Type offset) noexcept
| Returns a byte from the memory block.
template<typename Type>
const char & | operator[] (const Type offset) const noexcept
| Returns a byte from the memory block.
char * | begin () noexcept
| Returns an iterator for the data.
const char * | begin () const noexcept
| Returns an iterator for the data.
char * | end () noexcept
| Returns an end-iterator for the data.
const char * | end () const noexcept
| Returns an end-iterator for the data.
bool | isEmpty () const noexcept
| Returns true if the memory block has zero size.
size_t | getSize () const noexcept
| Returns the block's current allocated size, in bytes.
void | setSize (size_t newSize, bool initialiseNewSpaceToZero=false)
| Resizes the memory block.
void | ensureSize (size_t minimumSize, bool initialiseNewSpaceToZero=false)
| Increases the block's size only if it's smaller than a given size.
void | reset ()
| Frees all the blocks data, setting its size to 0.
void | fillWith (uint8 valueToUse) noexcept
| Fills the entire memory block with a repeated byte value.
void | append (const void *data, size_t numBytes)
| Adds another block of data to the end of this one.
void | replaceAll (const void *data, size_t numBytes)
| Resizes this block to the given size and fills its contents from the supplied buffer.
void | insert (const void *dataToInsert, size_t numBytesToInsert, size_t insertPosition)
| Inserts some data into the block.
void | removeSection (size_t startByte, size_t numBytesToRemove)
| Chops out a section of the block.
void | copyFrom (const void *srcData, int destinationOffset, size_t numBytes) noexcept
| Copies data into this MemoryBlock from a memory address.
void | copyTo (void *destData, int sourceOffset, size_t numBytes) const noexcept
| Copies data from this MemoryBlock to a memory address.
void | swapWith (MemoryBlock &other) noexcept
| Exchanges the contents of this and another memory block.
String | toString () const
| Attempts to parse the contents of the block as a zero-terminated UTF8 string.
void | loadFromHexString (StringRef sourceHexString)
| Parses a string of hexadecimal numbers and writes this data into the memory block.
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.
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.
String | toBase64Encoding () const
| Returns a string of characters in a JUCE-specific text encoding that represents the binary contents of this block.
bool | fromBase64Encoding (StringRef encodedString)
| Takes a string created by MemoryBlock::toBase64Encoding() and extracts the original data.

## Constructors and Destructors

## MemoryBlock() [1/5]

juce::MemoryBlock::MemoryBlock | ( |  | ) |

noexcept

Create an uninitialised block with 0 size.

Referenced by MemoryBlock(), MemoryBlock(), MemoryBlock(), MemoryBlock(), operator!=(), operator=(), operator=(), operator==(), swapWith(), and ~MemoryBlock().

## MemoryBlock() [2/5]

juce::MemoryBlock::MemoryBlock | ( | size_t | initialSize,
|  | bool | initialiseToZero = false )

Creates a memory block with a given initial size.

Parameters

  initialSize | the size of block to create
  initialiseToZero | whether to clear the memory or just leave it uninitialised

References MemoryBlock().

## MemoryBlock() [3/5]

juce::MemoryBlock::MemoryBlock | ( | const MemoryBlock & |  | ) |

Creates a copy of another memory block.

References MemoryBlock().

## MemoryBlock() [4/5]

juce::MemoryBlock::MemoryBlock | ( | const void * | dataToInitialiseFrom,
|  | size_t | sizeInBytes )

Creates a memory block using a copy of a block of data.

Parameters

  dataToInitialiseFrom | some data to copy into this block
  sizeInBytes | how much space to use

References MemoryBlock().

## ~MemoryBlock()

juce::MemoryBlock::~MemoryBlock | ( |  | ) |

noexcept

Destructor.

References MemoryBlock().

## MemoryBlock() [5/5]

juce::MemoryBlock::MemoryBlock | ( | MemoryBlock && |  | ) |

noexcept

Move constructor.

References MemoryBlock().

## Member Functions

## operator=() [1/2]

MemoryBlock & juce::MemoryBlock::operator= | ( | const MemoryBlock & |  | ) |

Copies another memory block onto this one.

This block will be resized and copied to exactly match the other one.

References MemoryBlock().

## operator=() [2/2]

MemoryBlock & juce::MemoryBlock::operator= | ( | MemoryBlock && |  | ) |

noexcept

Move assignment operator.

References MemoryBlock().

## operator==()

bool juce::MemoryBlock::operator== | ( | const MemoryBlock & | other | ) | const

noexcept

Compares two memory blocks.

Returns
  true only if the two blocks are the same size and have identical contents.

References MemoryBlock().

## operator!=()

bool juce::MemoryBlock::operator!= | ( | const MemoryBlock & | other | ) | const

noexcept

Compares two memory blocks.

Returns
  true if the two blocks are different sizes or have different contents.

References MemoryBlock().

## matches()

bool juce::MemoryBlock::matches | ( | const void * | data,
|  | size_t | dataSize ) const

noexcept

Returns true if the data in this MemoryBlock matches the raw bytes passed-in.

References matches().

Referenced by matches().

## getData() [1/2]

void * juce::MemoryBlock::getData | ( |  | ) |

inline noexcept

Returns a void pointer to the data.

Note that the pointer returned will probably become invalid when the block is resized.

References getData().

Referenced by juce::StandalonePluginHolder::askUserToLoadState(), juce::StandalonePluginHolder::askUserToSaveState(), getData(), and juce::StandalonePluginHolder::reloadPluginState().

## getData() [2/2]

const void * juce::MemoryBlock::getData | ( |  | ) | const

inline noexcept

Returns a void pointer to the data.

Note that the pointer returned will probably become invalid when the block is resized.

## operator[]() [1/2]

template<typename Type>

char & juce::MemoryBlock::operator[] | ( | const Type | offset | ) |

inline noexcept

Returns a byte from the memory block.

This returns a reference, so you can also use it to set a byte.

## operator[]() [2/2]

template<typename Type>

const char & juce::MemoryBlock::operator[] | ( | const Type | offset | ) | const

inline noexcept

Returns a byte from the memory block.

## begin() [1/2]

char * juce::MemoryBlock::begin | ( |  | ) |

inline noexcept

Returns an iterator for the data.

Referenced by end(), and end().

## begin() [2/2]

const char * juce::MemoryBlock::begin | ( |  | ) | const

inline noexcept

Returns an iterator for the data.

## end() [1/2]

char * juce::MemoryBlock::end | ( |  | ) |

inline noexcept

Returns an end-iterator for the data.

References begin(), and getSize().

## end() [2/2]

const char * juce::MemoryBlock::end | ( |  | ) | const

inline noexcept

Returns an end-iterator for the data.

References begin(), and getSize().

## isEmpty()

bool juce::MemoryBlock::isEmpty | ( |  | ) | const

inline noexcept

Returns true if the memory block has zero size.

References getSize().

## getSize()

size_t juce::MemoryBlock::getSize | ( |  | ) | const

inline noexcept

Returns the block's current allocated size, in bytes.

Referenced by juce::StandalonePluginHolder::askUserToLoadState(), juce::StandalonePluginHolder::askUserToSaveState(), end(), end(), isEmpty(), and juce::StandalonePluginHolder::reloadPluginState().

## setSize()

void juce::MemoryBlock::setSize | ( | size_t | newSize,
|  | bool | initialiseNewSpaceToZero = false )

Resizes the memory block.

Any data that is present in both the old and new sizes will be retained. When enlarging the block, the new space that is allocated at the end can either be cleared, or left uninitialised.

Parameters

  newSize | the new desired size for the block
  initialiseNewSpaceToZero | if the block gets enlarged, this determines whether to clear the new section or just leave it uninitialised

See also
  ensureSize

## ensureSize()

void juce::MemoryBlock::ensureSize | ( | size_t | minimumSize,
|  | bool | initialiseNewSpaceToZero = false )

Increases the block's size only if it's smaller than a given size.

Parameters

  minimumSize | if the block is already bigger than this size, no action will be taken; otherwise it will be increased to this size
  initialiseNewSpaceToZero | if the block gets enlarged, this determines whether to clear the new section or just leave it uninitialised

See also
  setSize

## reset()

void juce::MemoryBlock::reset | ( |  | ) |

Frees all the blocks data, setting its size to 0.

## fillWith()

void juce::MemoryBlock::fillWith | ( | uint8 | valueToUse | ) |

noexcept

Fills the entire memory block with a repeated byte value.

This is handy for clearing a block of memory to zero.

## append()

void juce::MemoryBlock::append | ( | const void * | data,
|  | size_t | numBytes )

Adds another block of data to the end of this one.

The data pointer must not be null. This block's size will be increased accordingly.

## replaceAll()

void juce::MemoryBlock::replaceAll | ( | const void * | data,
|  | size_t | numBytes )

Resizes this block to the given size and fills its contents from the supplied buffer.

The data pointer must not be null.

Referenced by fromBase64Encoding().

## insert()

void juce::MemoryBlock::insert | ( | const void * | dataToInsert,
|  | size_t | numBytesToInsert,
|  | size_t | insertPosition )

Inserts some data into the block.

The dataToInsert pointer must not be null. This block's size will be increased accordingly. If the insert position lies outside the valid range of the block, it will be clipped to within the range before being used.

## removeSection()

void juce::MemoryBlock::removeSection | ( | size_t | startByte,
|  | size_t | numBytesToRemove )

Chops out a section of the block.

This will remove a section of the memory block and close the gap around it, shifting any subsequent data downwards and reducing the size of the block.

If the range specified goes beyond the size of the block, it will be clipped.

## copyFrom()

void juce::MemoryBlock::copyFrom | ( | const void * | srcData,
|  | int | destinationOffset,
|  | size_t | numBytes )

noexcept

Copies data into this MemoryBlock from a memory address.

Parameters

  srcData | the memory location of the data to copy into this block
  destinationOffset | the offset in this block at which the data being copied should begin
  numBytes | how much to copy in (if this goes beyond the size of the memory block, it will be clipped so not to do anything nasty)

## copyTo()

void juce::MemoryBlock::copyTo | ( | void * | destData,
|  | int | sourceOffset,
|  | size_t | numBytes ) const

noexcept

Copies data from this MemoryBlock to a memory address.

Parameters

  destData | the memory location to write to
  sourceOffset | the offset within this block from which the copied data will be read
  numBytes | how much to copy (if this extends beyond the limits of the memory block, zeros will be used for that portion of the data)

## swapWith()

void juce::MemoryBlock::swapWith | ( | MemoryBlock & | other | ) |

noexcept

Exchanges the contents of this and another memory block.

No actual copying is required for this, so it's very fast.

References MemoryBlock().

## toString()

String juce::MemoryBlock::toString | ( |  | ) | const

Attempts to parse the contents of the block as a zero-terminated UTF8 string.

## loadFromHexString()

void juce::MemoryBlock::loadFromHexString | ( | StringRef | sourceHexString | ) |

Parses a string of hexadecimal numbers and writes this data into the memory block.

The block will be resized to the number of valid bytes read from the string. Non-hex characters in the string will be ignored.

See also
  String::toHexString()

## setBitRange()

void juce::MemoryBlock::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.

## getBitRange()

int juce::MemoryBlock::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.

## toBase64Encoding()

String juce::MemoryBlock::toBase64Encoding | ( |  | ) | const

Returns a string of characters in a JUCE-specific text encoding that represents the binary contents of this block.

This uses a JUCE-specific (i.e. not standard!) 64-bit encoding system to convert binary data into a string of ASCII characters for purposes like storage in XML. Note that this proprietary format is mainly kept here for backwards-compatibility, and you may prefer to use the Base64::toBase64() method if you want to use the standard base-64 encoding.

See also
  fromBase64Encoding, Base64::toBase64, Base64::convertToBase64

Referenced by juce::StandalonePluginHolder::savePluginState().

## fromBase64Encoding()

bool juce::MemoryBlock::fromBase64Encoding | ( | StringRef | encodedString | ) |

Takes a string created by MemoryBlock::toBase64Encoding() and extracts the original data.

The string passed in must have been created by to64BitEncoding(), and this block will be resized to recreate the original data block.

Note that these methods use a JUCE-specific (i.e. not standard!) 64-bit encoding system. You may prefer to use the Base64::convertFromBase64() method if you want to use the standard base-64 encoding.

See also
  toBase64Encoding, Base64::convertFromBase64

References replaceAll().

Referenced by juce::StandalonePluginHolder::reloadPluginState().

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited