From d5b9afd673c05cc8a6816f81fa432cdd33ba3f5a Mon Sep 17 00:00:00 2001 From: Florian Prill <m300196@mlogin102.hpc.dkrz.de> Date: Mon, 12 Sep 2016 14:04:32 +0200 Subject: [PATCH] implemented assignment operator for milliseconds. --- examples/example_hl.f90 | 4 ++++ src/libmtime_hl.f90 | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/examples/example_hl.f90 b/examples/example_hl.f90 index eb9cc94e..0a6728fe 100644 --- a/examples/example_hl.f90 +++ b/examples/example_hl.f90 @@ -87,6 +87,10 @@ PROGRAM example dt3 = "1970-01-01T00:00:01" WRITE (0,*) dt%to_string(), " == ", dt3%to_string(), ": ", (dt == dt3) + ! interval assignment with milliseconds + td = 360000 + WRITE (0,*) "interval assignment with milliseconds: ", td%to_string() + ! ------------------------------------------------------------ ! EXAMPLE FOR ERROR HANDLING ! ------------------------------------------------------------ diff --git a/src/libmtime_hl.f90 b/src/libmtime_hl.f90 index 19a480e8..5356ac80 100644 --- a/src/libmtime_hl.f90 +++ b/src/libmtime_hl.f90 @@ -18,6 +18,8 @@ module mtime_hl public :: t_datetime, t_timedelta + INTEGER, PARAMETER :: i8 = SELECTED_INT_KIND(14) !< at least 8 byte integer + !> Wrapper class for "mtime" data type "datetime". ! ! Avoids, e.g., explicit use of POINTERs by the user. @@ -68,8 +70,9 @@ module mtime_hl procedure :: to_string => t_timedelta_to_string procedure :: assign_string => t_timedelta_assign_string + procedure :: assign_ms => t_timedelta_assign_ms - generic :: assignment(=) => assign_string + GENERIC :: ASSIGNMENT(=) => assign_string, assign_ms end type t_timedelta @@ -183,6 +186,20 @@ contains call deallocateTimedelta(td_tmp) end subroutine t_timedelta_assign_string + ! Assignment operator: this = milliseconds. + ! + SUBROUTINE t_timedelta_assign_ms(this, td_ms) + CLASS (t_timedelta), INTENT(out) :: this + INTEGER, INTENT(in) :: td_ms + TYPE(timedelta), POINTER :: td_tmp + CHARACTER(len=max_timedelta_str_len) :: td_string + CALL getPTStringFromMS(INT(td_ms,i8), td_string) + td_tmp => newTimedelta(td_string) + this%td = td_tmp + this%td%sign = td_tmp%sign + call deallocateTimedelta(td_tmp) + END SUBROUTINE t_timedelta_assign_ms + end module mtime_hl !> !! @} -- GitLab