ActiveLib
Loading...
Searching...
No Matches
Path.h
1
6#ifndef ACTIVE_FILE_PATH
7#define ACTIVE_FILE_PATH
8
9#include "Active/Utility/Cloner.h"
10#include "Active/Utility/String.h"
11
12#include <filesystem>
13
14namespace active::file {
15
17 class Path: public utility::Cloner {
18 public:
19
20 // MARK: - Types
21
23 using Unique = std::unique_ptr<Path>;
25 using Shared = std::shared_ptr<Path>;
26
27 // MARK: - Constants
28
31
32 // MARK: - Constructors
33
37 Path();
43 Path(const utility::String& path, bool isRelative = false);
48 Path(const std::filesystem::path& path);
53 Path(const Path& source);
54
58 ~Path() {}
59
64 Path* clonePtr() const { return new Path(*this); }
65
66 //MARK: - Static functions
67
72 static Path current();
73
74 // MARK: - Operators
75
81 Path& operator= (const Path& source);
87 bool operator== (const Path& ref) const;
93 bool operator!= (const Path& ref) const { return !(*this == ref); }
99 Path operator/ (const utility::String& toAppend) const { return Path{*this}.append(toAppend); }
105 Path operator+ (const utility::String& toAppend) const;
111 Path& operator/= (const utility::String& toAppend) { return append(toAppend); }
117 Path& operator+= (const utility::String& toConcat) { return concat(toConcat); }
122 operator const std::filesystem::path&() const { return m_path; }
127 operator utility::String() const;
128
129 // MARK: - Functions (const)
130
135 bool empty() const { return m_path.empty(); }
141 utility::String getNodeName(bool isExtensionDeleted = false) const;
156 Path rootDirectory() const { return m_path.root_directory(); }
161 Path rootName() const { return m_path.root_name(); }
166 Path rootPath() const { return m_path.root_path(); }
171 Path relativePath() const { return m_path.relative_path(); }
176 Path lexicallyNormal() const { return m_path.lexically_normal(); }
181 bool hasFileName() const;
182
183 // MARK: - Functions (mutating)
184
190 Path& append(const utility::String& toAppend);
196 Path& concat(const utility::String& toConcat);
207 Path& replaceFileName(const utility::String& replacement = utility::String{});
213 Path& replaceExtension(const utility::String& replacement = utility::String{});
214
215 private:
216
217 // MARK: - Variables
218
220 std::filesystem::path m_path;
221 };
222
223}
224
225#endif //ACTIVE_FILE_PATH
Class to represent the path of a node in the local file system.
Definition Path.h:17
~Path()
Definition Path.h:58
std::shared_ptr< Path > Shared
Unique pointer.
Definition Path.h:25
Path operator+(const utility::String &toAppend) const
Definition Path.cpp:98
utility::String getNodeName(bool isExtensionDeleted=false) const
Definition Path.cpp:121
std::unique_ptr< Path > Unique
Unique pointer.
Definition Path.h:23
static Path current()
Definition Path.cpp:62
static const utility::String delimiter
The path delimiter expression for the current platform.
Definition Path.h:30
Path lexicallyNormal() const
Definition Path.h:176
Path & concat(const utility::String &toConcat)
Definition Path.cpp:176
bool empty() const
Definition Path.h:135
Path * clonePtr() const
Definition Path.h:64
Path & replaceFileName(const utility::String &replacement=utility::String{})
Definition Path.cpp:200
Path & removeFileName()
Definition Path.cpp:187
Path relativePath() const
Definition Path.h:171
Path rootName() const
Definition Path.h:161
bool operator!=(const Path &ref) const
Definition Path.h:93
Path & operator/=(const utility::String &toAppend)
Definition Path.h:111
bool operator==(const Path &ref) const
Definition Path.cpp:86
bool hasFileName() const
Definition Path.cpp:151
utility::String platformSpecific() const
Definition Path.cpp:141
Path operator/(const utility::String &toAppend) const
Definition Path.h:99
Path rootDirectory() const
Definition Path.h:156
utility::String getExtension() const
Definition Path.cpp:131
Path & append(const utility::String &toAppend)
Definition Path.cpp:163
Path & operator=(const Path &source)
Definition Path.cpp:72
Path & operator+=(const utility::String &toConcat)
Definition Path.h:117
Path()
Definition Path.cpp:23
Path & replaceExtension(const utility::String &replacement=utility::String{})
Definition Path.cpp:213
Path rootPath() const
Definition Path.h:166
Definition Cloner.h:17
A Unicode-aware string class.
Definition String.h:51
Definition Directory.h:12