diff options
Diffstat (limited to 'src/utils/cpp')
-rw-r--r-- | src/utils/cpp/TARGETS | 6 | ||||
-rw-r--r-- | src/utils/cpp/path.hpp | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/utils/cpp/TARGETS b/src/utils/cpp/TARGETS index 35a53a68..7268f10a 100644 --- a/src/utils/cpp/TARGETS +++ b/src/utils/cpp/TARGETS @@ -37,4 +37,10 @@ , "hdrs": ["hex_string.hpp"] , "stage": ["src", "utils", "cpp"] } +, "path": + { "type": ["@", "rules", "CC", "library"] + , "name": ["path"] + , "hdrs": ["path.hpp"] + , "stage": ["src", "utils", "cpp"] + } } diff --git a/src/utils/cpp/path.hpp b/src/utils/cpp/path.hpp new file mode 100644 index 00000000..045ece0e --- /dev/null +++ b/src/utils/cpp/path.hpp @@ -0,0 +1,15 @@ +#ifndef INCLUDED_SRC_UTILS_CPP_PATH_HPP +#define INCLUDED_SRC_UTILS_CPP_PATH_HPP + +#include <filesystem> + +[[nodiscard]] static inline auto ToNormalPath(std::filesystem::path const& p) + -> std::filesystem::path { + auto n = p.lexically_normal(); + if (not n.has_filename()) { + return n.parent_path(); + } + return n; +} + +#endif |