LLVM API Documentation

Classes
llvm::sys::path Namespace Reference

Classes

class  const_iterator
 Path iterator. More...

Functions

Lexical Modifiers
void remove_filename (SmallVectorImpl< char > &path)
 Remove the last component from path unless it is the root dir.
void replace_extension (SmallVectorImpl< char > &path, const Twine &extension)
 Replace the file extension of path with extension.
void append (SmallVectorImpl< char > &path, const Twine &a, const Twine &b="", const Twine &c="", const Twine &d="")
 Append to path.
void append (SmallVectorImpl< char > &path, const_iterator begin, const_iterator end)
 Append to path.
Transforms (or some other better name)
void native (const Twine &path, SmallVectorImpl< char > &result)
Lexical Observers
const StringRef root_name (StringRef path)
 Get root name.
const StringRef root_directory (StringRef path)
 Get root directory.
const StringRef root_path (StringRef path)
 Get root path.
const StringRef relative_path (StringRef path)
 Get relative path.
const StringRef parent_path (StringRef path)
 Get parent path.
const StringRef filename (StringRef path)
 Get filename.
const StringRef stem (StringRef path)
 Get stem.
const StringRef extension (StringRef path)
 Get extension.
bool is_separator (char value)
 Check whether the given char is a path separator on the host OS.
void system_temp_directory (bool erasedOnReboot, SmallVectorImpl< char > &result)
 Get the typical temporary directory for the system, e.g., "/var/tmp" or "C:/TEMP".
bool has_root_name (const Twine &path)
 Has root name?
bool has_root_directory (const Twine &path)
 Has root directory?
bool has_root_path (const Twine &path)
 Has root path?
bool has_relative_path (const Twine &path)
 Has relative path?
bool has_parent_path (const Twine &path)
 Has parent path?
bool has_filename (const Twine &path)
 Has filename?
bool has_stem (const Twine &path)
 Has stem?
bool has_extension (const Twine &path)
 Has extension?
bool is_absolute (const Twine &path)
 Is path absolute?
bool is_relative (const Twine &path)
 Is path relative?

Lexical Component Iterator

typedef std::reverse_iterator
< const_iterator
reverse_iterator
const_iterator begin (StringRef path)
 Get begin iterator over path.
const_iterator end (StringRef path)
 Get end iterator over path.
reverse_iterator rbegin (StringRef path)
 Get reverse begin iterator over path.
reverse_iterator rend (StringRef path)
 Get reverse end iterator over path.

Typedef Documentation

typedef std::reverse_iterator<const_iterator> llvm::sys::path::reverse_iterator

Definition at line 79 of file PathV2.h.


Function Documentation

void llvm::sys::path::append ( SmallVectorImpl< char > &  path,
const Twine &  a,
const Twine &  b = "",
const Twine &  c = "",
const Twine &  d = "" 
)
void llvm::sys::path::append ( SmallVectorImpl< char > &  path,
const_iterator  begin,
const_iterator  end 
)

Append to path.

   /foo  + [bar,f] => /foo/bar/f
   /foo/ + [bar,f] => /foo/bar/f
   foo   + [bar,f] => foo/bar/f
Parameters:
pathSet to path + [begin, end).
beginStart of components to append.
endOne past the end of components to append.

Definition at line 397 of file PathV2.cpp.

References append(), begin(), and end().

const_iterator llvm::sys::path::begin ( StringRef  path)
const_iterator llvm::sys::path::end ( StringRef  path)

Get end iterator over path.

Parameters:
pathInput path.
Returns:
Iterator initialized to the end of path.

Definition at line 165 of file PathV2.cpp.

References llvm::StringRef::size().

Referenced by llvm::LiveRangeUpdater::add(), llvm::JIT::addPointerToBasicBlock(), llvm::DWARFDebugAranges::allRangesAreContiguous(), append(), llvm::BallLarusDag::calculatePathNumbers(), canBeFeederToNewValueJump(), canCompareBeNewValueJump(), llvm::LiveIntervals::checkRegMaskInterference(), llvm::opt::ArgList::ClaimAllArgs(), llvm::DWARFDebugArangeSet::dump(), llvm::DWARFDebugLine::LineTable::dump(), llvm::encode_leb128(), llvm::opt::ArgList::eraseArg(), filename(), llvm::DWARFDebugArangeSet::findAddress(), llvm::DWARFDebugAranges::findAddress(), llvm::UnOpInit::Fold(), llvm::DWARFAbbreviationDeclarationSet::getAbbreviationDeclaration(), llvm::DWARFDebugAbbrev::getAbbreviationDeclarationSet(), llvm::RecordKeeper::getAllDerivedDefinitions(), llvm::opt::ArgList::getLastArg(), llvm::object::ArchiveMemberHeader::getName(), getNextEdge(), llvm::JIT::getPointerToBasicBlock(), llvm::R600RegisterInfo::getReservedRegs(), llvm::MipsRegisterInfo::getReservedRegs(), getUs(), interpretDecimal(), llvm::SplitAnalysis::isOriginalEndpoint(), llvm::makeArrayRef(), llvm::GraphTraits< RegionInfo * >::nodes_end(), llvm::LoopBase< BlockT, LoopT >::print(), rbegin(), readExponent(), llvm::LoopInfoBase< BasicBlock, Loop >::removeLoop(), PBQP::Graph::removeNode(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::ProfileInfoT< FType, BType >::repair(), root_directory(), root_name(), root_path(), llvm::NVPTXAllocaHoisting::runOnFunction(), llvm::scc_end(), llvm::SchedDFSResult::scheduleTree(), llvm::EngineBuilder::selectTarget(), skipLeadingZeroesAndAnyDot(), llvm::Regex::sub(), totalExponent(), llvm::LoopBase< BlockT, LoopT >::verifyLoop(), llvm::LoopBase< BlockT, LoopT >::verifyLoopNest(), and llvm::BallLarusDag::~BallLarusDag().

const StringRef llvm::sys::path::extension ( StringRef  path)

Get extension.

If filename contains a dot but not solely one or two dots, result is the substring of filename starting at (and including) the last dot, and ending at the end of path. Otherwise "".

   /foo/bar.txt => .txt
   /foo/bar     => <empty>
   /foo/.txt    => .txt
Parameters:
pathInput path.
Returns:
The extension of path.

Definition at line 473 of file PathV2.cpp.

References filename(), llvm::StringRef::find_last_of(), llvm::StringRef::npos, llvm::StringRef::size(), and llvm::StringRef::substr().

Referenced by has_extension().

const StringRef llvm::sys::path::filename ( StringRef  path)

Get filename.

   /foo.txt    => foo.txt
   .          => .
   ..         => ..
   /          => /
Parameters:
pathInput path.
Returns:
The filename part of path. This is defined as the last component of path.

Definition at line 456 of file PathV2.cpp.

References end().

Referenced by extension(), llvm::MCContext::GetDwarfFile(), has_filename(), llvm::LineReader::LineReader(), llvm::cl::ParseCommandLineOptions(), and stem().

bool llvm::sys::path::has_extension ( const Twine &  path)

Has extension?

extension != ""

Parameters:
pathInput path.
Returns:
True if the path has a extension, false otherwise.

Definition at line 596 of file PathV2.cpp.

References llvm::StringRef::empty(), extension(), and llvm::Twine::toStringRef().

bool llvm::sys::path::has_filename ( const Twine &  path)

Has filename?

filename != ""

Parameters:
pathInput path.
Returns:
True if the path has a filename, false otherwise.

Definition at line 575 of file PathV2.cpp.

References llvm::StringRef::empty(), filename(), and llvm::Twine::toStringRef().

bool llvm::sys::path::has_parent_path ( const Twine &  path)

Has parent path?

parent_path != ""

Parameters:
pathInput path.
Returns:
True if the path has a parent path, false otherwise.

Definition at line 582 of file PathV2.cpp.

References llvm::StringRef::empty(), parent_path(), and llvm::Twine::toStringRef().

bool llvm::sys::path::has_relative_path ( const Twine &  path)

Has relative path?

relative_path != ""

Parameters:
pathInput path.
Returns:
True if the path has a relative path, false otherwise.

Definition at line 568 of file PathV2.cpp.

References llvm::StringRef::empty(), relative_path(), and llvm::Twine::toStringRef().

bool llvm::sys::path::has_root_directory ( const Twine &  path)

Has root directory?

root_directory != ""

Parameters:
pathInput path.
Returns:
True if the path has a root directory, false otherwise.

Definition at line 554 of file PathV2.cpp.

References llvm::StringRef::empty(), root_directory(), and llvm::Twine::toStringRef().

Referenced by is_absolute(), and llvm::sys::fs::make_absolute().

bool llvm::sys::path::has_root_name ( const Twine &  path)

Has root name?

root_name != ""

Parameters:
pathInput path.
Returns:
True if the path has a root name, false otherwise.

Definition at line 547 of file PathV2.cpp.

References llvm::StringRef::empty(), root_name(), and llvm::Twine::toStringRef().

Referenced by append(), is_absolute(), and llvm::sys::fs::make_absolute().

bool llvm::sys::path::has_root_path ( const Twine &  path)

Has root path?

root_path != ""

Parameters:
pathInput path.
Returns:
True if the path has a root path, false otherwise.

Definition at line 561 of file PathV2.cpp.

References llvm::StringRef::empty(), root_path(), and llvm::Twine::toStringRef().

bool llvm::sys::path::has_stem ( const Twine &  path)

Has stem?

stem != ""

Parameters:
pathInput path.
Returns:
True if the path has a stem, false otherwise.

Definition at line 589 of file PathV2.cpp.

References llvm::StringRef::empty(), stem(), and llvm::Twine::toStringRef().

bool llvm::sys::path::is_absolute ( const Twine &  path)

Is path absolute?

Parameters:
pathInput path.
Returns:
True if the path is absolute, false if it is not.

Definition at line 603 of file PathV2.cpp.

References has_root_directory(), has_root_name(), and llvm::Twine::toStringRef().

Referenced by llvm::NVPTXAsmPrinter::emitLineNumberAsDotLoc(), llvm::DWARFDebugLine::LineTable::getFileNameByIndex(), and is_relative().

bool llvm::sys::path::is_relative ( const Twine &  path)

Is path relative?

Parameters:
pathInput path.
Returns:
True if the path is relative, false if it is not.

Definition at line 617 of file PathV2.cpp.

References is_absolute().

Referenced by getFileNameForCompileUnit().

bool llvm::sys::path::is_separator ( char  value)

Check whether the given char is a path separator on the host OS.

Parameters:
valuea character
Returns:
true if value is a path separator character on the host OS

Definition at line 486 of file PathV2.cpp.

Referenced by append(), llvm::sys::path::const_iterator::operator++(), llvm::sys::path::const_iterator::operator--(), root_directory(), root_name(), and root_path().

void llvm::sys::path::native ( const Twine &  path,
SmallVectorImpl< char > &  result 
)

Convert path to the native form. This is used to give paths to users and operating system calls in the platform's normal way. For example, on Windows all '/' are converted to '\'.

Parameters:
pathA path that is transformed to native format.
resultHolds the result of the transformation.

Definition at line 435 of file PathV2.cpp.

References llvm::StringRef::begin(), llvm::SmallVectorImpl< T >::clear(), llvm::StringRef::end(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::StringRef::size(), llvm::Twine::toStringRef(), and llvm::Twine::toVector().

const StringRef llvm::sys::path::parent_path ( StringRef  path)

Get parent path.

   /          => <empty>
   /foo       => /
   foo/../bar => foo/..
Parameters:
pathInput path.
Returns:
The parent path of path if one exists, otherwise "".

Definition at line 403 of file PathV2.cpp.

References llvm::StringRef::npos, and llvm::StringRef::substr().

Referenced by llvm::sys::fs::create_directories(), llvm::MCContext::GetDwarfFile(), and has_parent_path().

reverse_iterator llvm::sys::path::rbegin ( StringRef  path) [inline]

Get reverse begin iterator over path.

Parameters:
pathInput path.
Returns:
Iterator initialized with the first reverse component of path.

Definition at line 94 of file PathV2.h.

References end().

Referenced by llvm::opt::ArgList::getLastArgNoClaim().

const StringRef llvm::sys::path::relative_path ( StringRef  path)

Get relative path.

   C:\hello\world => hello\world
   foo/bar        => foo/bar
   /foo/bar       => foo/bar
Parameters:
pathInput path.
Returns:
The path starting after root_path if one exists, otherwise "".

Definition at line 351 of file PathV2.cpp.

References root_path(), llvm::StringRef::size(), and llvm::StringRef::substr().

Referenced by has_relative_path(), and llvm::sys::fs::make_absolute().

void llvm::sys::path::remove_filename ( SmallVectorImpl< char > &  path)

Remove the last component from path unless it is the root dir.

   directory/filename.cpp => directory/
   directory/             => directory
   /                      => /
Parameters:
pathA path that is modified to not have a file component.

Definition at line 411 of file PathV2.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::StringRef::npos, llvm::SmallVectorImpl< T >::set_size(), and llvm::SmallVectorTemplateCommon< T, typename >::size().

Referenced by llvm::sys::fs::directory_entry::replace_filename().

reverse_iterator llvm::sys::path::rend ( StringRef  path) [inline]

Get reverse end iterator over path.

Parameters:
pathInput path.
Returns:
Iterator initialized to the reverse end of path.

Definition at line 101 of file PathV2.h.

References begin().

Referenced by llvm::MultiClass::dump(), and llvm::opt::ArgList::getLastArgNoClaim().

void llvm::sys::path::replace_extension ( SmallVectorImpl< char > &  path,
const Twine &  extension 
)

Replace the file extension of path with extension.

   ./filename.cpp => ./filename.extension
   ./filename     => ./filename.extension
   ./             => ./.extension
Parameters:
pathA path that has its extension replaced with extension.
extensionThe extension to be added. It may be empty. It may also optionally start with a '.', if it does not, one will be prepended.

Definition at line 417 of file PathV2.cpp.

References llvm::SmallVectorImpl< T >::append(), llvm::StringRef::begin(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::StringRef::end(), llvm::StringRef::find_last_of(), llvm::StringRef::npos, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorImpl< T >::set_size(), llvm::StringRef::size(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::Twine::toStringRef().

const StringRef llvm::sys::path::root_directory ( StringRef  path)

Get root directory.

   /goo/hello => /
   c:/hello   => /
   d/file.txt => <empty>
Parameters:
pathInput path.
Returns:
The root directory of path if it has one, otherwise "".

Definition at line 322 of file PathV2.cpp.

References begin(), end(), and is_separator().

Referenced by has_root_directory(), and llvm::sys::fs::make_absolute().

const StringRef llvm::sys::path::root_name ( StringRef  path)

Get root name.

   //net/hello => //net
   c:/hello    => c: (on Windows, on other platforms nothing)
   /hello      => <empty>
Parameters:
pathInput path.
Returns:
The root name of path if it has one, otherwise "".

Definition at line 300 of file PathV2.cpp.

References begin(), end(), and is_separator().

Referenced by has_root_name(), and llvm::sys::fs::make_absolute().

const StringRef llvm::sys::path::root_path ( StringRef  path)

Get root path.

Equivalent to root_name + root_directory.

Parameters:
pathInput path.
Returns:
The root path of path if it has one, otherwise "".

Definition at line 268 of file PathV2.cpp.

References begin(), end(), is_separator(), and llvm::StringRef::substr().

Referenced by has_root_path(), and relative_path().

const StringRef llvm::sys::path::stem ( StringRef  path)

Get stem.

If filename contains a dot but not solely one or two dots, result is the substring of filename ending at (but not including) the last dot. Otherwise it is filename.

   /foo/bar.txt => bar
   /foo/bar     => bar
   /foo/.txt    => <empty>
   /foo/.       => .
   /foo/..      => ..
Parameters:
pathInput path.
Returns:
The stem of path.

Definition at line 460 of file PathV2.cpp.

References filename(), llvm::StringRef::find_last_of(), llvm::StringRef::npos, llvm::StringRef::size(), and llvm::StringRef::substr().

Referenced by has_stem().

void llvm::sys::path::system_temp_directory ( bool  erasedOnReboot,
SmallVectorImpl< char > &  result 
)

Get the typical temporary directory for the system, e.g., "/var/tmp" or "C:/TEMP".

Parameters:
erasedOnRebootWhether to favor a path that is erased on reboot rather than one that potentially persists longer. This parameter will be ignored if the user or system has set the typical environment variable (e.g., TEMP on Windows, TMPDIR on *nix) to specify a temporary directory.
resultHolds the resulting path name.

Definition at line 496 of file PathV2.cpp.

References llvm::SmallVectorImpl< T >::append(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::LibFunc::getenv, llvm::SmallVectorTemplateBase< T, isPodLike >::pop_back(), llvm::SmallVectorImpl< T >::resize(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::LibFunc::strlen.