DirectXTex: added move operators for ScratchImage, Blob

This commit is contained in:
walbourn_cp 2013-12-24 12:57:42 -08:00
parent 858d473b81
commit 7ddd3762bb
3 changed files with 46 additions and 2 deletions

View File

@ -244,9 +244,14 @@ namespace DirectX
class ScratchImage class ScratchImage
{ {
public: public:
ScratchImage() : _nimages(0), _size(0), _image(0), _memory(0) {} ScratchImage()
: _nimages(0), _size(0), _image(nullptr), _memory(nullptr) {}
ScratchImage(ScratchImage&& moveFrom)
: _nimages(0), _size(0), _image(nullptr), _memory(nullptr) { *this = std::move(moveFrom); }
~ScratchImage() { Release(); } ~ScratchImage() { Release(); }
ScratchImage& operator= (ScratchImage&& moveFrom);
HRESULT Initialize( _In_ const TexMetadata& mdata ); HRESULT Initialize( _In_ const TexMetadata& mdata );
HRESULT Initialize1D( _In_ DXGI_FORMAT fmt, _In_ size_t length, _In_ size_t arraySize, _In_ size_t mipLevels ); HRESULT Initialize1D( _In_ DXGI_FORMAT fmt, _In_ size_t length, _In_ size_t arraySize, _In_ size_t mipLevels );
@ -291,9 +296,12 @@ namespace DirectX
class Blob class Blob
{ {
public: public:
Blob() : _buffer(0), _size(0) {} Blob() : _buffer(nullptr), _size(0) {}
Blob(Blob&& moveFrom) : _buffer(nullptr), _size(0) { *this = std::move(moveFrom); }
~Blob() { Release(); } ~Blob() { Release(); }
Blob& operator= (Blob&& moveFrom);
HRESULT Initialize( _In_ size_t size ); HRESULT Initialize( _In_ size_t size );
void Release(); void Release();

View File

@ -229,6 +229,27 @@ bool _SetupImageArray( uint8_t *pMemory, size_t pixelSize,
// ScratchImage - Bitmap image container // ScratchImage - Bitmap image container
//===================================================================================== //=====================================================================================
ScratchImage& ScratchImage::operator= (ScratchImage&& moveFrom)
{
if ( this != &moveFrom )
{
Release();
_nimages = moveFrom._nimages;
_size = moveFrom._size;
_metadata = moveFrom._metadata;
_image = moveFrom._image;
_memory = moveFrom._memory;
moveFrom._nimages = 0;
moveFrom._size = 0;
moveFrom._image = nullptr;
moveFrom._memory = nullptr;
}
return *this;
}
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
// Methods // Methods
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------

View File

@ -915,6 +915,21 @@ size_t TexMetadata::ComputeIndex( size_t mip, size_t item, size_t slice ) const
// Blob - Bitmap image container // Blob - Bitmap image container
//===================================================================================== //=====================================================================================
Blob& Blob::operator= (Blob&& moveFrom)
{
if ( this != &moveFrom )
{
Release();
_buffer = moveFrom._buffer;
_size = moveFrom._size;
moveFrom._buffer = nullptr;
moveFrom._size = 0;
}
return *this;
}
void Blob::Release() void Blob::Release()
{ {
if ( _buffer ) if ( _buffer )