source: XIOS/dev/dev_olga/src/interface/fortran/duration_interface.F90 @ 1314

Last change on this file since 1314 was 801, checked in by rlacroix, 8 years ago

Fortran interface: Add functions to convert a string to a date or a duration.

File size: 2.4 KB
Line 
1#include "../fortran/xios_fortran_prefix.hpp"
2
3MODULE DURATION_INTERFACE
4   USE, INTRINSIC :: ISO_C_BINDING
5
6   TYPE, BIND(C) :: txios(duration)
7      REAL(kind = C_DOUBLE) :: year=0, month=0, day=0, hour=0, minute=0, second=0, timestep=0
8   END TYPE txios(duration)
9     
10   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
11
12      SUBROUTINE cxios_duration_convert_to_string(dur, str, str_size) BIND(C)
13         USE ISO_C_BINDING
14         IMPORT :: txios(duration)
15         TYPE(txios(duration)), VALUE :: dur
16         CHARACTER(kind = C_CHAR), DIMENSION(*) :: str
17         INTEGER(kind = C_INT), VALUE :: str_size
18      END SUBROUTINE cxios_duration_convert_to_string
19
20      TYPE(txios(duration)) FUNCTION cxios_duration_convert_from_string(str, str_size) BIND(C)
21         USE ISO_C_BINDING
22         IMPORT :: txios(duration)
23         CHARACTER(kind = C_CHAR), DIMENSION(*) :: str
24         INTEGER(kind = C_INT), VALUE :: str_size
25      END FUNCTION cxios_duration_convert_from_string
26
27      TYPE(txios(duration)) FUNCTION cxios_duration_add(dur1, dur2) BIND(C)
28         USE ISO_C_BINDING
29         IMPORT :: txios(duration)
30         TYPE(txios(duration)), VALUE :: dur1, dur2
31      END FUNCTION cxios_duration_add
32
33      TYPE(txios(duration)) FUNCTION cxios_duration_sub(dur1, dur2) BIND(C)
34         USE ISO_C_BINDING
35         IMPORT :: txios(duration)
36         TYPE(txios(duration)), VALUE :: dur1, dur2
37      END FUNCTION cxios_duration_sub
38
39      TYPE(txios(duration)) FUNCTION cxios_duration_mult(val, dur) BIND(C)
40         USE ISO_C_BINDING
41         IMPORT :: txios(duration)
42         REAL(kind = C_DOUBLE), VALUE :: val
43         TYPE(txios(duration)), VALUE :: dur
44      END FUNCTION cxios_duration_mult
45
46      TYPE(txios(duration)) FUNCTION cxios_duration_neg(dur) BIND(C)
47         USE ISO_C_BINDING
48         IMPORT :: txios(duration)
49         TYPE(txios(duration)), VALUE :: dur
50      END FUNCTION cxios_duration_neg
51
52      LOGICAL(kind = C_BOOL) FUNCTION cxios_duration_eq(dur1, dur2) BIND(C)
53         USE ISO_C_BINDING
54         IMPORT :: txios(duration)
55         TYPE(txios(duration)), VALUE :: dur1, dur2
56      END FUNCTION cxios_duration_eq
57
58      LOGICAL(kind = C_BOOL) FUNCTION cxios_duration_neq(dur1, dur2) BIND(C)
59         USE ISO_C_BINDING
60         IMPORT :: txios(duration)
61         TYPE(txios(duration)), VALUE :: dur1, dur2
62      END FUNCTION cxios_duration_neq
63
64   END INTERFACE
65     
66END MODULE DURATION_INTERFACE
Note: See TracBrowser for help on using the repository browser.