#include "lldb/Utility/FileSpec.h"
#include "lldb/Utility/RegularExpression.h"
#include "lldb/Utility/Stream.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Triple.h"
#include <algorithm>
#include <optional>
#include <system_error>
#include <vector>
#include <cassert>
#include <climits>
#include <cstdio>
#include <cstring>
usingnamespacelldb;
usingnamespacelldb_private;
namespace {
static constexpr FileSpec::Style GetNativeStyle() { … }
bool PathStyleIsPosix(FileSpec::Style style) { … }
const char *GetPathSeparators(FileSpec::Style style) { … }
char GetPreferredPathSeparator(FileSpec::Style style) { … }
void Denormalize(llvm::SmallVectorImpl<char> &path, FileSpec::Style style) { … }
}
FileSpec::FileSpec() : … { … }
FileSpec::FileSpec(llvm::StringRef path, Style style) : … { … }
FileSpec::FileSpec(llvm::StringRef path, const llvm::Triple &triple)
: … { … }
namespace {
inline char safeCharAtIndex(const llvm::StringRef &path, size_t i) { … }
bool needsNormalization(const llvm::StringRef &path) { … }
}
void FileSpec::SetFile(llvm::StringRef pathname) { … }
void FileSpec::SetFile(llvm::StringRef pathname, Style style) { … }
void FileSpec::SetFile(llvm::StringRef path, const llvm::Triple &triple) { … }
operator bool()
bool FileSpec::operator!() const { … }
bool FileSpec::DirectoryEquals(const FileSpec &rhs) const { … }
bool FileSpec::FileEquals(const FileSpec &rhs) const { … }
bool FileSpec::operator==(const FileSpec &rhs) const { … }
bool FileSpec::operator!=(const FileSpec &rhs) const { … }
bool FileSpec::operator<(const FileSpec &rhs) const { … }
Stream &lldb_private::operator<<(Stream &s, const FileSpec &f) { … }
void FileSpec::Clear() { … }
int FileSpec::Compare(const FileSpec &a, const FileSpec &b, bool full) { … }
bool FileSpec::Equal(const FileSpec &a, const FileSpec &b, bool full) { … }
bool FileSpec::Match(const FileSpec &pattern, const FileSpec &file) { … }
std::optional<FileSpec::Style>
FileSpec::GuessPathStyle(llvm::StringRef absolute_path) { … }
void FileSpec::Dump(llvm::raw_ostream &s) const { … }
FileSpec::Style FileSpec::GetPathStyle() const { … }
void FileSpec::SetDirectory(ConstString directory) { … }
void FileSpec::SetDirectory(llvm::StringRef directory) { … }
void FileSpec::SetFilename(ConstString filename) { … }
void FileSpec::SetFilename(llvm::StringRef filename) { … }
void FileSpec::ClearFilename() { … }
void FileSpec::ClearDirectory() { … }
size_t FileSpec::GetPath(char *path, size_t path_max_len,
bool denormalize) const { … }
std::string FileSpec::GetPath(bool denormalize) const { … }
ConstString FileSpec::GetPathAsConstString(bool denormalize) const { … }
void FileSpec::GetPath(llvm::SmallVectorImpl<char> &path,
bool denormalize) const { … }
llvm::StringRef FileSpec::GetFileNameExtension() const { … }
ConstString FileSpec::GetFileNameStrippingExtension() const { … }
size_t FileSpec::MemorySize() const { … }
FileSpec
FileSpec::CopyByAppendingPathComponent(llvm::StringRef component) const { … }
FileSpec FileSpec::CopyByRemovingLastPathComponent() const { … }
void FileSpec::PrependPathComponent(llvm::StringRef component) { … }
void FileSpec::PrependPathComponent(const FileSpec &new_path) { … }
void FileSpec::AppendPathComponent(llvm::StringRef component) { … }
void FileSpec::AppendPathComponent(const FileSpec &new_path) { … }
bool FileSpec::RemoveLastPathComponent() { … }
std::vector<llvm::StringRef> FileSpec::GetComponents() const { … }
bool FileSpec::IsSourceImplementationFile() const { … }
bool FileSpec::IsRelative() const { … }
bool FileSpec::IsAbsolute() const { … }
void FileSpec::MakeAbsolute(const FileSpec &dir) { … }
void llvm::format_provider<FileSpec>::format(const FileSpec &F,
raw_ostream &Stream,
StringRef Style) { … }