Common Library
0.9.5
|
データをビット列に変換する [詳解]
公開メンバ関数 | |
Serialization (Out out) | |
出力先反復子を指定して構築 [詳解] | |
~Serialization () | |
デストラクタ [詳解] | |
template<class Data > | |
void | operator() (Data data, size_t length) |
データの書き込みを行う [詳解] | |
void | flush () |
キャッシュ内のデータを出力する [詳解] | |
データをビット列に変換する
Data 型のデータをビット列として Code 型のデータに変換する。 クラス・テンプレート引数の Code は変換後のデータ型、Out は出力先反復子をそれぞれ表す。 メンバ関数 Serialization< Code, Out >::operator() がビット列への変換処理を行う。 Serialization< Code, Out >::operator() のテンプレート引数 Data は変換前のデータの型を表す。
Out は出力イテレータなので、データ型は未定義(void)である。したがって、Out の他に出力するビット列の型 Code も指定しなければならない。 back_insert_iterator を利用した場合のサンプル・プログラムは以下の通り。
型の名前が冗長だが、std::for_each と Create_BackInsertSerialization を利用することで多少はすっきりと書ける。
サンプル・プログラムにおいて、Code とコンテナの要素の型が一致しなかった場合、結果は不定となる (余分な部分にゼロが埋められるか、足りない領域が削られてしまう)。
Data 型及び Code 型は符号なし整数であることを前提としている。ともにビットシフト演算 ( >>, << ) を利用し、 両者の間で論理演算 ( &, | ) も行われる。したがって、これらの演算が定義され、互いに型変換できる必要がある。 基本的には組み込み変数での利用を想定している。
|
inlineexplicit |
出力先反復子を指定して構築
out | 出力先反復子 |
|
inline |
デストラクタ
キャッシュに残ったデータは解体時に書き込まれる
void tadah_fussy::gadget::Serialization< Code, Out >::operator() | ( | Data | data, |
size_t | length | ||
) |
データの書き込みを行う
data | 書き込むデータ |
length | データ長(ビット列の長さ) |
void tadah_fussy::gadget::Serialization< Code, Out >::flush |
キャッシュ内のデータを出力する