summaryrefslogtreecommitdiff
path: root/graphs/cpp/path/windows_path.cc
blob: cc94afa3ec3da476ed2025f5d212974c6fc090f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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);
}