/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include "cmsys/Status.hxx" /** \class cmFileTimes * \brief Loads and stores file times. */ class cmFileTimes { public: cmFileTimes(); //! Calls Load() cmFileTimes(std::string const& fileName); ~cmFileTimes(); //! @return true, if file times were loaded successfully bool IsValid() const { return (this->times != nullptr); } //! Try to load the file times from @a fileName and @return IsValid() cmsys::Status Load(std::string const& fileName); //! Stores the file times at @a fileName (if IsValid()) cmsys::Status Store(std::string const& fileName) const; //! Copies the file times of @a fromFile to @a toFile static cmsys::Status Copy(std::string const& fromFile, std::string const& toFile); private: #ifdef _WIN32 class WindowsHandle; #endif class Times; std::unique_ptr times; };