続 ヘッダのコンセプト化

ヘッダにファイル種別を設定する操作の問題点を挙げてみます。

  • MS-DOSファイル属性、UNIXパーミッション共に、ファイルの種類と付加的な情報が混在している
  • ZIPのようにMS-DOSファイル属性とUNIXパーミッションの両方を持つ場合、両者の整合性をとる必要がある
  • tarのハードリンクやpax拡張ヘッダのようにfilesystem::file_type以外の種別も扱えなければいけない

いくつかのメンバに依存関係があるため、最終的にはメンバ変数を全てprivateにする必要があると思いますが、とりあえずは、

// ファイル種別をvに設定する。
// file_typeにない種別は、この関数では設定できない。
void type(filesystem::file_type v);

というメンバ関数を追加することで対処しました。
lha/headers.hppの差分
tar/headers.hppの差分
zip/headers.hppの差分
ひとまず、これでチュートリアルを書いてみます。