ActiveLib
Loading...
Searching...
No Matches
FSNode.h
1
6#ifndef ACTIVE_FILE_FS_NODE
7#define ACTIVE_FILE_FS_NODE
8
9#include "Active/File/Path.h"
10#include "Active/Utility/Cloner.h"
11#include "Active/Utility/String.h"
12#include "Active/Utility/Time.h"
13
14#include <filesystem>
15
16namespace active::file {
17
19 class FSNode: public utility::Cloner {
20 public:
21
22 // MARK: - Types
23
25 using Unique = std::unique_ptr<FSNode>;
27 using Shared = std::shared_ptr<FSNode>;
28
29 // MARK: - Constants
30
33
34 // MARK: - Constructors
35
39 FSNode() noexcept;
45 FSNode(const Path& path);
50 FSNode(const FSNode& source) noexcept;
54 virtual ~FSNode() noexcept = default;
55
56 // MARK: - Operators
57
63 FSNode& operator= (const FSNode& source);
69 bool operator== (const FSNode& ref) const noexcept;
70
71 // MARK: - Functions (const)
72
77 Path getPath() const noexcept { return m_node.path(); }
83 virtual bool exists() const { return m_node.exists(); }
89 virtual bool isDirectory() const { return m_node.is_directory(); }
95 utility::Time getModificationTime() const { return m_node.last_write_time(); }
96
97 // MARK: - Functions (mutating)
98
104 virtual void setPath(const Path& path);
110 virtual void moveTo(const Path& path);
116 virtual void rename(const utility::String& name);
122 virtual void remove(bool isRecursive = true);
123
124 protected:
129 bool isMine() const noexcept { return m_isMine; }
134 void setMine(bool state) noexcept { m_isMine = state; }
135
136 private:
137
138 // MARK: - Variables
139
141 std::filesystem::directory_entry m_node;
143 bool m_isMine = true;
144 };
145
146}
147
148#endif //ACTIVE_FILE_FS_NODE
Class to represent a file system node (directory, file etc)
Definition FSNode.h:19
std::unique_ptr< FSNode > Unique
Unique pointer.
Definition FSNode.h:25
virtual void moveTo(const Path &path)
Definition FSNode.cpp:84
Path getPath() const noexcept
Definition FSNode.h:77
virtual bool exists() const
Definition FSNode.h:83
bool isMine() const noexcept
Definition FSNode.h:129
virtual bool isDirectory() const
Definition FSNode.h:89
virtual void rename(const utility::String &name)
Definition FSNode.cpp:97
utility::Time getModificationTime() const
Definition FSNode.h:95
FSNode() noexcept
Definition FSNode.cpp:16
void setMine(bool state) noexcept
Definition FSNode.h:134
virtual void remove(bool isRecursive=true)
Definition FSNode.cpp:111
static const utility::String pathDelimiter
The path delimiter expression for the current platform.
Definition FSNode.h:32
std::shared_ptr< FSNode > Shared
Unique pointer.
Definition FSNode.h:27
virtual void setPath(const Path &path)
Definition FSNode.cpp:74
Class to represent the path of a node in the local file system.
Definition Path.h:17
Definition Cloner.h:17
A Unicode-aware string class.
Definition String.h:51
A class to represent a date/time.
Definition Time.h:19
Definition Directory.h:12