summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5Zff.f90
blob: 2f33b807e5caf81f00b0c48049f8118147316bc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
!
! This file contains FORTRAN90 interfaces for H5I functions
!
      MODULE H5Z

        USE H5GLOBAL
      
      CONTAINS

!----------------------------------------------------------------------
! Name:		h5zunregister_f
!
! Purpose:	Unregisters specified filetr
!
! Inputs: 	filter	        - filter; may have one of the following values:
!                                 H5Z_FILTER_DEFLATE_F 
!                                 H5Z_FILTER_SHUFFLE_F 
!                                 H5Z_FILTER_FLETCHER32_F 
! Outputs:  
!		hdferr:		- error code		
!				 	Success:  0
!				 	Failure: -1   
! Optional parameters:
!				NONE
!
! Programmer:	Elena Pourmal
!		March 12, 2003
!
! Modifications: 	
!
! Comment:		
!----------------------------------------------------------------------
          SUBROUTINE h5zunregister_f(filter, hdferr) 
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5zunregister_f
!DEC$endif
!
            IMPLICIT NONE
            INTEGER, INTENT(IN)  :: filter
            INTEGER, INTENT(OUT) :: hdferr  ! Error code

!            INTEGER, EXTERNAL :: h5zunregister_c
!  Interface is needed for MS FORTRAN
!
            INTERFACE
              INTEGER FUNCTION h5zunregister_c (filter)
              USE H5GLOBAL
              !DEC$ IF DEFINED(HDF5F90_WINDOWS)
              !MS$ATTRIBUTES C,reference,alias:'_H5ZUNREGISTER_C':: h5zunregister_c
              !DEC$ ENDIF
              INTEGER, INTENT(IN) :: filter
              END FUNCTION h5zunregister_c
            END INTERFACE
            hdferr = h5zunregister_c (filter)
          END SUBROUTINE h5zunregister_f
!----------------------------------------------------------------------
! Name:		h5zfilter_avail_f
!
! Purpose:      Queries if filter is available	
!
! Inputs:  
!		filter		- filter
! Outputs:  
!		status		- status; .TRUE. if filter is available, 
!                                 .FALSE. otherwise
!		hdferr:		- error code		
!				 	Success:  0
!				 	Failure: -1   
! Optional parameters:
!				NONE			
!
! Programmer:	Elena Pourmal
!		March 12, 2003
!
! Modifications: 	
!
!----------------------------------------------------------------------
          SUBROUTINE h5zfilter_avail_f(filter, status, hdferr) 
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5zfilter_avail_f
!DEC$endif
!

            IMPLICIT NONE
            INTEGER, INTENT(IN)  :: filter      ! Filter; may be one of the following:
                                                ! H5Z_FILTER_DEFLATE_F                  
                                                ! H5Z_FILTER_SHUFFLE_F                  
                                                ! H5Z_FILTER_FLETCHER32_F                  
            LOGICAL, INTENT(OUT) :: status      ! Flag, idicates if filter
                                                ! is availble  not ( TRUE or
                                                ! FALSE)  
            INTEGER, INTENT(OUT) :: hdferr      ! Error code
            INTEGER :: flag                     ! "TRUE/FALSE/ERROR from C" 

!            INTEGER, EXTERNAL :: h5zfilter_avail_c
!  MS FORTRAN needs explicit interface for C functions called here.
!
            INTERFACE
              INTEGER FUNCTION h5zfilter_avail_c(filter, flag) 
              USE H5GLOBAL
              !DEC$ IF DEFINED(HDF5F90_WINDOWS)
              !MS$ATTRIBUTES C,reference,alias:'_H5ZFILTER_AVAIL_C'::h5zfilter_avail_c
              !DEC$ ENDIF
              INTEGER, INTENT(IN) :: filter
              INTEGER :: flag
              END FUNCTION h5zfilter_avail_c
            END INTERFACE

            hdferr = h5zfilter_avail_c(filter, flag)
            status = .TRUE.
            if (flag .EQ. 0) status = .FALSE.
 
          END SUBROUTINE h5zfilter_avail_f

      END MODULE H5Z