続 ヘッダのコンセプト化
ヘッダにファイル種別を設定する操作の問題点を挙げてみます。
- 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の差分
ひとまず、これでチュートリアルを書いてみます。