From e77b15db86ab017b29484ec2118033e79293d069 Mon Sep 17 00:00:00 2001 From: Florian Prill <m300196@mlogin102.hpc.dkrz.de> Date: Mon, 12 Sep 2016 13:56:45 +0200 Subject: [PATCH] HL interfaces: removed destructors (final). --- src/libmtime_hl.f90 | 54 +-------------------------------------------- 1 file changed, 1 insertion(+), 53 deletions(-) diff --git a/src/libmtime_hl.f90 b/src/libmtime_hl.f90 index f15c1150..19a480e8 100644 --- a/src/libmtime_hl.f90 +++ b/src/libmtime_hl.f90 @@ -29,26 +29,7 @@ module mtime_hl type(datetime) :: dt contains - - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! - ! The use of "final" is "potentially" dangerous - it is supported, - ! e.g., on gfortran 4.9 only partially. (see - ! http://fortranwiki.org/fortran/show/Fortran+2003+status) - ! - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! - ! final is required to prevent memory leaks, when variables go out - ! of scope. So this routine will get called only in this case and - ! the call is introduced by the compiler - nobody will see those. - ! So I will reenable the final but not for gcc odler than gcc5. - ! - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -#if __GNUC__ > 4 - final :: t_datetime_deallocate -#endif - + procedure :: to_string => t_datetime_to_string procedure :: assign_string => t_datetime_assign_string procedure :: add_timedelta => t_datetime_add_timedelta @@ -85,9 +66,6 @@ module mtime_hl contains -#if __GNUC__ > 4 - final :: t_timedelta_deallocate -#endif procedure :: to_string => t_timedelta_to_string procedure :: assign_string => t_timedelta_assign_string @@ -97,29 +75,6 @@ module mtime_hl contains - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! - ! In my opinion, this deallocate does not make sense, since the - ! this%dt data member is a simply derived type (with C conforming - ! kind values). The necessary deallocates happen in the wrapper - ! routines, where a POINTER variable is used and its contents are - ! copied to this%dt. - ! - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! - ! You're right, but this routine is just the implementation of - ! final, and no user should call it explicitly! BUt of course, - ! you need to make the call available. - ! - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! - subroutine t_datetime_deallocate(this) - type(t_datetime), target, intent(inout) :: this - type(datetime), pointer :: tmp_dt - tmp_dt = this%dt - if (associated(tmp_dt)) call deallocateDatetime(tmp_dt) - end subroutine t_datetime_deallocate - ! Convert t_datetime object to string. ! function t_datetime_to_string(this) @@ -204,13 +159,6 @@ contains class (t_datetime), intent(in) :: dt t_datetime_greater_or_equal = (this%dt >= dt%dt) end function t_datetime_greater_or_equal - - subroutine t_timedelta_deallocate(this) - type(t_timedelta), intent(inout) :: this - type(timedelta), pointer :: tmp_td - tmp_td = this%td - if (associated(tmp_td)) call deallocateTimedelta(tmp_td) - end subroutine t_timedelta_deallocate ! Convert t_timedelta object to string. ! -- GitLab