@@ -0,0 +1,78 | |||||
|
1 | #include "Version.h" | |||
|
2 | ||||
|
3 | /*************************************************** | |||
|
4 | * @SCIQLOP_CMAKE_GENERATION_WARNING@ * | |||
|
5 | ***************************************************/ | |||
|
6 | ||||
|
7 | #include <QtCore/QDateTime> | |||
|
8 | #include <QtCore/QStringList> | |||
|
9 | ||||
|
10 | namespace sciqlop { | |||
|
11 | ||||
|
12 | const char *Version::VERSION_SUFFIX = "@SCIQLOP_VERSION_SUFFIX@"; | |||
|
13 | ||||
|
14 | /** | |||
|
15 | * From the C99 standard: | |||
|
16 | * __DATE__: The date of translation of the preprocessing translation unit: | |||
|
17 | * a character string literal of the form "Mmm dd yyyy", where the names of | |||
|
18 | * the months are the same as those generated by the asctime function, and | |||
|
19 | * the first character of dd is a space character if the value is less than | |||
|
20 | * 10. If the date of translation is not available, an | |||
|
21 | * implementation-defined valid date shall be supplied. | |||
|
22 | */ | |||
|
23 | const char *Version::BUILD_DATE = __DATE__; | |||
|
24 | /** | |||
|
25 | * From the C99 standard: | |||
|
26 | * __TIME__: The time of translation of the preprocessing translation unit: | |||
|
27 | * a character string literal of the form "hh:mm:ss" as in the time | |||
|
28 | * generated by the asctime function. If the time of translation is not | |||
|
29 | * available, an implementation-defined valid time shall be supplied. | |||
|
30 | */ | |||
|
31 | const char *Version::BUILD_TIME = __TIME__; | |||
|
32 | ||||
|
33 | QDateTime Version::buildDateTime() | |||
|
34 | { | |||
|
35 | static QDateTime buildDateTime; | |||
|
36 | if (!buildDateTime.isValid()) { | |||
|
37 | // Convert BUILD_DATE to a QDate | |||
|
38 | // The __DATE__ macro return the month name with the asctime() function, | |||
|
39 | // which doesn't support localization, the month names returned are | |||
|
40 | // always the same. On the contrary, the "MMM" format on | |||
|
41 | // QDate::fromString() is localized, so this method can't be used to | |||
|
42 | // retrieve the month and we must manually do it instead. | |||
|
43 | QString buildDateStr = QString(BUILD_DATE); | |||
|
44 | QString buildMonthStr = buildDateStr.left(3); | |||
|
45 | QString buildDayAndYearStr = buildDateStr.mid(4).trimmed(); | |||
|
46 | ||||
|
47 | QDate buildDate = QDate::fromString(buildDayAndYearStr, "d yyyy"); | |||
|
48 | QStringList monthList = QStringList() << "Jan" | |||
|
49 | << "Feb" | |||
|
50 | << "Mar" | |||
|
51 | << "Apr" | |||
|
52 | << "May" | |||
|
53 | << "Jun" | |||
|
54 | << "Jul" | |||
|
55 | << "Aug" | |||
|
56 | << "Sep" | |||
|
57 | << "Oct" | |||
|
58 | << "Nov" | |||
|
59 | << "Dec"; | |||
|
60 | for (int i = 0; i < monthList.size(); ++i) { | |||
|
61 | if (buildMonthStr == monthList.at(i)) { | |||
|
62 | buildDate.setDate(buildDate.year(), i + 1, buildDate.day()); | |||
|
63 | break; | |||
|
64 | } | |||
|
65 | } | |||
|
66 | ||||
|
67 | // Convert BUILD_TIME to a QTime | |||
|
68 | QTime buildTime = QTime::fromString(BUILD_TIME, "hh:mm:ss"); | |||
|
69 | ||||
|
70 | // Set the buildDateTime | |||
|
71 | buildDateTime.setDate(buildDate); | |||
|
72 | buildDateTime.setTime(buildTime); | |||
|
73 | } | |||
|
74 | ||||
|
75 | return buildDateTime; | |||
|
76 | } | |||
|
77 | ||||
|
78 | } // namespace sciqlop |
@@ -0,0 +1,98 | |||||
|
1 | // TODO copyright | |||
|
2 | /** | |||
|
3 | * @file Version.h | |||
|
4 | */ | |||
|
5 | #ifndef SCIQLOP_VERSION_H | |||
|
6 | #define SCIQLOP_VERSION_H | |||
|
7 | ||||
|
8 | /*************************************************** | |||
|
9 | * @SCIQLOP_CMAKE_GENERATION_WARNING@ * | |||
|
10 | ***************************************************/ | |||
|
11 | ||||
|
12 | //#include "SciqlopExport.h" | |||
|
13 | #include <QtCore/QString> | |||
|
14 | ||||
|
15 | class QDateTime; | |||
|
16 | ||||
|
17 | namespace sciqlop { | |||
|
18 | ||||
|
19 | /** | |||
|
20 | * Holds the version of Sciqlop. | |||
|
21 | * | |||
|
22 | * @attention Don't update this class directly, it is generated from the | |||
|
23 | * `resources/Version.h.in` and `resources/Version.cpp.in` files, along with | |||
|
24 | * the cmake variables defined in the `cmake/sciqlop_version.cmake` file. | |||
|
25 | * | |||
|
26 | * To change the Sciqlop version number, update the `cmake/sciqlop_version.cmake` | |||
|
27 | * file, and to change this class other than to change the version number, | |||
|
28 | * update the `resources/Version.h.in` and `resources/Version.cpp.in` files. | |||
|
29 | * @ingroup Utils | |||
|
30 | */ | |||
|
31 | class /*SCIQLOP_API*/ Version { | |||
|
32 | public: | |||
|
33 | /** | |||
|
34 | * Retrieve the version of Sciqlop. | |||
|
35 | * | |||
|
36 | * The version is of the form MAJOR.MINOR.PATCH. If a suffix has been | |||
|
37 | * provided to the version, it is appended after the PATCH. | |||
|
38 | * | |||
|
39 | * The version can be modified by updating the cmake/sciqlop_version.cmake | |||
|
40 | * file. | |||
|
41 | * | |||
|
42 | * @return The version of Sciqlop as a QString. | |||
|
43 | */ | |||
|
44 | static QString version() | |||
|
45 | { | |||
|
46 | static const QString v("@SCIQLOP_VERSION@"); | |||
|
47 | return v; | |||
|
48 | } | |||
|
49 | ||||
|
50 | /** | |||
|
51 | * @return The datetime of the build. | |||
|
52 | */ | |||
|
53 | static QDateTime buildDateTime(); | |||
|
54 | ||||
|
55 | /** | |||
|
56 | * Major version. | |||
|
57 | */ | |||
|
58 | static const int VERSION_MAJOR = @SCIQLOP_VERSION_MAJOR@; | |||
|
59 | /** | |||
|
60 | * Minor version. | |||
|
61 | */ | |||
|
62 | static const int VERSION_MINOR = @SCIQLOP_VERSION_MINOR@; | |||
|
63 | /** | |||
|
64 | * Patch version. | |||
|
65 | */ | |||
|
66 | static const int VERSION_PATCH = @SCIQLOP_VERSION_PATCH@; | |||
|
67 | /** | |||
|
68 | * Suffix version. | |||
|
69 | */ | |||
|
70 | static const char *VERSION_SUFFIX; | |||
|
71 | ||||
|
72 | /** | |||
|
73 | * Compile date computed with the __DATE__ macro. | |||
|
74 | * | |||
|
75 | * From the C99 standard: | |||
|
76 | * __DATE__: The date of translation of the preprocessing translation unit: | |||
|
77 | * a character string literal of the form "Mmm dd yyyy", where the names of | |||
|
78 | * the months are the same as those generated by the asctime function, and | |||
|
79 | * the first character of dd is a space character if the value is less than | |||
|
80 | * 10. If the date of translation is not available, an | |||
|
81 | * implementation-defined valid date shall be supplied. | |||
|
82 | */ | |||
|
83 | static const char *BUILD_DATE; | |||
|
84 | /** | |||
|
85 | * Compile time computed with the __TIME__ macro. | |||
|
86 | * | |||
|
87 | * From the C99 standard: | |||
|
88 | * __TIME__: The time of translation of the preprocessing translation unit: | |||
|
89 | * a character string literal of the form "hh:mm:ss" as in the time | |||
|
90 | * generated by the asctime function. If the time of translation is not | |||
|
91 | * available, an implementation-defined valid time shall be supplied. | |||
|
92 | */ | |||
|
93 | static const char *BUILD_TIME; | |||
|
94 | }; | |||
|
95 | ||||
|
96 | } // namespace sciqlop | |||
|
97 | ||||
|
98 | #endif // SCIQLOP_VERSION_H |
General Comments 0
You need to be logged in to leave comments.
Login now