From 798e014531bb0cde20c385ce0efb73108f7c8395 Mon Sep 17 00:00:00 2001
From: Jan Frederik Engels <engels+git@dkrz.de>
Date: Wed, 24 Apr 2019 18:03:22 +0200
Subject: [PATCH] Fix t_event_is_active

---
 src/libmtime_hl.f90   |  3 ++-
 src/mtime_t_event.inc | 24 +++++++++++++++++++-----
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/libmtime_hl.f90 b/src/libmtime_hl.f90
index 06d61391..c8f758b3 100644
--- a/src/libmtime_hl.f90
+++ b/src/libmtime_hl.f90
@@ -36,7 +36,8 @@
 MODULE mtime_hl
 
   USE, INTRINSIC :: iso_c_binding, ONLY: c_int32_t, c_int64_t, c_double, &
-       &                                 c_null_char, c_ptr, c_loc, c_f_pointer
+       &                                 c_null_char, c_ptr, c_loc, c_f_pointer, &
+       &                                 c_null_ptr
   USE mtime_c_bindings
   USE mtime_constants
   use mtime_error_handling
diff --git a/src/mtime_t_event.inc b/src/mtime_t_event.inc
index d9a99867..44c9c11e 100644
--- a/src/mtime_t_event.inc
+++ b/src/mtime_t_event.inc
@@ -110,16 +110,30 @@
 
 
   FUNCTION t_event_is_active(this, my_datetime, plus_slack, minus_slack) result(ret)
-    CLASS(t_event)              :: this
+    CLASS(t_event), TARGET      :: this
     TYPE(t_datetime)            :: my_datetime
     TYPE(t_timedelta), OPTIONAL :: plus_slack
     TYPE(t_timedelta), OPTIONAL :: minus_slack
+    TYPE(t_event), POINTER      :: tmp_ev
+    TYPE(c_ptr) :: tmp_dt, tmp_plus, tmp_minus
     logical(c_bool) :: ret
 
-    !FIXME
-    STOP
-    !ret = isCurrentEventActive(this, my_datetime%dt, plus_slack%td, minus_slack%td)
-
+    tmp_ev => this
+    tmp_dt = my_datetime%get_c_pointer()
+    if (present(plus_slack)) then
+      tmp_plus = plus_slack%get_c_pointer()
+    else
+      tmp_plus = c_null_ptr
+    endif
+
+    if (present(minus_slack)) then
+      tmp_minus = minus_slack%get_c_pointer()
+    else
+      tmp_minus = c_null_ptr
+    endif
+
+    ret = my_isCurrentEventActive(c_loc(tmp_ev), tmp_dt, &
+          &                       tmp_plus,  tmp_minus)
   END FUNCTION t_event_is_active
 
   ! ================================================================================
-- 
GitLab