xref: /petsc/src/sys/classes/viewer/impls/hdf5/ftn-custom/zhdf5f.c (revision bee2cdfd0725b7b30e92bb6376cbc86ebdc8c1df)
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 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
14 #define petscviewerhdf5open_            petscviewerhdf5open
15 #define petscviewerhdf5pushgroup_       petscviewerhdf5pushgroup
16 #define petscviewerhdf5getgroup_        petscviewerhdf5getgroup
17 #define petscviewerhdf5hasdataset_      petscviewerhdf5hasdataset
18 #define petscviewerhdf5hasattribute_    petscviewerhdf5hasattribute
19 #define petscviewerhdf5writeattribute_  petscviewerhdf5writeattribute
20 #define petscviewerhdf5readattribute_   petscviewerhdf5readattribute
21 #define petscviewerhdf5hasgroup_        petscviewerhdf5hasgroup
22 #endif
23 
24 PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type,
25     PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
26 {
27   char *c1;
28 
29   FIXCHAR(name, len, c1);
30   *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return;
31   FREECHAR(name, c1);
32 }
33 
34 PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name,
35     PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
36 {
37   char *c1;
38 
39   FIXCHAR(name, len, c1);
40   *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return;
41   FREECHAR(name, c1);
42 }
43 
44 PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* name,
45     PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
46 {
47   const char *c1;
48 
49   *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);if (*ierr) return;
50   *ierr = PetscStrncpy(name, c1, len);
51   FIXRETURNCHAR(PETSC_TRUE,name,len);
52 }
53 
54 PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent,
55     char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen)
56 {
57    char *c1, *c2;
58 
59    FIXCHAR(parent, plen, c1);
60    FIXCHAR(name, nlen, c2);
61    *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return;
62    FREECHAR(parent, c1);
63    FREECHAR(name, c2);
64 }
65 
66 PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent,
67     char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen)
68 {
69    char *c1, *c2;
70 
71    FIXCHAR(parent, plen, c1);
72    FIXCHAR(name, nlen, c2);
73    *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return;
74    FREECHAR(parent, c1);
75    FREECHAR(name, c2);
76 }
77 
78 PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent,
79     char* name, PetscDataType *datatype, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen)
80 {
81    char *c1, *c2;
82 
83    FIXCHAR(parent, plen, c1);
84    FIXCHAR(name, nlen, c2);
85    *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return;
86    FREECHAR(parent, c1);
87    FREECHAR(name, c2);
88 }
89 
90 PETSC_EXTERN void petscviewerhdf5hasdataset_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
91 {
92    char *c1;
93 
94    FIXCHAR(path, len, c1);
95    *ierr = PetscViewerHDF5HasDataset(*viewer, c1, has);if (*ierr) return;
96    FREECHAR(path, c1);
97 }
98 
99 PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
100 {
101    char *c1;
102 
103    FIXCHAR(path, len, c1);
104    *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);if (*ierr) return;
105    FREECHAR(path, c1);
106 }
107