Date-Time Macros#

The following file parse the build-time data into integers to reuse those in code (to set a new seed, shows build time infos …).
The file can be downloaded here.
 1#ifndef BUILDTIME_MACROS
 2#define BUILDTIME_MACROS
 3
 4/**Miscellaneous defines to get compil data*/
 5    // Time
 6#define COMPIL_BUILD_HOUR ((__TIME__[0] - '0') * 10 + __TIME__[1] - '0')
 7#define COMPIL_BUILD_MIN  ((__TIME__[3] - '0') * 10 + __TIME__[4] - '0')
 8#define COMPIL_BUILD_SEC  ((__TIME__[6] - '0') * 10 + __TIME__[7] - '0')
 9    // Date
10#define BUILD_YEAR_T (((__DATE__[7]-'0')*1000) + ((__DATE__[8]-'0')*100) + ((__DATE__[9]-'0')*10) + (__DATE__[10]-'0'))
11
12#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n')
13#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F')
14#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r')
15#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p')
16#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y')
17#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n')
18#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l')
19#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u')
20#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S')
21#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O')
22#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N')
23#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D')
24#define BUILD_MONTH_CH0 \
25    ((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? '1' : '0')
26#define BUILD_MONTH_CH1 \
27    ( \
28        (BUILD_MONTH_IS_JAN) ? '1' : \
29        (BUILD_MONTH_IS_FEB) ? '2' : \
30        (BUILD_MONTH_IS_MAR) ? '3' : \
31        (BUILD_MONTH_IS_APR) ? '4' : \
32        (BUILD_MONTH_IS_MAY) ? '5' : \
33        (BUILD_MONTH_IS_JUN) ? '6' : \
34        (BUILD_MONTH_IS_JUL) ? '7' : \
35        (BUILD_MONTH_IS_AUG) ? '8' : \
36        (BUILD_MONTH_IS_SEP) ? '9' : \
37        (BUILD_MONTH_IS_OCT) ? '0' : \
38        (BUILD_MONTH_IS_NOV) ? '1' : \
39        (BUILD_MONTH_IS_DEC) ? '2' : \
40        /* error default */    '?' \
41    )
42#define BUILD_MONTH_T ((BUILD_MONTH_CH0-'0')*10 + (BUILD_MONTH_CH1-'0'))
43
44#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : '0')
45#define BUILD_DAY_CH1 (__DATE__[ 5])
46#define BUILD_DAY_T ((BUILD_DAY_CH0-'0')*10 + (BUILD_DAY_CH1-'0'))
47
48    // If correct
49#define BAD_BUILD_TIME (__TIME__[0] == '?')
50
51
52
53/**Use those to access compil data*/
54    // Time
55#define BUILD_HOUR_INT  ((BAD_BUILD_TIME) ? 00 :  COMPIL_BUILD_HOUR)
56#define BUILD_MIN_INT   ((BAD_BUILD_TIME) ? 00 :  COMPIL_BUILD_MIN)
57#define BUILD_SEC_INT   ((BAD_BUILD_TIME) ? 00 :  COMPIL_BUILD_SEC)
58    // Date
59#define BUILD_YEAR_INT ((BAD_BUILD_TIME) ? 1900 : BUILD_YEAR_T)
60#define BUILD_MONTH_INT ((BAD_BUILD_TIME) ? 01 : BUILD_MONTH_T)
61#define BUILD_DAY_INT ((BAD_BUILD_TIME) ? 01 : BUILD_DAY_T)
62    // Available preprocessor MACROS : __TIME__, __DATE__, __TIMESTAMP__
63
64#endif // BUILDTIME_MACROS

C++