## Class template basic_lzh_file_sink

hamigaki::archivers::basic_lzh_file_sink —

LZHファイルへの書き込み専用アクセスを提供するSinkモデル

## Synopsis

    template<typename SeekableSink>
    class basic_lzh_file_sink {
    public:
      // types
      typedef char                   char_type;
      typedef implementation defined category;
      typedef lha::header            header_type;

      // construct/copy/destruct
      basic_lzh_file_sink(const SeekableSink&);

      // Boost.Iostreams implementation
      std::streamsize write(const char_type*, std::streamsize);
      void close();

      // Hamigaki.Archivers implementation
      void create_entry(const lha::header&);
      void rewind_entry();
      void close_archive();

      // modifiers
      void default_method(const char*);
    };

## Description

受け取ったSeekableSinkへ複数のファイルデータをLZHファイルとして書き出すことができる。

モデルとなるコンセプト:Sink, ClosableDevice

### `basic_lzh_file_sink` construct/copy/destruct

1.     basic_lzh_file_sink(const SeekableSink& sink);

### `basic_lzh_file_sink` Boost.Iostreams implementation

1.     std::streamsize write(const char_type* s, std::streamsize n);

   Effects: | `create_entry()`に渡したヘッダの`method`に従い、圧縮したデータを書き出す。 但し、ヘッダの`compressed_size`に値が設定されている場合は、予め圧縮されたデータを入力として渡さなければならない。
   Throws: | 圧縮後のサイズが、ヘッダの`file_size`を超えた場合、give_up_compression

2.     void close();

### `basic_lzh_file_sink` Hamigaki.Archivers implementation

1.     void create_entry(const lha::header& head);

   Effects: | 新しいエントリを作成し、書き込みの対象とする

2.     void rewind_entry();

   Effects: | 現在のエントリの圧縮メソッドを「-lh0-」に変更し、書き込み位置を先頭に戻す

3.     void close_archive();

   Effects: | LZHエンドマークを出力し、アーカイブを閉じる。出力先の外部SeekableSinkも閉じられる。

### `basic_lzh_file_sink` modifiers

1.     void default_method(const char* method);

   Effects: | 既定の圧縮メソッドを`method`に設定する

| 製作著作 © 2006, 2007 Takeshi Mouri