CChunk クラスのマニュアル

(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 はコンストラクト時に１回だけ指定することができるのみであり、サイズは、データを追加・削除すると自動的に更新されます。
  チャンクのデータ部（データフィールド）は、チャンクの種類によって構成が違うので、`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 データフォーマット説明書