2.1.2. Writing a container_sourceの勉強メモ
http://www.boost.org/libs/iostreams/doc/tutorial/container_source.html
・読み取りのみを行うクラスはSourceと呼ばれる。
・Sourceクラス中には下記の型定義を行う。
-キャラクタタイプを示す、char_type。
-デバイスがサポートするI/O操作を示すcategory
例)typedef source_tag category;//読み取りをサポートする。
・std::streamsize read(char s, std::streamsize n)メソッドを定義する。
-これはnだけデータを読み取とり、sにセットする
-返却値は実際に読み取ったサイズを返却する。EOFもしくは読み取った数が0の場合は-1を返却する。
・ノンブロッキングデバイス...readメソッドでストリームの残りサイズがまだnより大きく、EOFにも達していないが、要求されたnよりも小さいデータを返却する場合があるデバイス。ノンブロッキングデバイスはstd::iostreamとうまく協調できない。
・sourceクラス
-char_typeやcategoryがあらかじめ定義されているクラス
・Boost.Iostreamにはfiltering streams や stream buffersのコンストラクタにboost::iterator_rangeを直接指定できる。これによってコンテナを容易に読み取ることができる。