Blob は、不透明なデータを格納する手段を提供します。データベースに保存される非構造化データ(符号化画像など)を一般的に表すために使用される「Binary Large Object」という用語にちなんで名付けられました。Blob の関数は非常にシンプル(割り当てられたデータに関連付けられたポインタとサイズを格納)ですが、Blob クラスには非常に便利な機能がいくつか備わっています。特に、Image クラスとまったく同様に完全参照カウントされています。
Blob クラスは、オブジェクトの以前のすべての古いバージョンを保持しながら、値の割り当てをサポートします。割り当ては内部的にポインタを介して行われるため、Blob は STL コンテナや割り当てを必要とする他のデータ構造に直接格納するのに十分な効率があります。特に、連想コンテナ(STL の 'map' など)に Blob を格納することで、Blob の簡単なインデックス付きインメモリ「データベース」を作成できます。
Magick++ は現在、ICC および IPTC プロファイルだけでなく、Blob を使用して符号化画像(JPEG など)を格納しています。Blob は汎用のクラスであるため、他の目的にも使用できます。
Blob で提供されるメソッドを次の表に示します。
Blob メソッド
メソッド |
戻り値の型 |
シグネチャ |
説明 |
void |
既定のコンストラクタ |
||
const void* data_, size_t length_ |
データを使用してオブジェクトを構築し、提供されたデータをコピーする |
||
const Blob& blob_ |
コピーコンストラクタ(参照カウントあり) |
||
Blob |
const Blob& blob_ |
割り当て演算子(参照カウントあり) |
|
void |
const std::string base64_ |
オブジェクトの内容を Base64 でエンコードされた文字列表現から更新します。 |
|
std::string |
void |
Base64 でエンコードされた文字列表現を返します。 |
|
const void* |
void |
データへのポインタを取得します。Blob クラスは独自のデータを管理するため、ユーザーは決してこのデータを変更したり解放したりしないでください。Blob が破棄されるとポインタが無効になるため、ユーザーは Blob が破棄される前にデータを確実に使用し終えている必要があります。 |
|
size_t |
void |
データの長さを取得します。 |
|
void |
const void* data_, size_t length_ |
オブジェクトの内容を更新し、提供されたデータをコピーします。オブジェクト内の既存のデータはすべて割り当て解除されます。 |
|
void |
void* data_, size_t length_, Blob::Allocator allocator_ = Blob::NewAllocator |
提供されたポインタを直接(コピーなし)使用してオブジェクトの内容を更新します。オブジェクト内の既存のデータはすべて割り当て解除されます。ユーザーは、このメソッドにポインタが提供された後、そのポインタが削除されたり変更されていないことを確認する必要があります。オプションの allocator_ パラメータを使用すると、C (MallocAllocator) または C++ (NewAllocator) メモリ割り当てシステムを使用してメモリが割り当てられたかどうかをユーザーが指定できます。デフォルトでは C++ メモリ割り当て方式を使用します。 |