// This may look like C code, but it is really -*- C++ -*- // // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2004 // Copyright Dirk Lemstra 2015 // // Implementation of Blob // #define MAGICKCORE_IMPLEMENTATION 1 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1 #include "Magick++/Include.h" #include "Magick++/Thread.h" #include "Magick++/BlobRef.h" #include Magick::BlobRef::BlobRef(const void* data_,const size_t length_) : _data(0), _length(length_), _allocator(Magick::Blob::NewAllocator), _refCount(1), _mutexLock() { if (data_) { _data=new unsigned char[length_]; memcpy(_data,data_,length_); } } // Destructor (actually destroys data) Magick::BlobRef::~BlobRef(void) { if (_allocator == Magick::Blob::NewAllocator) { delete[] static_cast(_data); _data=0; } else if (_allocator == Magick::Blob::MallocAllocator) { _data=(void *) RelinquishMagickMemory(_data); } }