15 #ifndef INCG_IRIS_IUTEST_FILEPATH_HPP_D69E7545_BF8A_4EDC_9493_9105C69F9378_
16 #define INCG_IRIS_IUTEST_FILEPATH_HPP_D69E7545_BF8A_4EDC_9493_9105C69F9378_
18 #if !defined(IUTEST_USE_GTEST)
38 iuFilePath() : m_path(
"") {}
39 iuFilePath(
const iuFilePath& rhs) : m_path(rhs.m_path) {}
41 explicit iuFilePath(
const char* path) : m_path(path)
45 explicit iuFilePath(const ::std::string& path) : m_path(path)
49 #if IUTEST_USE_CXX_FILESYSTEM
50 explicit iuFilePath(const ::std::filesystem::path& path) : m_path(path.string())
57 ::std::string ToString()
const {
return m_path; }
58 const ::std::string& string()
const {
return m_path; }
59 bool IsEmpty()
const {
return m_path.empty(); }
60 size_t length()
const {
return m_path.length(); }
62 #if IUTEST_USE_CXX_FILESYSTEM
63 ::std::filesystem::path path()
const { return ::std::filesystem::path(m_path); }
64 ::std::filesystem::file_status status()
const { return ::std::filesystem::status(path()); }
68 iuFilePath & operator = (
const iuFilePath& rhs) { m_path = rhs.m_path;
return *
this; }
70 iuFilePath& operator == (
const iuFilePath& rhs)
75 bool operator == (
const iuFilePath& rhs)
const
77 return IsStringCaseEqual(m_path, rhs.m_path);
79 bool operator == (
const char* rhs)
const
81 return IsStringCaseEqual(m_path, rhs);
88 bool IsDirectory()
const;
93 bool IsRootDirectory()
const;
98 bool IsAbsolutePath()
const;
103 iuFilePath RemoveTrailingPathSeparator()
const;
108 ::std::string GetExtension()
const;
113 iuFilePath RemoveExtension(
const char* extension=NULL)
const;
118 iuFilePath RemoveDirectoryName()
const;
123 iuFilePath RemoveFileName()
const;
128 bool CreateFolder()
const;
133 bool CreateDirectoriesRecursively()
const;
138 bool FileOrDirectoryExists()
const;
143 bool DirectoryExists()
const;
149 static iuFilePath GetCurrentDir();
154 static iuFilePath GetRelativeCurrentDir();
159 static iuFilePath GetExecFilePath();
164 static iuFilePath ConcatPaths(
const iuFilePath& directory,
const iuFilePath& relative_path);
173 ::std::string m_path;
176 inline iu_ostream& operator << (iu_ostream& os,
const iuFilePath& path)
178 return os << path.string();
186 typedef detail::iuFilePath FilePath;
192 # include "../impl/iutest_filepath.ipp"
197 #endif // INCG_IRIS_IUTEST_FILEPATH_HPP_D69E7545_BF8A_4EDC_9493_9105C69F9378_