(C)Copyright 2000 NTT Cyber Space Laboratories

CChunkクラス


名前
CChunk - TwinVQ ビットストリームヘッダチャンクの情報を格納するクラス
インタフェース
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 メンバ関数によりサブクラスに開放しています。
生成・初期化
このクラスは、デフォルトのコピーコンストラクタに加え、チャンク ID を与えるコンストラクタを持ちます。チャンク ID を与えるコンストラクタでは、データフィールドは空の状態に初期化され、チャンクサイズも 0 となります。
機能メンバ関数の説明 (public)
const std::string& GetID()
この関数は、チャンク ID を戻します。
const int GetSize()
この関数は、チャンクサイズを戻します。
const CChunkData& GetData()
この関数は、チャンクデータの全てを CChunkData の形で戻します。
int PutData( int size, char inputData[] )
この関数は、データフィールドの末尾に size バイト分のデータ inputData を追加します。
int PutData( CChunkData& inputData )
この関数は、データフィールドの末尾にデータ inputData を追加します。
int PutData( std::string& theString )
この関数は、データフィールドの末尾に文字列 theString を追加します。
機能メンバ関数の説明 (protected)
protected 機能メンバ関数は、データフィールドへの詳細なアクセス方法をサブクラスへ開放し、サブクラスでのデータフォーマットの定義を助ける役割を果たします。データフィールドへのアクセスのため、CChunk クラスは現在位置の情報を持ちます。現在位置はデータアクセス度に次にデータアクセスすべきデータフィールド上の位置へ自動的に移動します。現在位置は GetCurrentPosition() 関数により問い合わせることができ、cnk_rewind() 関数によりデータフィールドの先頭へ戻すことができます。
int GetNInt( int size=sizeof(long) )
この関数は、現在位置から size バイトの整数データを取得します。size のデフォルト値は 4 バイトです。
CChunkData GetVector( int size=0 )
この関数は、現在位置から size バイト分のベクトル (CChunkData) を取得します。size のデフォルト値はデータフィールドの末尾までのサイズです。
std::string GetRndString ( int size=0 )
この関数は、現在位置から size 文字数の文字列を取得します。size のデフォルト値は、データフィールドの末尾までのサイズです。
void PutNInt( unsigned int inputData, int size=sizeof(long) )
この関数は、現在位置から size バイトの整数を書き込みます。サイズのデフォルト値は 4 バイトです。
void cnk_rewind()
この関数は、現在位置をデータフィールドの先頭に戻します。
void cnk_delete()
この関数は、データフィールドの内容を消去します。
const int GetCurrentPosition()
この関数は、データフィールドの現在位置を戻します。
利用に必要なインクルードファイル
CChunk.h

この関数が置かれているファイル
CChunk.cxx
参照
TwinVQ データフォーマット説明書