LLVM  4.0.0
Classes | Functions | Variables
llvm::sys::path Namespace Reference

Classes

class  const_iterator
 Path iterator. More...
 
class  reverse_iterator
 Reverse path iterator. More...
 

Functions

static SmallString< 256 > remove_dots (StringRef path, bool remove_dot_dot)
 
std::error_code widenPath (const Twine &Path8, SmallVectorImpl< wchar_t > &Path16)
 
Lexical Component Iterator
const_iterator begin (StringRef path)
 Get begin iterator over path. More...
 
const_iterator end (StringRef path)
 Get end iterator over path. More...
 
reverse_iterator rbegin (StringRef path)
 Get reverse begin iterator over path. More...
 
reverse_iterator rend (StringRef path)
 Get reverse end iterator over path. More...
 
Lexical Modifiers
void remove_filename (SmallVectorImpl< char > &path)
 Remove the last component from path unless it is the root dir. More...
 
void replace_extension (SmallVectorImpl< char > &path, const Twine &extension)
 Replace the file extension of path with extension. More...
 
void replace_path_prefix (SmallVectorImpl< char > &Path, const StringRef &OldPrefix, const StringRef &NewPrefix)
 Replace matching path prefix with another path. More...
 
void append (SmallVectorImpl< char > &path, const Twine &a, const Twine &b="", const Twine &c="", const Twine &d="")
 Append to path. More...
 
void append (SmallVectorImpl< char > &path, const_iterator begin, const_iterator end)
 Append to path. More...
 
Transforms (or some other better name)
void native (const Twine &path, SmallVectorImpl< char > &result)
 Convert path to the native form. More...
 
void native (SmallVectorImpl< char > &path)
 Convert path to the native form in place. More...
 
std::string convert_to_slash (StringRef path)
 Replaces backslashes with slashes if Windows. More...
 
Lexical Observers
StringRef root_name (StringRef path)
 Get root name. More...
 
StringRef root_directory (StringRef path)
 Get root directory. More...
 
StringRef root_path (StringRef path)
 Get root path. More...
 
StringRef relative_path (StringRef path)
 Get relative path. More...
 
StringRef parent_path (StringRef path)
 Get parent path. More...
 
StringRef filename (StringRef path)
 Get filename. More...
 
StringRef stem (StringRef path)
 Get stem. More...
 
StringRef extension (StringRef path)
 Get extension. More...
 
bool is_separator (char value)
 Check whether the given char is a path separator on the host OS. More...
 
StringRef get_separator ()
 Return the preferred separator for this platform. More...
 
void system_temp_directory (bool erasedOnReboot, SmallVectorImpl< char > &result)
 Get the typical temporary directory for the system, e.g., "/var/tmp" or "C:/TEMP". More...
 
bool home_directory (SmallVectorImpl< char > &result)
 Get the user's home directory. More...
 
bool user_cache_directory (SmallVectorImpl< char > &Result, const Twine &Path1, const Twine &Path2="", const Twine &Path3="")
 Get the user's cache directory. More...
 
bool has_root_name (const Twine &path)
 Has root name? More...
 
bool has_root_directory (const Twine &path)
 Has root directory? More...
 
bool has_root_path (const Twine &path)
 Has root path? More...
 
bool has_relative_path (const Twine &path)
 Has relative path? More...
 
bool has_parent_path (const Twine &path)
 Has parent path? More...
 
bool has_filename (const Twine &path)
 Has filename? More...
 
bool has_stem (const Twine &path)
 Has stem? More...
 
bool has_extension (const Twine &path)
 Has extension? More...
 
bool is_absolute (const Twine &path)
 Is path absolute? More...
 
bool is_relative (const Twine &path)
 Is path relative? More...
 
StringRef remove_leading_dotslash (StringRef path)
 Remove redundant leading "./" pieces and consecutive separators. More...
 
bool remove_dots (SmallVectorImpl< char > &path, bool remove_dot_dot=false)
 In-place remove any '. More...
 

Variables

static const char preferred_separator_string [] = { preferred_separator, '\0' }
 

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 487 of file Path.cpp.

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

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

Get begin iterator over path.

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

Definition at line 233 of file Path.cpp.

References i.

Referenced by llvm::all_of(), llvm::any_of(), append(), llvm::MemoryDepChecker::areDepsSafe(), llvm::detail::enumerator_impl< R >::begin(), llvm::DICompositeType::buildODRType(), llvm::CC_X86_64_VectorCallGetGPRs(), llvm::CC_X86_VectorCallGetSSEs(), llvm::LoopBodyTraits::child_begin(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::clear(), computeRelativePath(), llvm::concat_iterator< ValueT, IterTs >::concat_iterator(), llvm::ArrayRef< uint64_t >::copy(), llvm::count(), llvm::count_if(), llvm::drop_begin(), llvm::ArrayRef< uint64_t >::equals(), llvm::CodeExtractor::extractCodeRegion(), llvm::DwarfAccelTable::FinalizeTable(), llvm::find(), llvm::find_if(), llvm::find_if_not(), llvm::DWARFDebugAranges::findAddress(), foldConstantInsEltIntoShuffle(), get64BitArgumentGPRs(), get64BitArgumentXMMs(), getAllSGPR128(), getAllSGPRs(), llvm::MCObjectStreamer::getCurrentFragment(), llvm::SubtargetFeatures::getFeatureBits(), getFirstReloc(), llvm::getIntrinsicWithChain(), llvm::getIntrinsicWithoutChain(), llvm::AVRMCExpr::getKindByName(), llvm::AVRMCExpr::getName(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::getPrevNode(), llvm::R600RegisterInfo::getReservedRegs(), llvm::MipsRegisterInfo::getReservedRegs(), llvm::PPCRegisterInfo::getReservedRegs(), llvm::object::MachOObjectFile::getSymbolName(), llvm::SmallVectorTemplateBase< T, isPodLike >::grow(), llvm::TargetLoweringBase::initActions(), llvm::PriorityWorklist< llvm::LazyCallGraph::SCC *, SmallVector< llvm::LazyCallGraph::SCC *, N >, SmallDenseMap< llvm::LazyCallGraph::SCC *, ptrdiff_t > >::insert(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::insertAfter(), llvm::is_contained(), isF128SoftLibCall(), isImageOrSamplerVal(), isIntrinsicInline(), llvm::HexagonMCInstrInfo::isOrderedDuplexPair(), LLVMGetFirstTarget(), LookupNEONLdSt(), llvm::TargetRegistry::lookupTarget(), lowerV8I16GeneralSingleInputVectorShuffle(), llvm::MachineTraceMetrics::MachineTraceMetrics(), llvm::make_filter_range(), llvm::makeArrayRef(), llvm::simple_ilist< T, Options >::merge(), llvm::GraphTraits< MachineRegionInfo * >::nodes_begin(), llvm::GraphTraits< RegionInfo * >::nodes_begin(), llvm::none_of(), llvm::TargetLibraryInfoImpl::operator=(), llvm::SmallVectorImpl< T >::operator=(), llvm::MCSectionMachO::ParseSectionSpecifier(), llvm::partition(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::pop_front(), llvm::DominanceFrontierBase< BlockT >::print(), llvm::DwarfAccelTable::print(), llvm::LoopBase< N, M >::print(), llvm::opt::OptTable::PrintHelp(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::push_front(), llvm::readExponent(), remove_dots(), llvm::remove_if(), llvm::DominanceFrontierBase< BlockT >::removeBlock(), llvm::LoopInfoBase< BasicBlock, Loop >::removeLoop(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::RegionBase< RegionTr >::removeSubRegion(), llvm::ArrayRef< uint64_t >::rend(), llvm::MutableArrayRef< llvm::coverage::CounterMappingRegion >::rend(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::reverse(), root_directory(), root_name(), root_path(), llvm::scc_begin(), llvm::object::COFFObjectFile::section_rel_begin(), llvm::skipLeadingZeroesAndAnyDot(), llvm::simple_ilist< T, Options >::sort(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::HexagonBlockRanges::RangeList::subtract(), llvm::SmallVectorImpl< T >::swap(), llvm::ArrayRef< uint64_t >::take_until(), llvm::MutableArrayRef< llvm::coverage::CounterMappingRegion >::take_until(), llvm::ArrayRef< uint64_t >::take_while(), llvm::MutableArrayRef< llvm::coverage::CounterMappingRegion >::take_while(), llvm::TargetLibraryInfoImpl::TargetLibraryInfoImpl(), llvm::TargetLoweringBase::TargetLoweringBase(), llvm::transform(), llvm::HexagonBlockRanges::RangeList::unionize(), llvm::TargetLoweringBase::ValueTypeActionImpl::ValueTypeActionImpl(), llvm::LoopInfoBase< N, M >::verify(), llvm::verifyIntrinsicTables(), llvm::LoopBase< N, M >::verifyLoop(), and llvm::LoopBase< N, M >::verifyLoopNest().

std::string llvm::sys::path::convert_to_slash ( StringRef  path)

Replaces backslashes with slashes if Windows.

Parameters
pathprocessed path
Returns
The result of replacing backslashes with forward slashes if Windows. On Unix, this function is a no-op because backslashes are valid path chracters.

Definition at line 574 of file Path.cpp.

References llvm::StringRef::str().

Referenced by llvm::TarWriter::append().

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 241 of file Path.cpp.

References i, and llvm::StringRef::size().

Referenced by llvm::DominanceFrontierBase< BlockT >::addToFrontier(), llvm::all_of(), llvm::any_of(), append(), llvm::MemoryDepChecker::areDepsSafe(), llvm::DICompositeType::buildODRType(), canBeFeederToNewValueJump(), canCompareBeNewValueJump(), llvm::CC_X86_64_VectorCallGetGPRs(), llvm::CC_X86_VectorCallGetSSEs(), llvm::LiveIntervals::checkRegMaskInterference(), checkThreadCommand(), llvm::LoopBodyTraits::child_end(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::clear(), llvm::DominanceFrontierBase< BlockT >::compare(), computeRelativePath(), llvm::concat_iterator< ValueT, IterTs >::concat_iterator(), llvm::HexagonBlockRanges::IndexRange::contains(), llvm::ArrayRef< uint64_t >::copy(), llvm::count(), llvm::count_if(), llvm::drop_begin(), llvm::ArrayRef< uint64_t >::drop_until(), llvm::MutableArrayRef< llvm::coverage::CounterMappingRegion >::drop_until(), llvm::ArrayRef< uint64_t >::drop_while(), llvm::MutableArrayRef< llvm::coverage::CounterMappingRegion >::drop_while(), llvm::detail::enumerator_impl< R >::end(), llvm::ArrayRef< uint64_t >::equals(), llvm::UnwindOpcodeAssembler::Finalize(), llvm::find(), llvm::find_if(), llvm::find_if_not(), llvm::DWARFDebugAranges::findAddress(), format_to_buffer(), get64BitArgumentGPRs(), get64BitArgumentXMMs(), getAllocationDataForFunction(), llvm::SubtargetFeatures::getFeatureBits(), llvm::getIntrinsicWithChain(), llvm::getIntrinsicWithoutChain(), llvm::AVRMCExpr::getKindByName(), llvm::AVRMCExpr::getName(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::getNextNode(), llvm::object::ArchiveMemberHeader::getRawName(), llvm::R600RegisterInfo::getReservedRegs(), llvm::MipsRegisterInfo::getReservedRegs(), llvm::object::MachOObjectFile::getSymbolName(), getUs(), llvm::SmallVectorTemplateBase< T, isPodLike >::grow(), llvm::hashing::detail::hash_combine_range_impl(), llvm::MachineInstr::implicit_operands(), llvm::TargetLoweringBase::initActions(), llvm::PriorityWorklist< llvm::LazyCallGraph::SCC *, SmallVector< llvm::LazyCallGraph::SCC *, N >, SmallDenseMap< llvm::LazyCallGraph::SCC *, ptrdiff_t > >::insert(), llvm::interpretDecimal(), llvm::is_contained(), isF128SoftLibCall(), isImageOrSamplerVal(), isIntrinsicInline(), llvm::HexagonMCInstrInfo::isOrderedDuplexPair(), llvm::SplitAnalysis::isOriginalEndpoint(), LLVMGetFirstTarget(), LookupNEONLdSt(), llvm::TargetRegistry::lookupTarget(), llvm::MachineTraceMetrics::MachineTraceMetrics(), llvm::make_filter_range(), llvm::makeArrayRef(), llvm::HexagonBlockRanges::IndexRange::merge(), llvm::simple_ilist< T, Options >::merge(), llvm::GraphTraits< MachineRegionInfo * >::nodes_end(), llvm::GraphTraits< RegionInfo * >::nodes_end(), llvm::none_of(), llvm::TargetLibraryInfoImpl::operator=(), llvm::SmallVectorImpl< T >::operator=(), llvm::MCSectionMachO::ParseSectionSpecifier(), llvm::partition(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::pop_back(), llvm::DominanceFrontierBase< BlockT >::print(), llvm::LoopBase< N, M >::print(), llvm::iplist_impl< simple_ilist< MachineBasicBlock, Options...>, ilist_traits< MachineBasicBlock > >::push_back(), llvm::ArrayRef< uint64_t >::rbegin(), llvm::MutableArrayRef< llvm::coverage::CounterMappingRegion >::rbegin(), llvm::readExponent(), remove_dots(), llvm::remove_if(), llvm::DominanceFrontierBase< BlockT >::removeBlock(), llvm::DominanceFrontierBase< BlockT >::removeFromFrontier(), llvm::LoopInfoBase< BasicBlock, Loop >::removeLoop(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::reverse(), root_directory(), root_name(), root_path(), llvm::scc_end(), llvm::SIScheduleBlockScheduler::SIScheduleBlockScheduler(), llvm::skipLeadingZeroesAndAnyDot(), llvm::simple_ilist< T, Options >::sort(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::Regex::sub(), llvm::HexagonBlockRanges::RangeList::subtract(), llvm::SmallVectorImpl< T >::swap(), llvm::TargetLibraryInfoImpl::TargetLibraryInfoImpl(), llvm::TargetLoweringBase::TargetLoweringBase(), llvm::totalExponent(), llvm::transform(), llvm::HexagonBlockRanges::RangeList::unionize(), llvm::utohexstr(), llvm::utostr(), llvm::TargetLoweringBase::ValueTypeActionImpl::ValueTypeActionImpl(), llvm::LoopInfoBase< N, M >::verify(), llvm::verifyIntrinsicTables(), llvm::LoopBase< N, M >::verifyLoop(), llvm::LoopBase< N, M >::verifyLoopNest(), and write_unsigned_impl().

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 601 of file Path.cpp.

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

Referenced by has_extension().

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 584 of file Path.cpp.

References rbegin().

Referenced by llvm::FileOutputBuffer::create(), llvm::Module::createRNG(), extension(), llvm::MCDwarfLineTableHeader::getFile(), llvm::getPGOFuncName(), has_filename(), llvm::LineReader::LineReader(), mangleCoveragePath(), stem(), llvm::writeArchive(), and writeStringTable().

StringRef llvm::sys::path::get_separator ( )

Return the preferred separator for this platform.

Returns
StringRef of the preferred separator, null-terminated.

Definition at line 626 of file Path.cpp.

References preferred_separator_string.

Referenced by llvm::SourceMgr::AddIncludeFile(), and EmitGenDwarfInfo().

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 679 of file Path.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 658 of file Path.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 665 of file Path.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 651 of file Path.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 637 of file Path.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 630 of file Path.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 644 of file Path.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 672 of file Path.cpp.

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

bool llvm::sys::path::home_directory ( SmallVectorImpl< char > &  result)

Get the user's home directory.

Parameters
resultHolds the resulting path name.
Returns
True if a home directory is set, false otherwise.

Referenced by llvm::LineEditor::getDefaultHistoryPath().

bool llvm::sys::path::is_absolute ( const Twine path)
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 700 of file Path.cpp.

References is_absolute().

Referenced by ExpandResponseFile(), and llvm::DWARFDebugLine::LineTable::getFileNameByIndex().

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 614 of file Path.cpp.

Referenced by append(), llvm::sys::path::const_iterator::operator++(), llvm::sys::path::reverse_iterator::operator++(), remove_leading_dotslash(), 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 548 of file Path.cpp.

References assert(), llvm::SmallVectorImpl< T >::clear(), llvm::StringRef::data(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::Twine::getSingleStringRef(), llvm::Twine::isSingleStringRef(), llvm::support::native, and llvm::Twine::toVector().

Referenced by llvm::CachePruning::prune().

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

Convert path to the native form in place.

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.

Definition at line 558 of file Path.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::begin(), and llvm::SmallVectorTemplateCommon< T, typename >::end().

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 493 of file Path.cpp.

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

Referenced by computeRelativePath(), llvm::sys::fs::create_directories(), ExpandResponseFile(), llvm::MCDwarfLineTableHeader::getFile(), llvm::object::Archive::Child::getFullName(), llvm::lto::getThinLTOOutputFile(), has_parent_path(), printSymbolizedStackTrace(), and llvm::sys::fs::directory_entry::replace_filename().

reverse_iterator llvm::sys::path::rbegin ( StringRef  path)

Get reverse begin iterator over path.

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

Definition at line 309 of file Path.cpp.

References I, and llvm::StringRef::size().

Referenced by filename().

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 443 of file Path.cpp.

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

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

bool llvm::sys::path::remove_dots ( SmallVectorImpl< char > &  path,
bool  remove_dot_dot = false 
)

In-place remove any '.

/' and optionally '../' components from a path.

Parameters
pathprocessed path
remove_dot_dotspecify if '../' (except for leading "../") should be removed
Returns
True if path was changed

Definition at line 738 of file Path.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::data(), remove_dots(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::SmallVectorImpl< T >::swap().

static SmallString<256> llvm::sys::path::remove_dots ( StringRef  path,
bool  remove_dot_dot 
)
static
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
filename.cpp => <empty>
/ => /
Parameters
pathA path that is modified to not have a file component.

Definition at line 501 of file Path.cpp.

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

StringRef llvm::sys::path::remove_leading_dotslash ( StringRef  path)

Remove redundant leading "./" pieces and consecutive separators.

Parameters
pathInput path.
Returns
The cleaned-up path.

Definition at line 702 of file Path.cpp.

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

reverse_iterator llvm::sys::path::rend ( StringRef  path)

Get reverse end iterator over path.

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

Definition at line 316 of file Path.cpp.

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

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 507 of file Path.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().

Referenced by getOutputPath().

void llvm::sys::path::replace_path_prefix ( SmallVectorImpl< char > &  Path,
const StringRef OldPrefix,
const StringRef NewPrefix 
)

Replace matching path prefix with another path.

/foo, /old, /new => /foo
/old/foo, /old, /new => /new/foo
/foo, <empty>, /new => /new/foo
/old/foo, /old, <empty> => /foo
Parameters
PathIf Path starts with OldPrefix modify to instead start with NewPrefix.
OldPrefixThe path prefix to strip from Path.
NewPrefixThe path prefix to replace NewPrefix with.

Definition at line 525 of file Path.cpp.

References append(), llvm::StringRef::begin(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::StringRef::empty(), llvm::StringRef::end(), llvm::StringRef::size(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::StringRef::substr(), and llvm::SmallVectorImpl< T >::swap().

Referenced by llvm::lto::getThinLTOOutputFile().

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 414 of file Path.cpp.

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

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

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 392 of file Path.cpp.

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

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

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 360 of file Path.cpp.

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

Referenced by has_root_path(), relative_path(), and remove_dots().

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 588 of file Path.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.

Referenced by createUniqueEntity().

bool llvm::sys::path::user_cache_directory ( SmallVectorImpl< char > &  Result,
const Twine Path1,
const Twine Path2 = "",
const Twine Path3 = "" 
)

Get the user's cache directory.

Expect the resulting path to be a directory shared with other applications/services used by the user. Params Path1 to Path3 can be used to append additional directory names to the resulting path. Recommended pattern is <user_cache_directory>/<vendor>/<application>.

Parameters
ResultHolds the resulting path.
Path1Additional path to be appended to the user's cache directory path. "" can be used to append nothing.
Path2Second additional path to be appended.
Path3Third additional path to be appended.
Returns
True if a cache directory path is set, false otherwise.

Definition at line 1184 of file Path.cpp.

References append().

std::error_code llvm::sys::path::widenPath ( const Twine &  Path8,
SmallVectorImpl< wchar_t > &  Path16 
)

Variable Documentation

const char llvm::sys::path::preferred_separator_string[] = { preferred_separator, '\0' }
static

Definition at line 624 of file Path.cpp.

Referenced by get_separator().