diff --git a/src/libmtime.f90 b/src/libmtime.f90 index 9ff15db90e3c8606cf7928c539af80e042bba3a0..687a617e1c5b04083d85f7fdc3e20c8d842df56d 100644 --- a/src/libmtime.f90 +++ b/src/libmtime.f90 @@ -116,7 +116,12 @@ MODULE mtime_juliandelta PUBLIC :: juliandelta PUBLIC :: newJulianDelta PUBLIC :: deallocateJulianDelta + public :: operator (+) ! + interface operator (+) + module procedure addjuliandeltatojulianday + module procedure addjuliandaytojuliandelta + end interface operator (+) CONTAINS @@ -141,10 +146,24 @@ CONTAINS CALL my_deallocatejuliandelta(c_loc(my_juliandelta)) my_juliandelta => NULL() END SUBROUTINE deallocateJuliandelta - + ! + function addJulianDeltaToJulianDay(op1, op2) result(ret) !OK-TESTED. + type(julianday), target :: ret + type(julianday), target, intent(in) :: op1 + type(juliandelta), target, intent(in) :: op2 + type(c_ptr) :: dummy_ptr + dummy_ptr = my_addjuliandeltatojulianday(c_loc(op1), c_loc(op2), c_loc(ret)) + end function addJulianDeltaToJulianDay + ! + function addjulianDayToJulianDelta(op2, op1) result(ret) !OK-TESTED. + type(julianday), target :: ret + type(julianday), target, intent(in) :: op1 + type(juliandelta), target, intent(in) :: op2 + type(c_ptr) :: dummy_ptr + dummy_ptr = my_addjuliandeltatojulianday(c_loc(op1), c_loc(op2), c_loc(ret)) + end function addjulianDayToJulianDelta + ! END MODULE mtime_juliandelta - - !> !! @brief Julian Day Calendar and some operations supported on julian dates. !! diff --git a/src/mtime_c_bindings.f90 b/src/mtime_c_bindings.f90 index 6190b987983fee2aab005ad615390a80309c8674..76f3fa3876837f0bbec0430e055e8b2a7e9ab2ea 100644 --- a/src/mtime_c_bindings.f90 +++ b/src/mtime_c_bindings.f90 @@ -128,6 +128,13 @@ module mtime_c_bindings import :: c_ptr type(c_ptr), value :: jd end subroutine my_deallocatejuliandelta + ! + function my_addjuliandeltatojulianday(my_julianday, my_juliandelta, ret_julianday) result(julianday_ptr) & + & bind(c, name='addJulianDelta') + import :: c_ptr + type(c_ptr) :: julianday_ptr + type(c_ptr), value :: my_julianday, my_juliandelta, ret_julianday + end function my_addjuliandeltatojulianday end interface interface