split_path/make_path
変数展開で使うパスの分解/連結関数を実装しました。
今日の成果物
bjamのPATHNAME構造体と微妙に仕様が違っています。
struct path_components { std::string grist; std::string root; // 末尾のデリミタを含む std::string dir; // 末尾のデリミタを含む std::string base; std::string suffix; std::string member; };
というのも、bjamのpath_build()は連結時にデリミタが必要になると、末尾の次の文字を使う仕様になっていて、バグの温床になりそうだったからです。
なので、パスの分解時はデリミタまで保存しておいて、連結時に必要に応じて取り除くようにしています。