xref: /petsc/src/sys/classes/viewer/impls/hdf5/ftn-custom/zhdf5f.c (revision 3014b61aa36a362266ae4eadf9b334e8b11a5815)
1 #include <petsc/private/fortranimpl.h>
2 #include <petscviewerhdf5.h>
3 
4 #if defined(PETSC_HAVE_FORTRAN_CAPS)
5 #define petscviewerhdf5open_            PETSCVIEWERHDF5OPEN
6 #define petscviewerhdf5pushgroup_       PETSCVIEWERHDF5PUSHGROUP
7 #define petscviewerhdf5getgroup_        PETSCVIEWERHDF5GETGROUP
8 #define petscviewerhdf5hasdataset_      PETSCVIEWERHDF5HASDATASET
9 #define petscviewerhdf5hasattribute_    PETSCVIEWERHDF5HASATTRIBUTE
10 #define petscviewerhdf5writeattribute_  PETSCVIEWERHDF5WRITEATTRIBUTE
11 #define petscviewerhdf5readattribute_   PETSCVIEWERHDF5READATTRIBUTE
12 #define petscviewerhdf5hasgroup_        PETSCVIEWERHDF5HASGROUP
13 #define petscviewerhdf5opengroup_       PETSCVIEWERHDF5OPENGROUP
14 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
15 #define petscviewerhdf5open_            petscviewerhdf5open
16 #define petscviewerhdf5pushgroup_       petscviewerhdf5pushgroup
17 #define petscviewerhdf5getgroup_        petscviewerhdf5getgroup
18 #define petscviewerhdf5hasdataset_      petscviewerhdf5hasdataset
19 #define petscviewerhdf5hasattribute_    petscviewerhdf5hasattribute
20 #define petscviewerhdf5writeattribute_  petscviewerhdf5writeattribute
21 #define petscviewerhdf5readattribute_   petscviewerhdf5readattribute
22 #define petscviewerhdf5hasgroup_        petscviewerhdf5hasgroup
23 #define petscviewerhdf5opengroup_       petscviewerhdf5opengroup
24 #endif
25 
26 PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type,
27     PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
28 {
29   char *c1;
30 
31   FIXCHAR(name, len, c1);
32   *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return;
33   FREECHAR(name, c1);
34 }
35 
36 PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name,
37     PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
38 {
39   char *c1;
40 
41   FIXCHAR(name, len, c1);
42   *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return;
43   FREECHAR(name, c1);
44 }
45 
46 PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* path, char* abspath,
47     PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len0, PETSC_FORTRAN_CHARLEN_T len1)
48 {
49   char *c0;
50   char *c1;
51 
52   FIXCHAR(path, len0, c0);
53   *ierr = PetscViewerHDF5GetGroup(*viewer, c0, &c1);if (*ierr) return;
54   *ierr = PetscStrncpy(abspath, c1, len1);if (*ierr) return;
55   *ierr = PetscFree(c1);if (*ierr) return;
56   FREECHAR(path, c0);
57   FIXRETURNCHAR(PETSC_TRUE,abspath,len1);
58 }
59 
60 PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent,
61     char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen)
62 {
63    char *c1, *c2;
64 
65    FIXCHAR(parent, plen, c1);
66    FIXCHAR(name, nlen, c2);
67    *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return;
68    FREECHAR(parent, c1);
69    FREECHAR(name, c2);
70 }
71 
72 PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent,
73     char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen)
74 {
75    char *c1, *c2;
76 
77    FIXCHAR(parent, plen, c1);
78    FIXCHAR(name, nlen, c2);
79    *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, value);if (*ierr) return;
80    FREECHAR(parent, c1);
81    FREECHAR(name, c2);
82 }
83 
84 PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent,
85     char* name, PetscDataType *datatype, void *defaultValue, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen)
86 {
87    char *c1, *c2;
88 
89    FIXCHAR(parent, plen, c1);
90    FIXCHAR(name, nlen, c2);
91    *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, defaultValue, value);if (*ierr) return;
92    FREECHAR(parent, c1);
93    FREECHAR(name, c2);
94 }
95 
96 PETSC_EXTERN void petscviewerhdf5hasdataset_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
97 {
98    char *c1;
99 
100    FIXCHAR(path, len, c1);
101    *ierr = PetscViewerHDF5HasDataset(*viewer, c1, has);if (*ierr) return;
102    FREECHAR(path, c1);
103 }
104 
105 PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
106 {
107    char *c1;
108 
109    FIXCHAR(path, len, c1);
110    *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);if (*ierr) return;
111    FREECHAR(path, c1);
112 }
113 
114 PETSC_EXTERN void petscviewerhdf5opengroup_(PetscViewer *viewer, char path[], hid_t *fileId, hid_t *groupId, int *ierr, PETSC_FORTRAN_CHARLEN_T len)
115 {
116    char *c1;
117 
118    FIXCHAR(path, len, c1);
119    *ierr = PetscViewerHDF5OpenGroup(*viewer, c1, fileId, groupId);
120    FREECHAR(path, c1);
121 }
122