github.com/kaydxh/golang@v0.0.131/pkg/gocv/cgo/third_path/graphics-magick/include/Magick++/Blob.h (about)

     1  // This may look like C code, but it is really -*- C++ -*-
     2  //
     3  // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
     4  //
     5  // Reference counted container class for Binary Large Objects (BLOBs)
     6  //
     7  
     8  #if !defined(Magick_BlobRef_header)
     9  #define Magick_BlobRef_header
    10  
    11  #include "Magick++/Include.h"
    12  #include <string>
    13  
    14  namespace Magick
    15  {
    16    // Forward decl
    17    class BlobRef;
    18  
    19    class MagickDLLDecl Blob
    20    {
    21  
    22    public:
    23  
    24      enum Allocator
    25      {
    26        MallocAllocator,
    27        NewAllocator
    28      };
    29  
    30      // Default constructor
    31      Blob ( void );
    32  
    33      // Construct object with data, making a copy of the supplied data.
    34      Blob ( const void* data_, size_t length_ );
    35  
    36      // Copy constructor (reference counted)
    37      Blob ( const Blob& blob_ );
    38  
    39      // Destructor (reference counted)
    40      virtual       ~Blob ();
    41  
    42      // Assignment operator (reference counted)
    43      Blob&         operator= ( const Blob& blob_ );
    44  
    45      // Update object contents from Base64-encoded string representation.
    46      void          base64 ( const std::string base64_ );
    47      // Return Base64-encoded string representation.
    48      std::string   base64 ( void );
    49  
    50      // Update object contents, making a copy of the supplied data.
    51      // Any existing data in the object is deallocated.
    52      void          update ( const void* data_, size_t length_ );
    53  
    54      // Update object contents, using supplied pointer directly (no
    55      // copy). Any existing data in the object is deallocated.  The user
    56      // must ensure that the pointer supplied is not deleted or
    57      // otherwise modified after it has been supplied to this method.
    58      // Specify allocator_ as "MallocAllocator" if memory is allocated
    59      // via the C language malloc() function, or "NewAllocator" if
    60      // memory is allocated via C++ 'new'.
    61      void          updateNoCopy ( void* data_, size_t length_,
    62                                   Allocator allocator_ = NewAllocator );
    63  
    64      // Obtain pointer to data. The user should never try to modify or
    65      // free this data since the Blob class manages its own data. The
    66      // user must be finished with the data before allowing the Blob to
    67      // be destroyed since the pointer is invalid once the Blob is
    68      // destroyed.
    69      const void*   data ( void ) const;
    70  
    71      // Obtain data length
    72      size_t length ( void ) const;
    73  
    74    protected:
    75  
    76    private:
    77      BlobRef * _blobRef;
    78    };
    79  
    80  } // namespace Magick
    81  
    82  #endif // Magick_BlobRef_header