Skip to main content

The Dir Class Reference

Class representing a directory in the file system. More...

Declaration

class Dir { ... }

Included Headers

#include <src/dir.h>

Public Constructors Index

Dir ()
Dir (const std::string &path)
Dir (const Dir &d)
Dir (Dir &&d)

Public Destructor Index

~Dir ()

Public Operators Index

Dir &operator= (const Dir &d)
Dir &operator= (Dir &&d)

Public Member Functions Index

voidsetPath (const std::string &path)
std::stringpath () const
DirIteratoriterator () const
boolisEmpty (const std::string subdir) const
boolexists () const
std::stringfilePath (const std::string &path, bool acceptsAbsPath=true) const
boolexists (const std::string &path, bool acceptsAbsPath=true) const
boolmkdir (const std::string &path, bool acceptsAbsPath=true) const
boolrmdir (const std::string &path, bool acceptsAbsPath=true) const
boolremove (const std::string &path, bool acceptsAbsPath=true) const
boolrename (const std::string &orgName, const std::string &newName, bool acceptsAbsPath=true) const
boolcopy (const std::string &src, const std::string &dest, bool acceptsAbsPath=true) const
std::stringabsPath () const
boolisRelative () const

Private Member Attributes Index

std::unique_ptr< Private >p

Public Static Functions Index

static boolisRelativePath (const std::string &path)
static std::stringcurrentDirPath ()
static boolsetCurrent (const std::string &path)
static std::stringcleanDirPath (const std::string &path)

Description

Class representing a directory in the file system.

Definition at line 74 of file dir.h.

Public Constructors

Dir()

Dir::Dir ()

Declaration at line 77 of file dir.h, definition at line 189 of file dir.cpp.

189Dir::Dir() : p(std::make_unique<Private>())
190{
191 std::error_code ec;
192 p->path = fs::current_path(ec);
193}

Reference p.

Referenced by Dir, Dir, operator= and operator=.

Dir()

Dir::Dir (const std::string & path)

Declaration at line 78 of file dir.h, definition at line 220 of file dir.cpp.

220Dir::Dir(const std::string &path) : p(std::make_unique<Private>())
221{
223}

References p, path and setPath.

Dir()

Dir::Dir (const Dir & d)

Declaration at line 79 of file dir.h, definition at line 195 of file dir.cpp.

195Dir::Dir(const Dir &d) : p(std::make_unique<Private>())
196{
197 p->path = d.p->path;
198}

References Dir and p.

Dir()

Dir::Dir (Dir && d)

Declaration at line 81 of file dir.h, definition at line 209 of file dir.cpp.

209Dir::Dir(Dir &&d) : p(std::make_unique<Private>())
210{
211 std::exchange(p->path,d.p->path);
212}

References Dir and p.

Public Destructor

~Dir()

Dir::~Dir ()

Declaration at line 83 of file dir.h, definition at line 225 of file dir.cpp.

226{
227}

Public Operators

operator=()

Dir & Dir::operator= (const Dir & d)

Declaration at line 80 of file dir.h, definition at line 200 of file dir.cpp.

201{
202 if (&d!=this)
203 {
204 p->path = d.p->path;
205 }
206 return *this;
207}

References Dir and p.

operator=()

Dir & Dir::operator= (Dir && d)

Declaration at line 82 of file dir.h, definition at line 214 of file dir.cpp.

215{
216 std::exchange(p->path,d.p->path);
217 return *this;
218}

References Dir and p.

Public Member Functions

absPath()

std::string Dir::absPath ()

Declaration at line 99 of file dir.h, definition at line 363 of file dir.cpp.

363std::string Dir::absPath() const
364{
365 std::error_code ec;
366 std::string result = fs::absolute(p->path,ec).string();
367 correctPath(result);
368 return result;
369}

References correctPath and p.

Referenced by PerlModGenerator::generate, FormulaManager::generateImages, parseInput, RTFGenerator::preProcessFileInplace, writeDotGraphFromFile and writeDotImageMapFromFile.

copy()

bool Dir::copy (const std::string & src, const std::string & dest, bool acceptsAbsPath=true)

Declaration at line 98 of file dir.h, definition at line 330 of file dir.cpp.

330bool Dir::copy(const std::string &srcName,const std::string &dstName,bool acceptsAbsPath) const
331{
332 const auto copyOptions = fs::copy_options::overwrite_existing;
333 std::error_code ec;
334 std::string sn = filePath(srcName,acceptsAbsPath);
335 std::string dn = filePath(dstName,acceptsAbsPath);
336 fs::copy(sn,dn,copyOptions,ec);
337 return !ec;
338}

Reference filePath.

exists()

exists()

bool Dir::exists (const std::string & path, bool acceptsAbsPath=true)

Declaration at line 92 of file dir.h, definition at line 249 of file dir.cpp.

249bool Dir::exists(const std::string &path,bool acceptsAbsPath) const
250{
251 std::string result = filePath(path,acceptsAbsPath);
252 std::error_code ec;
253 bool exist = fs::exists(fs::path(result),ec);
254 return !ec && exist;
255}

References filePath and path.

filePath()

std::string Dir::filePath (const std::string & path, bool acceptsAbsPath=true)

Declaration at line 91 of file dir.h, definition at line 280 of file dir.cpp.

280std::string Dir::filePath(const std::string &path,bool acceptsAbsPath) const
281{
282 std::string result;
283 if (acceptsAbsPath && !isRelativePath(path))
284 {
285 result = path;
286 }
287 else
288 {
289 result = (p->path / path).string();
290 }
291 correctPath(result);
292 return result;
293}

References correctPath, isRelativePath, p and path.

Referenced by copy, exists, mkdir, preProcessFile, RTFGenerator::preProcessFileInplace, remove and rename.

isEmpty()

bool Dir::isEmpty (const std::string subdir)

Declaration at line 89 of file dir.h, definition at line 263 of file dir.cpp.

263bool Dir::isEmpty(const std::string subdir) const
264{
265 fs::path pth = path();
266 pth /= subdir;
267 return fs::is_empty(pth);
268}

Reference path.

Referenced by clearSubDirs.

isRelative()

bool Dir::isRelative ()

Declaration at line 101 of file dir.h, definition at line 270 of file dir.cpp.

270bool Dir::isRelative() const
271{
272 return isRelativePath(p->path.string());
273}

References isRelativePath and p.

iterator()

DirIterator Dir::iterator ()

Declaration at line 87 of file dir.h, definition at line 239 of file dir.cpp.

240{
241 return DirIterator(p->path.string());
242}

Reference p.

Referenced by readDir.

mkdir()

bool Dir::mkdir (const std::string & path, bool acceptsAbsPath=true)

Declaration at line 93 of file dir.h, definition at line 295 of file dir.cpp.

295bool Dir::mkdir(const std::string &path,bool acceptsAbsPath) const
296{
297 std::error_code ec;
298 std::string result = filePath(path,acceptsAbsPath);
299 if (exists(path,acceptsAbsPath))
300 {
301 return true;
302 }
303 else
304 {
305 return fs::create_directory(result,ec);
306 }
307}

References exists, filePath and path.

Referenced by PerlModGenerator::createOutputDir, createOutputDirectory, createSubDirs, generateDEF, generateOutput, CitationManager::generatePage, DocbookGenerator::init, HtmlGenerator::init, LatexGenerator::init, ManGenerator::init, RTFGenerator::init, initWarningFormat and parseInput.

path()

std::string Dir::path ()

Declaration at line 85 of file dir.h, definition at line 234 of file dir.cpp.

234std::string Dir::path() const
235{
236 return p->path.string();
237}

Reference p.

Referenced by cleanDirPath, Dir, exists, filePath, isEmpty, isRelativePath, mkdir, remove, rmdir, setCurrent and setPath.

remove()

bool Dir::remove (const std::string & path, bool acceptsAbsPath=true)

rename()

bool Dir::rename (const std::string & orgName, const std::string & newName, bool acceptsAbsPath=true)

Declaration at line 96 of file dir.h, definition at line 321 of file dir.cpp.

321bool Dir::rename(const std::string &orgName,const std::string &newName,bool acceptsAbsPath) const
322{
323 std::error_code ec;
324 std::string fn1 = filePath(orgName,acceptsAbsPath);
325 std::string fn2 = filePath(newName,acceptsAbsPath);
326 fs::rename(fn1,fn2,ec);
327 return !ec;
328}

Reference filePath.

Referenced by openOutputFile, RTFGenerator::preProcessFileInplace, resetPDFSize and DotFilePatcher::run.

rmdir()

bool Dir::rmdir (const std::string & path, bool acceptsAbsPath=true)

Declaration at line 94 of file dir.h, definition at line 309 of file dir.cpp.

309bool Dir::rmdir(const std::string &path,bool acceptsAbsPath) const
310{
311 return remove(path,acceptsAbsPath);
312}

References path and remove.

Referenced by clearSubDirs and CitationManager::generatePage.

setPath()

void Dir::setPath (const std::string & path)

Declaration at line 84 of file dir.h, definition at line 229 of file dir.cpp.

229void Dir::setPath(const std::string &path)
230{
231 p->path = path;
232}

References p and path.

Referenced by PerlModGenerator::createOutputDir, Dir and parseInput.

Private Member Attributes

p

std::unique_ptr<Private> Dir::p

Definition at line 110 of file dir.h.

110 std::unique_ptr<Private> p;

Referenced by absPath, Dir, Dir, Dir, Dir, exists, filePath, isRelative, iterator, operator=, operator=, path and setPath.

Public Static Functions

cleanDirPath()

std::string Dir::cleanDirPath (const std::string & path)
static

Declaration at line 106 of file dir.h, definition at line 355 of file dir.cpp.

355std::string Dir::cleanDirPath(const std::string &path)
356{
357 std::error_code ec;
358 std::string result = fs::path(path).lexically_normal().string();
359 correctPath(result);
360 return result;
361}

References correctPath and path.

Referenced by findFileDef and resolveSymlink.

currentDirPath()

std::string Dir::currentDirPath ()
static

Declaration at line 104 of file dir.h, definition at line 340 of file dir.cpp.

341{
342 std::error_code ec;
343 std::string result = fs::current_path(ec).string();
344 correctPath(result);
345 return result;
346}

Reference correctPath.

Referenced by Config::checkAndCorrect, Htags::execute, FormulaManager::generateImages, generateOutput, CitationManager::generatePage, parseInput, RTFGenerator::preProcessFileInplace, runHtmlHelpCompiler, runQHelpGenerator, setPerlModDoxyfile, Portable::setShortDir and writeDiaGraphFromFile.

isRelativePath()

bool Dir::isRelativePath (const std::string & path)
static

Declaration at line 103 of file dir.h, definition at line 275 of file dir.cpp.

275bool Dir::isRelativePath(const std::string &path)
276{
277 return fs::path(path).is_relative();
278}

Reference path.

Referenced by filePath and isRelative.

setCurrent()

bool Dir::setCurrent (const std::string & path)
static

Declaration at line 105 of file dir.h, definition at line 348 of file dir.cpp.

348bool Dir::setCurrent(const std::string &path)
349{
350 std::error_code ec;
351 fs::current_path(path,ec);
352 return !ec;
353}

Reference path.

Referenced by Htags::execute, FormulaManager::generateImages, CitationManager::generatePage, RTFGenerator::preProcessFileInplace, runHtmlHelpCompiler, runQHelpGenerator, Portable::setShortDir and writeDiaGraphFromFile.


The documentation for this class was generated from the following files:


Generated via doxygen2docusaurus by Doxygen 1.14.0.