42#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
43#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
45#include "gtest/internal/gtest-string.h"
47GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
64class GTEST_API_ FilePath {
66 FilePath() : pathname_(
"") {}
67 FilePath(
const FilePath& rhs) : pathname_(rhs.pathname_) {}
69 explicit FilePath(
const std::string& pathname) : pathname_(pathname) {
73 FilePath& operator=(
const FilePath& rhs) {
78 void Set(
const FilePath& rhs) { pathname_ = rhs.pathname_; }
80 const std::string& string()
const {
return pathname_; }
81 const char* c_str()
const {
return pathname_.c_str(); }
84 static FilePath GetCurrentDir();
90 static FilePath MakeFileName(
const FilePath& directory,
91 const FilePath& base_name,
int number,
92 const char* extension);
97 static FilePath ConcatPaths(
const FilePath& directory,
98 const FilePath& relative_path);
108 static FilePath GenerateUniqueFileName(
const FilePath& directory,
109 const FilePath& base_name,
110 const char* extension);
113 bool IsEmpty()
const {
return pathname_.empty(); }
118 FilePath RemoveTrailingPathSeparator()
const;
126 FilePath RemoveDirectoryName()
const;
134 FilePath RemoveFileName()
const;
140 FilePath RemoveExtension(
const char* extension)
const;
146 bool CreateDirectoriesRecursively()
const;
152 bool CreateFolder()
const;
156 bool FileOrDirectoryExists()
const;
160 bool DirectoryExists()
const;
165 bool IsDirectory()
const;
169 bool IsRootDirectory()
const;
172 bool IsAbsolutePath()
const;
200 const char* FindLastPathSeparator()
const;
210 size_t CalculateRootLength()
const;
212 std::string pathname_;
218GTEST_DISABLE_MSC_WARNINGS_POP_()