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 bool operator == (
const iuFilePath& rhs)
const
72 return IsStringCaseEqual(m_path, rhs.m_path);
74 bool operator == (
const char* rhs)
const
76 return IsStringCaseEqual(m_path, rhs);
83 bool IsDirectory()
const;
88 bool IsRootDirectory()
const;
93 bool IsAbsolutePath()
const;
98 iuFilePath RemoveTrailingPathSeparator()
const;
103 ::std::string GetExtension()
const;
108 iuFilePath RemoveExtension(
const char* extension=NULL)
const;
113 iuFilePath RemoveDirectoryName()
const;
118 iuFilePath RemoveFileName()
const;
123 bool CreateFolder()
const;
128 bool CreateDirectoriesRecursively()
const;
133 bool FileOrDirectoryExists()
const;
138 bool DirectoryExists()
const;
144 static iuFilePath GetCurrentDir();
149 static iuFilePath GetRelativeCurrentDir();
154 static iuFilePath GetExecFilePath();
159 static iuFilePath ConcatPaths(
const iuFilePath& directory,
const iuFilePath& relative_path);
168 ::std::string m_path;
171 inline iu_ostream& operator << (iu_ostream& os,
const iuFilePath& path)
173 return os << path.string();
181 typedef detail::iuFilePath FilePath;
187 # include "../impl/iutest_filepath.ipp"
iutest root namespace
Definition: iutest_charcode.hpp:33