zypp::filesystem::Pathname Class Reference

Pathname. More...

#include <Pathname.h>

List of all members.

Public Member Functions

 Pathname ()
 Default ctor: an empty path.
 Pathname (const std::string &name_tv)
 Ctor from string.
 Pathname (const char *name_tv)
 Ctor from char*.
Pathnameoperator= (const Pathname &path_tv)
 Assign.
Pathnameoperator/= (const Pathname &path_tv)
 Concatenate and assing.
Pathnameoperator+= (const Pathname &path_tv)
 Concatenate and assing.
const std::string & asString () const
 String representation.
Url asUrl () const
 Url representation using dir schema.
const char * c_str () const
 String representation.
bool empty () const
 Test for an empty path.
bool absolute () const
 Test for an absolute path.
bool relative () const
 Test for a relative path.
Pathname dirname () const
 Return all but the last component od this path.
std::string basename () const
 Return the last component of this path.
std::string extension () const
 Return all of the characters in name after and including the last dot in the last element of name.
Pathname absolutename () const
 Return this path, adding a leading '/' if relative.
Pathname relativename () const
 Return this path, removing a leading '/' if absolute.
Pathname cat (const Pathname &r) const
 Concatenation of pathnames.
Pathname extend (const std::string &r) const
 Append string r to the last component of the path.

Static Public Member Functions

static std::string showRoot (const Pathname &root_r, const Pathname &path_r)
 String representation as "(root)/path".
static std::string showRootIf (const Pathname &root_r, const Pathname &path_r)
 String representation as "(root)/path", unless root is "/" or empty.
static Pathname dirname (const Pathname &name_tv)
static std::string basename (const Pathname &name_tv)
static std::string extension (const Pathname &name_tv)
static Pathname absolutename (const Pathname &name_tv)
static Pathname relativename (const Pathname &name_tv)
static Pathname assertprefix (const Pathname &root_r, const Pathname &path_r)
 Return path_r prefixed with root_r, unless it is already prefixed.
static Pathname cat (const Pathname &l, const Pathname &r)
static Pathname extend (const Pathname &l, const std::string &r)

Private Member Functions

void _assign (const std::string &name_tv)

Private Attributes

std::string::size_type prfx_i
std::string name_t

Related Functions

(Note that these are not member functions.)

bool operator== (const Pathname &l, const Pathname &r)
bool operator!= (const Pathname &l, const Pathname &r)
Pathname operator/ (const Pathname &l, const Pathname &r)
Pathname operator+ (const Pathname &l, const Pathname &r)
bool operator< (const Pathname &l, const Pathname &r)
std::ostream & operator<< (std::ostream &str, const Pathname &obj)


Detailed Description

Pathname.

Note:
For convenience Pathname is available as zypp::Pathname too.
Always stores normalized paths (no inner '.' or '..' components and no consecutive '/'es). Concatenation automatically adds the path separator '/'.

Todo:
Add support for handling extensions incl. stripping extensions from basename (basename("/path/foo.baa", ".baa") ==> "foo")

Review. Maybe use COW pimpl, check storage.

remove prfx_i

Definition at line 45 of file Pathname.h.


Constructor & Destructor Documentation

zypp::filesystem::Pathname::Pathname (  )  [inline]

Default ctor: an empty path.

Definition at line 49 of file Pathname.h.

Referenced by dirname().

zypp::filesystem::Pathname::Pathname ( const std::string &  name_tv  )  [inline]

Ctor from string.

Definition at line 54 of file Pathname.h.

References _assign().

zypp::filesystem::Pathname::Pathname ( const char *  name_tv  )  [inline]

Ctor from char*.

Definition at line 58 of file Pathname.h.

References _assign().


Member Function Documentation

Pathname& zypp::filesystem::Pathname::operator= ( const Pathname path_tv  )  [inline]

Assign.

Definition at line 62 of file Pathname.h.

References name_t, and prfx_i.

Pathname& zypp::filesystem::Pathname::operator/= ( const Pathname path_tv  )  [inline]

Concatenate and assing.

See also:
cat

Definition at line 70 of file Pathname.h.

References cat().

Pathname& zypp::filesystem::Pathname::operator+= ( const Pathname path_tv  )  [inline]

Concatenate and assing.

See also:
cat
Deprecated:
: use /=

Definition at line 76 of file Pathname.h.

References cat().

const std::string& zypp::filesystem::Pathname::asString (  )  const [inline]

std::string zypp::filesystem::Pathname::showRoot ( const Pathname root_r,
const Pathname path_r 
) [static]

String representation as "(root)/path".

Definition at line 197 of file Pathname.cc.

Referenced by showRootIf().

std::string zypp::filesystem::Pathname::showRootIf ( const Pathname root_r,
const Pathname path_r 
) [static]

String representation as "(root)/path", unless root is "/" or empty.

Definition at line 202 of file Pathname.cc.

References asString(), empty(), and showRoot().

Url zypp::filesystem::Pathname::asUrl (  )  const

Url representation using dir schema.

Definition at line 190 of file Pathname.cc.

References asString(), and zypp::Url::setPathName().

const char* zypp::filesystem::Pathname::c_str (  )  const [inline]

bool zypp::filesystem::Pathname::empty (  )  const [inline]

bool zypp::filesystem::Pathname::absolute (  )  const [inline]

Test for an absolute path.

Definition at line 99 of file Pathname.h.

References empty(), name_t, and prfx_i.

Referenced by relativename().

bool zypp::filesystem::Pathname::relative (  )  const [inline]

Test for a relative path.

Definition at line 101 of file Pathname.h.

References empty(), name_t, and prfx_i.

Referenced by absolutename(), and zypp::filesystem::assert_dir().

Pathname zypp::filesystem::Pathname::dirname (  )  const [inline]

Pathname zypp::filesystem::Pathname::dirname ( const Pathname name_tv  )  [static]

Definition at line 147 of file Pathname.cc.

References empty(), name_t, and Pathname().

std::string zypp::filesystem::Pathname::basename (  )  const [inline]

Return the last component of this path.

Definition at line 108 of file Pathname.h.

References basename().

Referenced by basename(), zypp::filesystem::copy_dir(), extension(), zypp::filesystem::TmpDir::makeSibling(), and zypp::filesystem::TmpFile::makeSibling().

string zypp::filesystem::Pathname::basename ( const Pathname name_tv  )  [static]

Definition at line 171 of file Pathname.cc.

References asString(), and empty().

std::string zypp::filesystem::Pathname::extension (  )  const [inline]

Return all of the characters in name after and including the last dot in the last element of name.

If there is no dot in the last element of name then returns the empty string.

Definition at line 115 of file Pathname.h.

References extension().

Referenced by extension().

string zypp::filesystem::Pathname::extension ( const Pathname name_tv  )  [static]

Definition at line 214 of file Pathname.cc.

References basename(), and empty().

Pathname zypp::filesystem::Pathname::absolutename (  )  const [inline]

Return this path, adding a leading '/' if relative.

Definition at line 119 of file Pathname.h.

References absolutename().

Referenced by absolutename().

static Pathname zypp::filesystem::Pathname::absolutename ( const Pathname name_tv  )  [inline, static]

Definition at line 120 of file Pathname.h.

References cat(), and relative().

Pathname zypp::filesystem::Pathname::relativename (  )  const [inline]

Return this path, removing a leading '/' if absolute.

Definition at line 124 of file Pathname.h.

References relativename().

Referenced by relativename().

static Pathname zypp::filesystem::Pathname::relativename ( const Pathname name_tv  )  [inline, static]

Definition at line 125 of file Pathname.h.

References absolute(), and cat().

Pathname zypp::filesystem::Pathname::assertprefix ( const Pathname root_r,
const Pathname path_r 
) [static]

Return path_r prefixed with root_r, unless it is already prefixed.

Definition at line 243 of file Pathname.cc.

References asString(), empty(), and zypp::str::hasPrefix().

Pathname zypp::filesystem::Pathname::cat ( const Pathname r  )  const [inline]

Concatenation of pathnames.

   "foo"  / "baa"  ==> "foo/baa"
   "foo/" / "baa"  ==> "foo/baa"
   "foo"  / "/baa" ==> "foo/baa"
   "foo/" / "/baa" ==> "foo/baa"

Definition at line 139 of file Pathname.h.

References cat().

Referenced by absolutename(), cat(), operator+(), operator+=(), operator/(), operator/=(), and relativename().

Pathname zypp::filesystem::Pathname::cat ( const Pathname l,
const Pathname r 
) [static]

Definition at line 257 of file Pathname.cc.

References empty(), and name_t.

Pathname zypp::filesystem::Pathname::extend ( const std::string &  r  )  const [inline]

Append string r to the last component of the path.

   "foo/baa".extend( ".h" ) ==> "foo/baa.h"

Definition at line 147 of file Pathname.h.

References extend().

Referenced by extend().

static Pathname zypp::filesystem::Pathname::extend ( const Pathname l,
const std::string &  r 
) [static]

void zypp::filesystem::Pathname::_assign ( const std::string &  name_tv  )  [private]

Referenced by Pathname().


Friends And Related Function Documentation

bool operator== ( const Pathname l,
const Pathname r 
) [related]

Definition at line 159 of file Pathname.h.

References asString().

bool operator!= ( const Pathname l,
const Pathname r 
) [related]

Definition at line 163 of file Pathname.h.

References asString().

Pathname operator/ ( const Pathname l,
const Pathname r 
) [related]

Concatenate two Pathname.

Definition at line 167 of file Pathname.h.

References cat().

Pathname operator+ ( const Pathname l,
const Pathname r 
) [related]

Concatenate two Pathname.

Deprecated:
: use /

Definition at line 173 of file Pathname.h.

References cat().

bool operator< ( const Pathname l,
const Pathname r 
) [related]

Definition at line 177 of file Pathname.h.

References asString().

std::ostream & operator<< ( std::ostream &  str,
const Pathname obj 
) [related]

Stream output

Definition at line 183 of file Pathname.h.

References asString().


Member Data Documentation

std::string::size_type zypp::filesystem::Pathname::prfx_i [private]

Definition at line 151 of file Pathname.h.

Referenced by absolute(), operator=(), and relative().

std::string zypp::filesystem::Pathname::name_t [private]

Definition at line 152 of file Pathname.h.

Referenced by absolute(), asString(), c_str(), cat(), dirname(), empty(), operator=(), and relative().


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

doxygen