Doxygen
Dir类 参考final

Class representing a directory in the file system 更多...

#include <dir.h>

struct  Private
 

Public 成员函数

 Dir ()
 
 Dir (const std::string &path)
 
 Dir (const Dir &d)
 
Diroperator= (const Dir &d)
 
 ~Dir ()
 
void setPath (const std::string &path)
 
std::string path () const
 
DirIterator iterator () const
 
bool isEmpty (const std::string subdir) const
 
bool exists () const
 
std::string filePath (const std::string &path, bool acceptsAbsPath=true) const
 
bool exists (const std::string &path, bool acceptsAbsPath=true) const
 
bool mkdir (const std::string &path, bool acceptsAbsPath=true) const
 
bool rmdir (const std::string &path, bool acceptsAbsPath=true) const
 
bool remove (const std::string &path, bool acceptsAbsPath=true) const
 
bool rename (const std::string &orgName, const std::string &newName, bool acceptsAbsPath=true) const
 
bool copy (const std::string &src, const std::string &dest, bool acceptsAbsPath=true) const
 
std::string absPath () const
 
bool isRelative () const
 

静态 Public 成员函数

static bool isRelativePath (const std::string &path)
 
static std::string currentDirPath ()
 
static bool setCurrent (const std::string &path)
 
static std::string cleanDirPath (const std::string &path)
 

Private 属性

std::unique_ptr< Privatep
 

详细描述

Class representing a directory in the file system

在文件 dir.h68 行定义.

构造及析构函数说明

◆ Dir() [1/3]

Dir::Dir ( )

在文件 dir.cpp142 行定义.

142  : p(std::make_unique<Private>())
143 {
144  std::error_code ec;
145  p->path = fs::current_path(ec);
146 }

引用了 p.

◆ Dir() [2/3]

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

在文件 dir.cpp162 行定义.

162  : p(std::make_unique<Private>())
163 {
164  setPath(path);
165 }

引用了 path() , 以及 setPath().

◆ Dir() [3/3]

Dir::Dir ( const Dir d)

在文件 dir.cpp148 行定义.

148  : p(std::make_unique<Private>())
149 {
150  p->path = d.p->path;
151 }

引用了 p.

◆ ~Dir()

Dir::~Dir ( )

在文件 dir.cpp167 行定义.

168 {
169 }

成员函数说明

◆ absPath()

std::string Dir::absPath ( ) const

在文件 dir.cpp305 行定义.

306 {
307  std::error_code ec;
308  std::string result = fs::absolute(p->path,ec).string();
309  correctPath(result);
310  return result;
311 }

引用了 correctPath() , 以及 p.

被这些函数引用 Htags::execute(), PerlModGenerator::generate(), FormulaManager::generateImages(), parseInput(), Htags::path2URL(), RTFGenerator::preProcessFileInplace(), writeDotGraphFromFile(), writeDotImageMapFromFile() , 以及 DotGraph::writeGraph().

◆ cleanDirPath()

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

在文件 dir.cpp297 行定义.

298 {
299  std::error_code ec;
300  std::string result = fs::path(path).lexically_normal().string();
301  correctPath(result);
302  return result;
303 }

引用了 correctPath() , 以及 path().

被这些函数引用 findFileDef() , 以及 resolveSymlink().

◆ copy()

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

在文件 dir.cpp272 行定义.

273 {
274  const auto copyOptions = fs::copy_options::overwrite_existing;
275  std::error_code ec;
276  std::string sn = filePath(srcName,acceptsAbsPath);
277  std::string dn = filePath(dstName,acceptsAbsPath);
278  fs::copy(sn,dn,copyOptions,ec);
279  return !ec;
280 }

引用了 filePath().

◆ currentDirPath()

std::string Dir::currentDirPath ( )
static

在文件 dir.cpp282 行定义.

283 {
284  std::error_code ec;
285  std::string result = fs::current_path(ec).string();
286  correctPath(result);
287  return result;
288 }

引用了 correctPath().

被这些函数引用 Htags::execute(), FormulaManager::generateImages(), generateOutput(), CitationManager::generatePage(), parseInput(), RTFGenerator::preProcessFileInplace(), setPerlModDoxyfile(), Portable::setShortDir() , 以及 writeDiaGraphFromFile().

◆ exists() [1/2]

◆ exists() [2/2]

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

在文件 dir.cpp191 行定义.

192 {
193  std::string result = filePath(path,acceptsAbsPath);
194  std::error_code ec;
195  bool exist = fs::exists(fs::path(result),ec);
196  return !ec && exist;
197 }

引用了 filePath() , 以及 path().

◆ filePath()

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

在文件 dir.cpp222 行定义.

223 {
224  std::string result;
225  if (acceptsAbsPath && !isRelativePath(path))
226  {
227  result = path;
228  }
229  else
230  {
231  result = (p->path / path).string();
232  }
233  correctPath(result);
234  return result;
235 }

引用了 correctPath(), isRelativePath(), p , 以及 path().

被这些函数引用 copy(), exists(), mkdir(), remove() , 以及 rename().

◆ isEmpty()

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

在文件 dir.cpp205 行定义.

206 {
207  fs::path pth = path();
208  pth /= subdir;
209  return fs::is_empty(pth);
210 }

引用了 path().

被这些函数引用 clearSubDirs().

◆ isRelative()

bool Dir::isRelative ( ) const

在文件 dir.cpp212 行定义.

213 {
214  return isRelativePath(p->path.string());
215 }

引用了 isRelativePath() , 以及 p.

◆ isRelativePath()

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

在文件 dir.cpp217 行定义.

218 {
219  return fs::path(path).is_relative();
220 }

引用了 path().

被这些函数引用 filePath() , 以及 isRelative().

◆ iterator()

DirIterator Dir::iterator ( ) const

在文件 dir.cpp181 行定义.

182 {
183  return DirIterator(p->path.string());
184 }

引用了 p.

被这些函数引用 readDir().

◆ mkdir()

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

在文件 dir.cpp237 行定义.

238 {
239  std::error_code ec;
240  std::string result = filePath(path,acceptsAbsPath);
241  if (exists(path,acceptsAbsPath))
242  {
243  return true;
244  }
245  else
246  {
247  return fs::create_directory(result,ec);
248  }
249 }

引用了 exists(), filePath() , 以及 path().

被这些函数引用 PerlModGenerator::createOutputDir(), createOutputDirectory(), createSubDirs(), generateDEF(), generateOutput(), CitationManager::generatePage(), generateTemplateFiles(), RTFGenerator::init(), ManGenerator::init(), HtmlGenerator::init(), LatexGenerator::init(), DocbookGenerator::init(), TemplateNodeCreator< TemplateNodeBlock >::mkpath() , 以及 parseInput().

◆ operator=()

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

在文件 dir.cpp153 行定义.

154 {
155  if (&d!=this)
156  {
157  p->path = d.p->path;
158  }
159  return *this;
160 }

引用了 p.

◆ path()

std::string Dir::path ( ) const

在文件 dir.cpp176 行定义.

177 {
178  return p->path.string();
179 }

引用了 p.

被这些函数引用 cleanDirPath(), Dir(), exists(), filePath(), isEmpty(), isRelativePath(), mkdir(), DotGraph::prepareDotFile(), remove(), rmdir(), setCurrent() , 以及 setPath().

◆ remove()

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

◆ rename()

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

在文件 dir.cpp263 行定义.

264 {
265  std::error_code ec;
266  std::string fn1 = filePath(orgName,acceptsAbsPath);
267  std::string fn2 = filePath(newName,acceptsAbsPath);
268  fs::rename(fn1,fn2,ec);
269  return !ec;
270 }

引用了 filePath().

被这些函数引用 openOutputFile(), RTFGenerator::preProcessFileInplace(), resetPDFSize() , 以及 DotFilePatcher::run().

◆ rmdir()

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

在文件 dir.cpp251 行定义.

252 {
253  return remove(path,acceptsAbsPath);
254 }

引用了 path() , 以及 remove().

被这些函数引用 clearSubDirs() , 以及 CitationManager::generatePage().

◆ setCurrent()

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

在文件 dir.cpp290 行定义.

291 {
292  std::error_code ec;
293  fs::current_path(path,ec);
294  return !ec;
295 }

引用了 path().

被这些函数引用 Htags::execute(), FormulaManager::generateImages(), generateOutput(), CitationManager::generatePage(), RTFGenerator::preProcessFileInplace(), Portable::setShortDir() , 以及 writeDiaGraphFromFile().

◆ setPath()

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

在文件 dir.cpp171 行定义.

172 {
173  p->path = path;
174 }

引用了 p , 以及 path().

被这些函数引用 PerlModGenerator::createOutputDir(), Dir(), Htags::execute(), TemplateNodeCreator< TemplateNodeBlock >::mkpath() , 以及 parseInput().

类成员变量说明

◆ p

std::unique_ptr<Private> Dir::p
private

在文件 dir.h101 行定义.

被这些函数引用 absPath(), Dir(), exists(), filePath(), isRelative(), iterator(), operator=(), path() , 以及 setPath().


该类的文档由以下文件生成:
Dir::filePath
std::string filePath(const std::string &path, bool acceptsAbsPath=true) const
Definition: dir.cpp:222
Dir::remove
bool remove(const std::string &path, bool acceptsAbsPath=true) const
Definition: dir.cpp:256
Dir::isRelativePath
static bool isRelativePath(const std::string &path)
Definition: dir.cpp:217
Dir::path
std::string path() const
Definition: dir.cpp:176
DirIterator
Definition: dir.h:39
correctPath
static void correctPath(std::string &s)
Definition: dir.cpp:186
FileInfo
Minimal replacement for QFileInfo.
Definition: fileinfo.h:22
Dir::setPath
void setPath(const std::string &path)
Definition: dir.cpp:171
Dir::exists
bool exists() const
Definition: dir.cpp:199
Dir::p
std::unique_ptr< Private > p
Definition: dir.h:101