Loading...
Searching...
No Matches
path Class Reference

the class path is here to manipulate paths in the Unix notation: using'/' More...

`#include <path.hpp>`

## Public Member Functions

| path (const std::string &s, bool x_undisclosed=false)
| constructor from a string
| path (const path &ref)
| copy constructor
| path (path &&ref) noexcept=default
| move constructor
path & | operator= (const path &ref)
| assignment operator
path & | operator= (path &&ref) noexcept=default
| move operator
| ~path ()=default
| destructor
bool | operator== (const path &ref) const
| comparison operator
bool | operator!= (const path &ref) const
std::string | basename () const
| get the basename of a path
void | reset_read () const
| reset the read_subdir operation
bool | read_subdir (std::string &r) const
| sequentially read the elements that compose the path
bool | is_relative () const
| whether the path is relative or absolute (= start with a /)
bool | is_absolute () const
| whether the path is absolute or relative
bool | is_undisclosed () const
| whether the path has an undisclosed part at the beginning
bool | pop (std::string &arg)
| remove and gives in argument the basename of the path
bool | pop_front (std::string &arg)
| remove and gives in argument the outer most member of the path
path | operator+ (const path &arg) const
| add a path to the current path. The added path must be a relative path
path | append (const std::string &sub) const
| add a single sub-directory to the path
path & | operator+= (const path &arg)
| add a path to the current path. The added path must be a relative path
path & | operator+= (const std::string &sub)
| add a single sub-directory to the current path object
bool | is_subdir_of (const path &p, bool case_sensit) const
| test whether the current object is a subdir of the method's argument
std::string | display () const
| convert back a path to a string
std::string | display_without_root () const
| display the path as a string but without the first member of the path
U_I | degre () const
| returns the number of member in the path
void | explode_undisclosed () const
| if the current object is an undisclosed path, tries to convert it back to normal path

## Private Member Functions

void | reduce ()
void | init (const std::string &chem, bool x_undisclosed)

## Private Attributes

std::list< std::string >::const_iterator | reading
std::list< std::string > | dirs
bool | relative
bool | undisclosed

## Detailed Description

the class path is here to manipulate paths in the Unix notation: using'/'

several operations are provided as well as convertion functions, but for the API user, it can be used as if it was a std::string object. However if the argument is not a valid path, an exception may be thrown by libdar

Note
  the most frequent method you will use from API point of view is path::display() which provides a std::string representing the path

Definition at line 50 of file path.hpp.

## Constructor & Destructor Documentation

## path()

libdar::path::path | ( | const std::string & | s,
|  | bool | x_undisclosed = false )

constructor from a string

This realizes the string to path convertion function

Parameters

  [in] | s | the string to convert to path
  [in] | x_undisclosed | do not split the given string, consider it as a single directory name, even if some '/' are found in it

Note
  empty string is not a valid string (exception thrown)
  having undisclosed set to true, does not allow one to pop() right away, first push must be made. While having undisclosed set to false let the user pop() right away if the given string is composed of several path members ("member1/member2/member3" for example of path allow one to pop() three time, while in the same example setting undisclosed to true, allow one to pop() just once).

## Member Function Documentation

## append()

path libdar::path::append | ( | const std::string & | sub | ) | const

inline

add a single sub-directory to the path

Definition at line 135 of file path.hpp.

## basename()

std::string libdar::path::basename | ( |  | ) | const

get the basename of a path

this function returns the basename that's it the right most member of a path

## degre()

U_I libdar::path::degre | ( |  | ) | const

inline

returns the number of member in the path

Note
  a absolute path counts one more that its relative brother

Definition at line 166 of file path.hpp.

## display()

std::string libdar::path::display | ( |  | ) | const

convert back a path to a string

the returned string is the representation of the current object in Unix notation

## display_without_root()

std::string libdar::path::display_without_root | ( |  | ) | const

display the path as a string but without the first member of the path

Note
  if path is equal to root (the first member if relative of / if absolute) an empty string is returned

## is_absolute()

bool libdar::path::is_absolute | ( |  | ) | const

inline

whether the path is absolute or relative

Definition at line 104 of file path.hpp.

## is_relative()

bool libdar::path::is_relative | ( |  | ) | const

inline

whether the path is relative or absolute (= start with a /)

Definition at line 101 of file path.hpp.

## is_subdir_of()

bool libdar::path::is_subdir_of | ( | const path & | p,
|  | bool | case_sensit ) const

test whether the current object is a subdir of the method's argument

Parameters

  [in] | p | the path to test with
  [in] | case_sensit | whether the test must be in case sensitive manner or not

## is_undisclosed()

bool libdar::path::is_undisclosed | ( |  | ) | const

inline

whether the path has an undisclosed part at the beginning

Definition at line 107 of file path.hpp.

## operator!=()

bool libdar::path::operator!= | ( | const path & | ref | ) | const

inline

Definition at line 81 of file path.hpp.

## operator+()

path libdar::path::operator+ | ( | const path & | arg | ) | const

inline

add a path to the current path. The added path must be a relative path

Parameters

  [in] | arg | the relative path to add

Returns
  the resulting path, (the current object is not modified, where from the "const" qualifier)

Note
  arg can be a string also, which is converted to a path on the fly

Definition at line 132 of file path.hpp.

## operator+=()

path & libdar::path::operator+= | ( | const path & | arg | ) |

add a path to the current path. The added path must be a relative path

Parameters

  [in] | arg | the relative path to add

Returns
  the value of the current (modified) object: "*this".

## pop()

bool libdar::path::pop | ( | std::string & | arg | ) |

remove and gives in argument the basename of the path

Parameters

  [out] | arg | the basename of the path

Returns
  false if the operation was not possible (no sub-directory to pop)

Note
  if the path is absolute the remaing value is '/' when no pop is anymore possible while it is the first component of the original path if the path was relative. a empty path is not a valide value

## pop_front()

bool libdar::path::pop_front | ( | std::string & | arg | ) |

remove and gives in argument the outer most member of the path

Parameters

  [out] | arg | the value of the outer element of the path

Returns
  true if the pop_front operation was possible and arg could be set.

Note
  removes and returns the first directory of the path, when just the basename is present returns false, if the path is absolute, the first call change it to relative (except if equal to "/" then return false)

## read_subdir()

bool libdar::path::read_subdir | ( | std::string & | r | ) | const

sequentially read the elements that compose the path

Parameters

  [out] | r | the next element of the path

Returns
  true if a next element could be read

Note
  the reading starts at the root and ends with the basename of the path

## reset_read()

void libdar::path::reset_read | ( |  | ) | const

inline

reset the read_subdir operation

reset for read_subdir. next call to read_subdir is the most global

Definition at line 91 of file path.hpp.

## Member Data Documentation

## dirs

std::list<std::string> libdar::path::dirs

private

Definition at line 173 of file path.hpp.

## reading

std::list<std::string>::const_iterator libdar::path::reading

mutableprivate

Definition at line 172 of file path.hpp.

## relative

bool libdar::path::relative

private

Definition at line 174 of file path.hpp.

## undisclosed

bool libdar::path::undisclosed

private

Definition at line 175 of file path.hpp.

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

- path.hpp