source: XIOS3/trunk/src/interface/fortran/imem_checker.F90 @ 2634

Last change on this file since 2634 was 2620, checked in by jderouillat, 4 months ago

Modify fortran-C interfaces to manage logical-bool conversion, the optimizations of OneAPI could produce bugs regarding the logical-bool encodings.

File size: 1.6 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE IMEM_CHECKER
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE LOGICAL_BOOL_CONVERSION
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
43      CALL xios_logical_to_bool_0d(finalize_)
44      CALL cxios_mem_checker_log(mem_id, len(mem_id), finalize_)
45
46   END SUBROUTINE xios(mem_checker_log)
47
48END MODULE IMEM_CHECKER
Note: See TracBrowser for help on using the repository browser.