## Class template basic_zip_file_sink

hamigaki::archivers::basic_zip_file_sink —

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

## Synopsis

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

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

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

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

      // modifiers
      void password(const std::string&);
    };

## Description

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

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

### `basic_zip_file_sink` construct/copy/destruct

1.     basic_zip_file_sink(const SeekableSink& sink);

### `basic_zip_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_zip_file_sink` Hamigaki.Archivers implementation

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

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

2.     void rewind_entry();

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

3.     void close_archive();

   Effects: | セントラルディレクトリを出力し、アーカイブを閉じる。出力先の外部SeekableSinkも閉じられる。

### `basic_zip_file_sink` modifiers

1.     void password(const std::string& pswd);

   Effects: | 暗号化に用いるパスワードを`pswd`に設定する

| 製作著作 © 2006-2008 Takeshi Mouri