resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmTimestamp.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4
5 #include "cmConfigure.h" // IWYU pragma: keep
6
7 #include <cstdint>
8 #include <ctime>
9 #include <string>
10
11 /** \class cmTimestamp
12  * \brief Utility class to generate string representation of a timestamp
13  *
14  */
15 class cmTimestamp
16 {
17 public:
18   std::string CurrentTime(const std::string& formatString, bool utcFlag) const;
19
20   std::string FileModificationTime(const char* path,
21                                    const std::string& formatString,
22                                    bool utcFlag) const;
23
24   std::string CreateTimestampFromTimeT(time_t timeT, std::string formatString,
25                                        bool utcFlag) const;
26
27   std::string CreateTimestampFromTimeT(time_t timeT, uint32_t microseconds,
28                                        std::string formatString,
29                                        bool utcFlag) const;
30
31 private:
32   time_t CreateUtcTimeTFromTm(struct tm& timeStruct) const;
33
34   std::string AddTimestampComponent(char flag, struct tm& timeStruct,
35                                     time_t timeT,
36                                     uint32_t microseconds = 0) const;
37 };