aGrUM  0.14.2
gum::Directory Class Reference

Cross-platform directory utility. More...

#include <agrum/core/utils_dir.h>

Public Member Functions

 Directory ()
 Contructor. More...
 
 Directory (const std::string &directory)
 Contructor. More...
 
 Directory (const Directory &dir)
 Copy contructor. More...
 
 ~Directory ()
 Destructor. More...
 
bool isValid () const
 Returns true if directory has been opened, false otherwise. More...
 
std::vector< std::string > entries () const
 Return directory content. More...
 
Directory parent () const
 Returns directory parent. More...
 
std::string path () const
 Returns directory path. More...
 
std::string absolutePath () const
 Returns directory absolute path. More...
 
Directoryoperator= (const Directory &d)
 Copy operator. More...
 

Static Public Member Functions

static bool isDir (const std::string &path)
 &brief Return true if directory is a valid directory, false otherwise. More...
 

Detailed Description

Cross-platform directory utility.

Definition at line 59 of file utils_dir.h.

Constructor & Destructor Documentation

◆ Directory() [1/3]

gum::Directory::Directory ( )

Contructor.

Definition at line 37 of file utils_dir.cpp.

Referenced by isDir(), and parent().

37 : m_dirPtr(nullptr) { GUM_CONSTRUCTOR(Directory); }
Directory()
Contructor.
Definition: utils_dir.cpp:37
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134
+ Here is the caller graph for this function:

◆ Directory() [2/3]

gum::Directory::Directory ( const std::string &  directory)

Contructor.

Parameters
directoryThe path to the directory.

Definition at line 40 of file utils_dir.cpp.

References m_dirName, and m_dirPtr.

40  : m_dirName(directory) {
41  GUM_CONSTRUCTOR(Directory);
42  m_dirPtr = opendir(m_dirName.c_str());
43  }
std::string m_dirName
The directory path.
Definition: utils_dir.h:131
Directory()
Contructor.
Definition: utils_dir.cpp:37
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134

◆ Directory() [3/3]

gum::Directory::Directory ( const Directory dir)

Copy contructor.

Parameters
dirThe gum::Directory to copy.

Definition at line 46 of file utils_dir.cpp.

References m_dirName, and m_dirPtr.

46  : m_dirName(dir.m_dirName) {
47  GUM_CONSTRUCTOR(Directory);
48  m_dirPtr = opendir(m_dirName.c_str());
49  }
std::string m_dirName
The directory path.
Definition: utils_dir.h:131
Directory()
Contructor.
Definition: utils_dir.cpp:37
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134

◆ ~Directory()

gum::Directory::~Directory ( )

Destructor.

Definition at line 52 of file utils_dir.cpp.

References m_dirPtr.

52  {
53  GUM_DESTRUCTOR(Directory);
54 
55  if (m_dirPtr != nullptr) closedir(m_dirPtr);
56  }
Directory()
Contructor.
Definition: utils_dir.cpp:37
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134

Member Function Documentation

◆ absolutePath()

std::string gum::Directory::absolutePath ( ) const

Returns directory absolute path.

Returns
Returns directory absolute path.

Definition at line 88 of file utils_dir.cpp.

References isValid(), and m_dirName.

Referenced by gum::prm::o3prmr::O3prmrInterpreter::import(), and gum::prm::o3prm::O3prmReader< double >::readFile().

88  {
89  std::string result;
90 
91  if (!isValid()) return result;
92 
93  char oldWD[255];
94 
95  if (getcwd(oldWD, 255) == nullptr) return result;
96 
97  if (chdir(m_dirName.c_str()) != 0) return result;
98 
99  char absPath[255];
100 
101  if (getcwd(absPath, 254) != nullptr) result = std::string(absPath) + '/';
102 
103  if (chdir(oldWD) != 0)
104  std::cerr << "Warning : Could not go to previous working directory. ("
105  << __FILE__ << ":" << __LINE__ << ")" << std::endl;
106 
107  return result;
108  }
std::string m_dirName
The directory path.
Definition: utils_dir.h:131
bool isValid() const
Returns true if directory has been opened, false otherwise.
Definition: utils_dir.cpp:59
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ entries()

std::vector< std::string > gum::Directory::entries ( ) const

Return directory content.

Returns
Return directory content.

Definition at line 62 of file utils_dir.cpp.

References isValid(), and m_dirPtr.

62  {
63  std::vector< std::string > result;
64 
65  if (!isValid()) return result;
66 
67  rewinddir(m_dirPtr);
68 
69  dirent* entry;
70 
71  while ((entry = readdir(m_dirPtr)))
72  result.push_back(std::string(entry->d_name));
73 
74  return result;
75  }
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134
bool isValid() const
Returns true if directory has been opened, false otherwise.
Definition: utils_dir.cpp:59
+ Here is the call graph for this function:

◆ isDir()

bool gum::Directory::isDir ( const std::string &  path)
static

&brief Return true if directory is a valid directory, false otherwise.

Parameters
pathThe path to test. &return Return true if directory is a valid directory, false otherwise.

Definition at line 32 of file utils_dir.cpp.

References Directory().

Referenced by gum::prm::o3prmr::O3prmrInterpreter::addPath().

32  {
33  return Directory(directory).isValid();
34  }
Directory()
Contructor.
Definition: utils_dir.cpp:37
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isValid()

bool gum::Directory::isValid ( ) const

Returns true if directory has been opened, false otherwise.

Returns
Returns true if directory has been opened, false otherwise.

Definition at line 59 of file utils_dir.cpp.

References m_dirPtr.

Referenced by absolutePath(), entries(), and parent().

59 { return m_dirPtr != nullptr; }
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134
+ Here is the caller graph for this function:

◆ operator=()

Directory & gum::Directory::operator= ( const Directory d)

Copy operator.

Parameters
dThe gum::Directory to copy.
Returns
Returns this gum::Directory.

Definition at line 110 of file utils_dir.cpp.

References m_dirName, and m_dirPtr.

110  {
111  if (m_dirPtr != nullptr) closedir(m_dirPtr);
112 
113  m_dirName = d.m_dirName;
114 
115  m_dirPtr = opendir(m_dirName.c_str());
116 
117  return *this;
118  }
std::string m_dirName
The directory path.
Definition: utils_dir.h:131
DIR * m_dirPtr
A pointer towards the Directory stream.
Definition: utils_dir.h:134

◆ parent()

Directory gum::Directory::parent ( ) const

Returns directory parent.

Returns
Returns directory parent.

Definition at line 78 of file utils_dir.cpp.

References Directory(), isValid(), and m_dirName.

78  {
79  if (!isValid()) return Directory();
80 
81  return Directory(m_dirName + "../");
82  }
std::string m_dirName
The directory path.
Definition: utils_dir.h:131
Directory()
Contructor.
Definition: utils_dir.cpp:37
bool isValid() const
Returns true if directory has been opened, false otherwise.
Definition: utils_dir.cpp:59
+ Here is the call graph for this function:

◆ path()

std::string gum::Directory::path ( ) const

Returns directory path.

Returns
Returns directory path.

Definition at line 85 of file utils_dir.cpp.

References m_dirName.

85 { return m_dirName; }
std::string m_dirName
The directory path.
Definition: utils_dir.h:131

Member Data Documentation

◆ m_dirName

std::string gum::Directory::m_dirName
private

The directory path.

Definition at line 131 of file utils_dir.h.

Referenced by absolutePath(), Directory(), operator=(), parent(), and path().

◆ m_dirPtr

DIR* gum::Directory::m_dirPtr
mutableprivate

A pointer towards the Directory stream.

Definition at line 134 of file utils_dir.h.

Referenced by Directory(), entries(), isValid(), operator=(), and ~Directory().


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