11 Path(
const char* path):
14 Path(
const std::string& path):
17 std::string str()
const {
21 std::string ext()
const;
25 Path replace_ext(
const std::string& new_ext)
const {
26 std::string prefix = path_.substr(0, path_.find_last_of(
"."));
30 if(!ext.empty() && ext[0] ==
'.') {
31 ext = ext.substr(1, std::string::npos);
34 return Path(prefix +
"." + ext);
37 bool operator==(
const Path& p)
const;
38 bool operator<(
const Path& p)
const;
39 bool operator!=(
const Path& p)
const {
46 std::ostream& operator<<(std::ostream& os,
const Path& p);
54 std::size_t operator()(
const smlt::Path& k)
const {
55 return hash<std::string>()(k.str());