[2418] | 1 | #include "xios_fortran_prefix.hpp" |
---|
| 2 | |
---|
| 3 | MODULE IMEM_CHECKER |
---|
| 4 | USE, INTRINSIC :: ISO_C_BINDING |
---|
[2620] | 5 | USE LOGICAL_BOOL_CONVERSION |
---|
[2418] | 6 | |
---|
| 7 | INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 |
---|
| 8 | |
---|
| 9 | SUBROUTINE cxios_mem_checker_get(mem) BIND(C) |
---|
| 10 | USE ISO_C_BINDING |
---|
| 11 | REAL (kind = C_DOUBLE), VALUE :: mem |
---|
| 12 | END SUBROUTINE cxios_mem_checker_get |
---|
| 13 | |
---|
| 14 | SUBROUTINE cxios_mem_checker_log(memid, memid_size, finalize) BIND(C) |
---|
| 15 | USE ISO_C_BINDING |
---|
| 16 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: memid |
---|
| 17 | INTEGER (kind = C_INT) , VALUE :: memid_size |
---|
| 18 | LOGICAL (kind = C_BOOL) :: finalize |
---|
| 19 | END SUBROUTINE cxios_mem_checker_log |
---|
| 20 | |
---|
| 21 | END INTERFACE |
---|
| 22 | |
---|
| 23 | CONTAINS ! Fonctions disponibles pour les utilisateurs. |
---|
| 24 | |
---|
| 25 | FUNCTION xios(mem_checker_get)() RESULT(mem) |
---|
| 26 | IMPLICIT NONE |
---|
| 27 | REAL :: mem |
---|
| 28 | REAL(KIND=C_DOUBLE) :: mem_ |
---|
| 29 | |
---|
| 30 | CALL cxios_mem_checker_get(mem_) |
---|
| 31 | mem=mem_ |
---|
| 32 | END FUNCTION xios(mem_checker_get) |
---|
| 33 | |
---|
| 34 | SUBROUTINE xios(mem_checker_log)(mem_id, finalize) |
---|
| 35 | USE ISO_C_BINDING |
---|
| 36 | IMPLICIT NONE |
---|
| 37 | CHARACTER(len = *) , INTENT(IN) :: mem_id |
---|
| 38 | LOGICAL, OPTIONAL,INTENT(IN) :: finalize |
---|
| 39 | LOGICAL (KIND=C_BOOL) :: finalize_ |
---|
| 40 | |
---|
| 41 | finalize_=.FALSE. |
---|
| 42 | IF (PRESENT(finalize)) finalize_ = finalize |
---|
[2620] | 43 | CALL xios_logical_to_bool_0d(finalize_) |
---|
[2418] | 44 | CALL cxios_mem_checker_log(mem_id, len(mem_id), finalize_) |
---|
| 45 | |
---|
| 46 | END SUBROUTINE xios(mem_checker_log) |
---|
| 47 | |
---|
| 48 | END MODULE IMEM_CHECKER |
---|