Common Library  0.9.5
Deserialization< In > クラステンプレート

ビット列をデータに変換する [詳解]

公開メンバ関数

 Deserialization (In is, In ie)
 入力先を指定して構築 [詳解]
 
template<class Data >
void operator() (Data *data, size_t length)
 符号列からデータを読み込む [詳解]
 

詳解

template<class In>
class Deserialization< In >

ビット列をデータに変換する

Code 型のビット列を Data 型のデータに変換する。 クラス・テンプレート引数の In は入力先反復子を表す。 メンバ関数 Deserialization< In >::operator() がビット列からの変換処理を行う。 Deserialization< In >::operator() のテンプレート引数 Data は変換後のデータの型を表す。

サンプル・プログラムを以下に示す。

std::vector< unsigned int > code;
:
std::vector< unsigned char > obj( szOfVec );
Deserialization< std::vector< unsigned int >::const_iterator > deserial( code.begin(), code.end() );
for ( std::vector< unsigned char >::iterator i = obj.begin() ; i != obj.end() ; ++i ) {
deserial( i, sizeof( unsigned char ) * CHAR_BIT );
}
ビット列をデータに変換する
Definition: serialize.h:310

Data 型及び Code 型は符号なし整数であることを前提としている。ともにビットシフト演算 ( >>, << ) を利用し、 両者の間で論理演算 ( &, | ) も行われる。したがって、これらの演算が定義され、互いに型変換できる必要がある。 基本的には組み込み変数での利用を想定している。

構築子と解体子

◆ Deserialization()

template<class In >
Deserialization< In >::Deserialization ( In  is,
In  ie 
)
inlineexplicit

入力先を指定して構築

  • 符号列の先頭と末尾の次の位置が逆転していた場合、例外 ExceptionNegativeLength< std::iterator_traits< In >::difference_type > を投げる。
引数
is入力する符号列の先頭
ie入力する符号列の末尾の次

関数詳解

◆ operator()()

template<class In >
template<class Data >
void Deserialization< In >::operator() ( Data *  data,
size_t  length 
)

符号列からデータを読み込む

  • 符号列から読み込むことができない(末尾に達した)場合は std::out_of_range を投げる。
引数
data読み込んだデータを保持する変数へのポインタ
length読み込むデータの長さ(ビット長)
戻り値
なし

このクラス詳解は次のファイルから抽出されました: