2024-08-26 16:07:11 +08:00

160 lines
5.9 KiB
C++

#include "HVersion.h"
#define JUDGE_AUX_N1(x) JUDGE_AUX_STR(x)[0]
#define JUDGE_AUX_N2(x) JUDGE_AUX_N1(x),JUDGE_AUX_STR(x)[1]
#define JUDGE_AUX_N3(x) JUDGE_AUX_N2(x),JUDGE_AUX_STR(x)[2]
#define JUDGE_AUX_N4(x) JUDGE_AUX_N3(x),JUDGE_AUX_STR(x)[3]
#define JUDGE_AUX_N5(x) JUDGE_AUX_N4(x),JUDGE_AUX_STR(x)[4]
#define JUDGE_AUX_N6(x) JUDGE_AUX_N5(x),JUDGE_AUX_STR(x)[5]
#define JUDGE_AUX_N7(x) JUDGE_AUX_N6(x),JUDGE_AUX_STR(x)[6]
#define JUDGE_AUX_N8(x) JUDGE_AUX_N7(x),JUDGE_AUX_STR(x)[7]
#define JUDGE_AUX_N9(x) JUDGE_AUX_N8(x),JUDGE_AUX_STR(x)[8]
#if JUDGE_VERSION_MAJOR >= 100000000
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N9(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 10000000
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N8(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 1000000
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N7(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 100000
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N6(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 10000
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N5(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 1000
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N4(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 100
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N3(JUDGE_VERSION_MAJOR)
#elif JUDGE_VERSION_MAJOR >= 10
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N2(JUDGE_VERSION_MAJOR)
#else
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N1(JUDGE_VERSION_MAJOR)
#endif
#if JUDGE_VERSION_MINOR >= 100000000
# define JUDGE_CHARS_MINOR JUDGE_AUX_N9(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 10000000
# define JUDGE_CHARS_MINOR JUDGE_AUX_N8(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 1000000
# define JUDGE_CHARS_MINOR JUDGE_AUX_N7(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 100000
# define JUDGE_CHARS_MINOR JUDGE_AUX_N6(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 10000
# define JUDGE_CHARS_MINOR JUDGE_AUX_N5(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 1000
# define JUDGE_CHARS_MINOR JUDGE_AUX_N4(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 100
# define JUDGE_CHARS_MINOR JUDGE_AUX_N3(JUDGE_VERSION_MINOR)
#elif JUDGE_VERSION_MINOR >= 10
# define JUDGE_CHARS_MINOR JUDGE_AUX_N2(JUDGE_VERSION_MINOR)
#else
# define JUDGE_CHARS_MINOR JUDGE_AUX_N1(JUDGE_VERSION_MINOR)
#endif
#if JUDGE_VERSION_PATCH >= 100000000
# define JUDGE_CHARS_PATCH JUDGE_AUX_N9(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 10000000
# define JUDGE_CHARS_PATCH JUDGE_AUX_N8(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 1000000
# define JUDGE_CHARS_PATCH JUDGE_AUX_N7(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 100000
# define JUDGE_CHARS_PATCH JUDGE_AUX_N6(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 10000
# define JUDGE_CHARS_PATCH JUDGE_AUX_N5(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 1000
# define JUDGE_CHARS_PATCH JUDGE_AUX_N4(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 100
# define JUDGE_CHARS_PATCH JUDGE_AUX_N3(JUDGE_VERSION_PATCH)
#elif JUDGE_VERSION_PATCH >= 10
# define JUDGE_CHARS_PATCH JUDGE_AUX_N2(JUDGE_VERSION_PATCH)
#else
# define JUDGE_CHARS_PATCH JUDGE_AUX_N1(JUDGE_VERSION_PATCH)
#endif
// 获取当前的编译时间
// Example of __DATE__ string: "Jul 27 2012"
// 01234567890
#define BUILD_YEAR_CH0 (__DATE__[ 7])
#define BUILD_YEAR_CH1 (__DATE__[ 8])
#define BUILD_YEAR_CH2 (__DATE__[ 9])
#define BUILD_YEAR_CH3 (__DATE__[10])
#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n')
#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F')
#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r')
#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p')
#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y')
#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n')
#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l')
#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u')
#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S')
#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O')
#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N')
#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D')
#define BUILD_MONTH_CH0 ((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? '1' : '0')
#define BUILD_MONTH_CH1 \
( \
(BUILD_MONTH_IS_JAN) ? '1' : \
(BUILD_MONTH_IS_FEB) ? '2' : \
(BUILD_MONTH_IS_MAR) ? '3' : \
(BUILD_MONTH_IS_APR) ? '4' : \
(BUILD_MONTH_IS_MAY) ? '5' : \
(BUILD_MONTH_IS_JUN) ? '6' : \
(BUILD_MONTH_IS_JUL) ? '7' : \
(BUILD_MONTH_IS_AUG) ? '8' : \
(BUILD_MONTH_IS_SEP) ? '9' : \
(BUILD_MONTH_IS_OCT) ? '0' : \
(BUILD_MONTH_IS_NOV) ? '1' : \
(BUILD_MONTH_IS_DEC) ? '2' : \
/* error default */ '?' \
)
#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : '0')
#define BUILD_DAY_CH1 ( __DATE__[5] )
// Example of __TIME__ string: "19:34:54"
// 01234567
#define BUILD_HOUR_CH0 (__TIME__[0])
#define BUILD_HOUR_CH1 (__TIME__[1])
#define BUILD_MIN_CH0 (__TIME__[3])
#define BUILD_MIN_CH1 (__TIME__[4])
#define BUILD_SEC_CH0 (__TIME__[6])
#define BUILD_SEC_CH1 (__TIME__[7])
const char JUDGE_VERSION_TIME[] =
{
BUILD_YEAR_CH2, BUILD_YEAR_CH3,
BUILD_MONTH_CH0, BUILD_MONTH_CH1,
BUILD_DAY_CH0, BUILD_DAY_CH1,
BUILD_HOUR_CH0, BUILD_HOUR_CH1,
BUILD_MIN_CH0, BUILD_MIN_CH1,
BUILD_SEC_CH0, BUILD_SEC_CH1,
'\0'
};
const char JUDGE_VERSION_INFO[] =
{
JUDGE_CHARS_MAJOR, '.',
JUDGE_CHARS_MINOR, '.',
JUDGE_CHARS_PATCH, '.',
JUDGE_VERSION_TIME[0],
JUDGE_VERSION_TIME[1],
JUDGE_VERSION_TIME[2],
JUDGE_VERSION_TIME[3],
JUDGE_VERSION_TIME[4],
JUDGE_VERSION_TIME[5],
JUDGE_VERSION_TIME[6],
JUDGE_VERSION_TIME[7],
JUDGE_VERSION_TIME[8],
JUDGE_VERSION_TIME[9],
JUDGE_VERSION_TIME[10],
JUDGE_VERSION_TIME[11],
'\0'
};