summaryrefslogtreecommitdiff
path: root/graphs/cpp/path/windows_path.cc
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
commitc9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch)
tree3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/cpp/path/windows_path.cc
add: graphs et rushs
Diffstat (limited to 'graphs/cpp/path/windows_path.cc')
-rw-r--r--graphs/cpp/path/windows_path.cc37
1 files changed, 37 insertions, 0 deletions
diff --git a/graphs/cpp/path/windows_path.cc b/graphs/cpp/path/windows_path.cc
new file mode 100644
index 0000000..cc94afa
--- /dev/null
+++ b/graphs/cpp/path/windows_path.cc
@@ -0,0 +1,37 @@
+//
+// Created by martial.simon on 2/25/25.
+//
+
+#include "windows_path.hh"
+
+#include <sstream>
+WindowsPath::WindowsPath(char drive)
+ : Path()
+{
+ path_.push_back(std::string{ drive } + std::string{ ':' });
+}
+std::string WindowsPath::to_string() const
+{
+ if (path_.empty())
+ return "";
+ std::ostringstream os;
+ os << path_[0];
+ for (size_t i = 1; i < path_.size(); i++)
+ {
+ os << "\\" << path_[i];
+ }
+ if (!final_)
+ os << "\\";
+ return os.str();
+}
+Path& WindowsPath::join(const std::string& tail, bool is_file)
+{
+ // :, ", |, ?, *
+ if (tail.find(':') != std::string::npos
+ || tail.find('\"') != std::string::npos
+ || tail.find('|') != std::string::npos
+ || tail.find('?') != std::string::npos
+ || tail.find('*') != std::string::npos)
+ return *this;
+ return Path::join(tail, is_file);
+} \ No newline at end of file