Doxygen
Loading...
Searching...
No Matches
dir.h
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Copyright (C) 1997-2021 by Dimitri van Heesch.
4 *
5 * Permission to use, copy, modify, and distribute this software and its
6 * documentation under the terms of the GNU General Public License is hereby
7 * granted. No representations are made about the suitability of this software
8 * for any purpose. It is provided "as is" without express or implied warranty.
9 * See the GNU General Public License for more details.
10 *
11 * Documents produced by Doxygen are derivative works derived from the
12 * input used in their production; they are not affected by this license.
13 *
14 */
15
16#ifndef DIR_H
17#define DIR_H
18
19#include <memory>
20#include <string>
21
23{
24 public:
26 DirEntry(const DirEntry &);
27 DirEntry &operator=(const DirEntry &);
30 bool is_directory() const;
31 bool is_regular_file() const;
32 bool is_symlink() const;
33 std::string path() const;
34 private:
35 friend class DirIterator;
36 DirEntry();
37 struct Private;
38 std::unique_ptr<Private> p;
39};
40
42{
43 public:
45 using difference_type = std::ptrdiff_t;
48 using iterator_category = std::input_iterator_tag;
49 DirIterator(const DirIterator &it);
54 const value_type &operator*() const;
55 const value_type *operator->() const;
56
57 friend bool operator==(const DirIterator &it1,const DirIterator &it2);
58 friend bool operator!=(const DirIterator &it1,const DirIterator &it2);
59 friend DirIterator begin(DirIterator it) noexcept;
60 friend DirIterator end(const DirIterator &) noexcept;
62
63 private:
64 friend class Dir;
66 DirIterator(const std::string &path);
67 struct Private;
68 std::unique_ptr<Private> p;
69};
70
71/** Class representing a directory in the file system */
72class Dir final
73{
74 public:
75 Dir();
76 Dir(const std::string &path);
77 Dir(const Dir &d);
78 Dir &operator=(const Dir &d);
79 Dir(Dir &&d);
80 Dir &operator=(Dir &&d);
81 ~Dir();
82 void setPath(const std::string &path);
83 std::string path() const;
84
85 DirIterator iterator() const;
86
87 bool empty(const std::string &subdir) const;
88 bool exists() const;
89 std::string filePath(const std::string &path,bool acceptsAbsPath=true) const;
90 bool exists(const std::string &path,bool acceptsAbsPath=true) const;
91 bool mkdir(const std::string &path,bool acceptsAbsPath=true) const;
92 bool rmdir(const std::string &path,bool acceptsAbsPath=true) const;
93 bool remove(const std::string &path,bool acceptsAbsPath=true) const;
94 bool rename(const std::string &orgName,const std::string &newName,
95 bool acceptsAbsPath=true) const;
96 bool copy(const std::string &src,const std::string &dest,bool acceptsAbsPath=true) const;
97 std::string absPath() const;
98
99 bool isRelative() const;
100
101 static bool isRelativePath(const std::string &path);
102 static std::string currentDirPath();
103 static bool setCurrent(const std::string &path);
104 static std::string cleanDirPath(const std::string &path);
105
106 private:
107 struct Private;
108 std::unique_ptr<Private> p;
109};
110
111#endif
Definition dir.h:23
~DirEntry()
DirEntry(const DirEntry &)
Definition dir.cpp:38
friend class DirIterator
Definition dir.h:35
bool is_directory() const
Definition dir.cpp:66
bool is_regular_file() const
Definition dir.cpp:71
std::string path() const
Definition dir.cpp:81
std::unique_ptr< Private > p
Definition dir.h:38
DirEntry & operator=(const DirEntry &)
Definition dir.cpp:43
bool is_symlink() const
Definition dir.cpp:76
DirEntry()
Definition dir.cpp:34
static std::string currentDirPath()
Definition dir.cpp:343
Dir()
Definition dir.cpp:190
Dir & operator=(const Dir &d)
Definition dir.cpp:201
std::string absPath() const
Definition dir.cpp:365
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
Definition dir.cpp:296
void setPath(const std::string &path)
Definition dir.cpp:230
static bool isRelativePath(const std::string &path)
Definition dir.cpp:276
~Dir()
Definition dir.cpp:226
bool isRelative() const
Definition dir.cpp:271
bool remove(const std::string &path, bool acceptsAbsPath=true) const
Definition dir.cpp:315
bool empty(const std::string &subdir) const
Definition dir.cpp:264
bool copy(const std::string &src, const std::string &dest, bool acceptsAbsPath=true) const
Definition dir.cpp:331
std::string filePath(const std::string &path, bool acceptsAbsPath=true) const
Definition dir.cpp:281
DirIterator iterator() const
Definition dir.cpp:240
bool rmdir(const std::string &path, bool acceptsAbsPath=true) const
Definition dir.cpp:310
bool rename(const std::string &orgName, const std::string &newName, bool acceptsAbsPath=true) const
Definition dir.cpp:322
static std::string cleanDirPath(const std::string &path)
Definition dir.cpp:358
static bool setCurrent(const std::string &path)
Definition dir.cpp:351
std::string path() const
Definition dir.cpp:235
bool exists() const
Definition dir.cpp:258
std::unique_ptr< Private > p
Definition dir.h:108
DirIterator()
Definition dir.cpp:97
std::ptrdiff_t difference_type
Definition dir.h:45
DirEntry value_type
Definition dir.h:44
DirIterator(const DirIterator &it)
Definition dir.cpp:105
std::input_iterator_tag iterator_category
Definition dir.h:48
DirIterator operator++()
Definition dir.cpp:142
value_type & reference
Definition dir.h:47
~DirIterator()
Definition dir.cpp:138
const value_type & operator*() const
Definition dir.cpp:149
const value_type * operator->() const
Definition dir.cpp:155
friend bool operator==(const DirIterator &it1, const DirIterator &it2)
Definition dir.cpp:161
friend class Dir
Definition dir.h:64
std::unique_ptr< Private > p
Definition dir.h:68
DirIterator & operator=(const DirIterator &it)
Definition dir.cpp:112
friend DirIterator begin(DirIterator it) noexcept
Definition dir.cpp:171
friend bool operator!=(const DirIterator &it1, const DirIterator &it2)
Definition dir.cpp:166
friend DirIterator end(const DirIterator &) noexcept
Definition dir.cpp:176
value_type * pointer
Definition dir.h:46
Definition dir.cpp:30