(C)Copyright 2000 NTT Cyber Space Laboratories
class CChunk{
public:
// 型宣言
typedef std::vector<char>
CChunkData;
// 初期化・デストラクタ
CChunk(std::string
ID); // コンストラクタ
virtual ~CChunk();
//
デストラクタ
////////////////////////////
// 機能メンバ関数
// 取得系
const std::string&
GetID(); //
チャンク ID を取得
const int GetSize(); //
チャンクサイズを取得
const CChunkData&
GetData(); //
チャンクデータを取得
// 書き込み系
int PutData( int
size, char inputData[] ); //
データを追加、キャラクタ配列型
int PutData( CChunkData&
inputData ); //
データを追加、ベクトル型
int PutData( std::string&
theString); //
データを追加、文字列型
// 問い合わせ
virtual std::string
whatami(); //
チャンクの種類を返す。派生クラスにより定義する。
protected:
int GetNInt( int
size=sizeof(long) ); //
現在位置から size バイト整数を取得
CChunkData GetVector(
int size=0 ); //
現在位置から size バイト分のベクトルを取得
std::string GetRndString(
int length=0 ); //
現在位置から length だけの文字列を取得
void PutNInt( unsigned
int inputData, int size=sizeof(long) ); //
現在位置から size バイト整数を書き込み
void cnk_rewind(); //
現在位置を先頭に戻す
void cnk_delete(); //
データを消去する
const int GetCurrentPosition(); //
現在位置を取得する
// 例外
class err_FailPut; //
データの書き込みに失敗
}
CChunk
は、ヘッダ情報を格納するデータデータ単位であるチャンクの、構成・取得を助けるクラスです。CChunk
クラスは、データフォーマットのチャンクと同様、ID
とサイズとデータを持っています。ID, サイズ,
データともに読み出しの手段が用意されていますが、書き込みについて
ID とサイズへ直接書き込むことはできません。ID
はコンストラクト時に1回だけ指定することができるのみであり、サイズは、データを追加・削除すると自動的に更新されます。CChunk
クラスのデータフィールドへの詳細なアクセス方法は開放されておらず、サブクラスを継承させ、そのサブクラスによりアクセス方法が提供されます。このため、CChunk
クラスは、データフィールドへアクセスする詳細な手段を
protected メンバ関数によりサブクラスに開放しています。const std::string& GetID()
const int GetSize()
const CChunkData& GetData()
int PutData( int size, char inputData[] )
int PutData( CChunkData& inputData )
int PutData( std::string& theString )
CChunk
クラスは現在位置の情報を持ちます。現在位置はデータアクセス度に次にデータアクセスすべきデータフィールド上の位置へ自動的に移動します。現在位置は
GetCurrentPosition()
関数により問い合わせることができ、cnk_rewind()
関数によりデータフィールドの先頭へ戻すことができます。
int GetNInt( int size=sizeof(long) )
CChunkData GetVector( int size=0 )
(CChunkData)
を取得します。size のデフォルト値はデータフィールドの末尾までのサイズです。
std::string GetRndString ( int size=0 )
void PutNInt( unsigned int inputData, int
size=sizeof(long) )
void cnk_rewind()
void cnk_delete()
const int GetCurrentPosition()
CChunk.h
CChunk.cxx