11#define MAGICKCORE_IMPLEMENTATION  1 
   12#define MAGICK_PLUSPLUS_IMPLEMENTATION 1 
   14#include "Magick++/Include.h" 
   15#include "Magick++/Blob.h" 
   16#include "Magick++/BlobRef.h" 
   17#include "Magick++/Exception.h" 
   21Magick::Blob::Blob(
void)
 
   22  : _blobRef(new Magick::BlobRef(0,0))
 
   26Magick::Blob::Blob(
const void* data_,
const size_t length_)
 
   27  : _blobRef(new Magick::BlobRef(data_, length_))
 
   32  : _blobRef(blob_._blobRef)
 
   42    if (_blobRef->decrease() == 0)
 
   45  catch(Magick::Exception&)
 
   49  _blobRef=(Magick::BlobRef *) NULL;
 
   52Magick::Blob& Magick::Blob::operator=(
const Magick::Blob& blob_)
 
   56      blob_._blobRef->increase();
 
   57      if (_blobRef->decrease() == 0)
 
   60      _blobRef=blob_._blobRef;
 
   65void Magick::Blob::base64(
const std::string base64_)
 
   73  decoded=Base64Decode(base64_.c_str(),&length);
 
   76    updateNoCopy(
static_cast<void*
>(decoded),length,
 
   77      Magick::Blob::MallocAllocator);
 
   80std::string Magick::Blob::base64(
void)
 const 
   92  encoded=Base64Encode(
static_cast<const unsigned char*
>(data()),length(),
 
   97      result=std::string(encoded,encoded_length);
 
   98      encoded=(
char *) RelinquishMagickMemory(encoded);
 
  102  return(std::string());
 
  105const void* Magick::Blob::data(
void)
 const 
  107  return(_blobRef->data);
 
  110size_t Magick::Blob::length(
void)
 const 
  112  return(_blobRef->length);
 
  115void Magick::Blob::update(
const void* data_,
size_t length_)
 
  117  if (_blobRef->decrease() == 0)
 
  120  _blobRef=
new Magick::BlobRef(data_,length_);
 
  123void Magick::Blob::updateNoCopy(
void* data_,
size_t length_,
 
  124  Magick::Blob::Allocator allocator_)
 
  126  if (_blobRef->decrease() == 0)
 
  129  _blobRef=
new Magick::BlobRef((
const void*) NULL,0);
 
  130  _blobRef->data=data_;
 
  131  _blobRef->length=length_;
 
  132  _blobRef->allocator=allocator_;