diff --git a/include/mtime_iso8601.h b/include/mtime_iso8601.h index 7518d1a8a1ab84b3e1634902ba1ef19aeb36ea62..c040c062addd60779f5b4a7711b5775f2250121f 100644 --- a/include/mtime_iso8601.h +++ b/include/mtime_iso8601.h @@ -31,7 +31,7 @@ typedef enum struct iso8601_duration { - bool flag_std_form; + int flag_std_form; char sign; int64_t year; int month; diff --git a/include/mtime_timedelta.h b/include/mtime_timedelta.h index 2f2c2588d1d9b163d82fef5e694c9d746652a724..9fb11fbeed9c54dc98d970c7b530b2e905cda6a2 100644 --- a/include/mtime_timedelta.h +++ b/include/mtime_timedelta.h @@ -36,7 +36,7 @@ struct _juliandelta; struct _timedelta { - bool flag_std_form; ///< Is timedelta formatted in standard form (eg. PT30M10S) or long form (eg. PT3000S)? + int flag_std_form; ///< Is timedelta formatted in standard form (eg. PT30M10S) or long form (eg. PT3000S)? char sign; ///< sign of time delta. Sign can be '+' or '-'. int64_t year; ///< Year part of timedelta. diff --git a/src/libmtime.f90 b/src/libmtime.f90 index 81d2f024ffbd2e827d3bcc736df6b9d04742cac0..b7272a4b1d4fcfbdd95ddb7b3e6e27f715c07b1c 100644 --- a/src/libmtime.f90 +++ b/src/libmtime.f90 @@ -957,6 +957,7 @@ contains call c_f_pointer(c_pointer, dest) end function newdatetimefromconstructandcopy + ! @return Minimum of two date time. In case of equality we return @p a. ! ! @note This function does not return a copy of one of the arguments @@ -1351,6 +1352,7 @@ module mtime_timedelta integer, parameter :: max_timedelta_str_len = 32 ! type, bind(c) :: timedelta + integer(c_int) :: flag_std_form character(c_char) :: sign integer(c_int64_t) :: year integer(c_int) :: month diff --git a/src/mtime_iso8601.c b/src/mtime_iso8601.c index 5e6b85c24c66768131875d5c4adb0c6307b8e24e..45049cb47fc5ed2df54c2d39115e908083d370c3 100644 --- a/src/mtime_iso8601.c +++ b/src/mtime_iso8601.c @@ -737,9 +737,9 @@ get_date_time(const char* buffer, struct iso8601_datetime* datetimeObj, struct i else if((stat == DURATION_MATCH_STD || stat == DURATION_MATCH_LONG) && (RAISE_YEAR_OUT_OF_BOUND_EXCEPTION == false)) { if (stat == DURATION_MATCH_STD) /* STD: eg. P01Y05M */ - durationObj->flag_std_form = true; + durationObj->flag_std_form = 1; else /*LONG: eg. P17M */ - durationObj->flag_std_form = false; + durationObj->flag_std_form = 0; /* Set sign of duration. */ if (duObj.sign == '$') diff --git a/src/mtime_iso8601.rl b/src/mtime_iso8601.rl index c11be49d954d7ca1021cc3e477974f992df2a282..5aeb5320c311495bafd8e6e91ece17747b75fd9a 100644 --- a/src/mtime_iso8601.rl +++ b/src/mtime_iso8601.rl @@ -606,9 +606,9 @@ get_date_time(const char* buffer, struct iso8601_datetime* datetimeObj, struct i else if((stat == DURATION_MATCH_STD || stat == DURATION_MATCH_LONG) && (RAISE_YEAR_OUT_OF_BOUND_EXCEPTION == false)) { if (stat == DURATION_MATCH_STD) /* STD: eg. P01Y05M */ - durationObj->flag_std_form = true; + durationObj->flag_std_form = 1; else /*LONG: eg. P17M */ - durationObj->flag_std_form = false; + durationObj->flag_std_form = 0; /* Set sign of duration. */ if (duObj.sign == '$') diff --git a/src/mtime_timedelta.c b/src/mtime_timedelta.c index 5408fe3daea0f70027bbddbe271aa6bebd4aacf0..1ac1b07671de8b4caf35fdaefd7345ec55d50725 100644 --- a/src/mtime_timedelta.c +++ b/src/mtime_timedelta.c @@ -70,7 +70,7 @@ newTimeDelta(const char* tds) return NULL ; } - duration_type_flag == 2?(td->flag_std_form = true):(td->flag_std_form = false); + duration_type_flag == 2?(td->flag_std_form = 1):(td->flag_std_form = 0); /* IMPORTANT: Negative/Positive time delta is indicated using td->sign (-/+). year,month,day..etc are always positive integers or 0. */ td->sign = isoDuration->sign; td->year = isoDuration->year;