Magick++: Blob.h Source File

Magick++ 7.0.10

Blob.h
Go to the documentation of this file.
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
4 // Copyright Dirk Lemstra 2015
5 //
6 // Reference counted container class for Binary Large Objects (BLOBs)
7 //
8
9 #if !defined(Magick_BlobRef_header)
10 #define Magick_BlobRef_header
11
12 #include "Magick++/Include.h"
13 #include <string>
14
15 namespace Magick
16 {
17 // Forward decl
18 class BlobRef;
19
20 class MagickPPExport Blob
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_,const 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) const;
49
50 // Obtain pointer to data. The user should never try to modify or
51 // free this data since the Blob class manages its own data. The
52 // user must be finished with the data before allowing the Blob to
53 // be destroyed since the pointer is invalid once the Blob is
54 // destroyed.
55 const void* data(void) const;
56
57 // Obtain data length.
58 size_t length(void) const;
59
60 // Update object contents, making a copy of the supplied data.
61 // Any existing data in the object is deallocated.
62 void update(const void* data_,const size_t length_);
63
64 // Update object contents, using supplied pointer directly (no
65 // copy). Any existing data in the object is deallocated. The user
66 // must ensure that the pointer supplied is not deleted or
67 // otherwise modified after it has been supplied to this method.
68 // Specify allocator_ as "MallocAllocator" if memory is allocated
69 // via the C language malloc() function, or "NewAllocator" if
70 // memory is allocated via C++ 'new'.
71 void updateNoCopy(void* data_,const size_t length_,
72 const Allocator allocator_=NewAllocator);
73
74 private:
75 BlobRef *_blobRef;
76 };
77
78 } // namespace Magick
79
80 #endif // Magick_BlobRef_header
Magick::Blob::MallocAllocator
Definition: Blob.h:26
Magick::Blob
Definition: Blob.h:20
MagickPPExport
#define MagickPPExport
Definition: Include.h:281
Include.h
Magick::BlobRef
Definition: BlobRef.h:21
Magick::Blob::Allocator
Allocator
Definition: Blob.h:24
Magick
Definition: Blob.h:15