1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Added a constructor to MemoryInputStream that will move from a MemoryBlock

This commit is contained in:
jules 2019-06-28 08:55:50 +01:00
parent 5d83c1485d
commit ac519e541a
2 changed files with 15 additions and 9 deletions

View file

@ -28,7 +28,10 @@ MemoryInputStream::MemoryInputStream (const void* sourceData, size_t sourceDataS
dataSize (sourceDataSize)
{
if (keepCopy)
createInternalCopy();
{
internalCopy = MemoryBlock (sourceData, sourceDataSize);
data = internalCopy.getData();
}
}
MemoryInputStream::MemoryInputStream (const MemoryBlock& sourceData, bool keepCopy)
@ -36,14 +39,16 @@ MemoryInputStream::MemoryInputStream (const MemoryBlock& sourceData, bool keepCo
dataSize (sourceData.getSize())
{
if (keepCopy)
createInternalCopy();
{
internalCopy = sourceData;
data = internalCopy.getData();
}
}
void MemoryInputStream::createInternalCopy()
MemoryInputStream::MemoryInputStream (MemoryBlock&& source)
: internalCopy (std::move (source))
{
internalCopy.malloc (dataSize);
memcpy (internalCopy, data, dataSize);
data = internalCopy;
data = internalCopy.getData();
}
MemoryInputStream::~MemoryInputStream()

View file

@ -62,6 +62,9 @@ public:
MemoryInputStream (const MemoryBlock& data,
bool keepInternalCopyOfData);
/** Creates a stream by moving from a MemoryBlock. */
MemoryInputStream (MemoryBlock&& blockToTake);
/** Destructor. */
~MemoryInputStream() override;
@ -83,9 +86,7 @@ private:
//==============================================================================
const void* data;
size_t dataSize, position = 0;
HeapBlock<char> internalCopy;
void createInternalCopy();
MemoryBlock internalCopy;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MemoryInputStream)
};