Actual source code: zhdf5f.c
1: #include <petsc/private/fortranimpl.h>
2: #include <petscviewerhdf5.h>
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: #define petscviewerhdf5writegroup_ PETSCVIEWERHDF5WRITEGROUP
15: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
16: #define petscviewerhdf5open_ petscviewerhdf5open
17: #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup
18: #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup
19: #define petscviewerhdf5hasdataset_ petscviewerhdf5hasdataset
20: #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute
21: #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute
22: #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute
23: #define petscviewerhdf5hasgroup_ petscviewerhdf5hasgroup
24: #define petscviewerhdf5opengroup_ petscviewerhdf5opengroup
25: #define petscviewerhdf5writegroup_ petscviewerhdf5writegroup
26: #endif
28: PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char *name, PetscFileMode *type, PetscViewer *binv, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
29: {
30: char *c1;
32: FIXCHAR(name, len, c1);
33: *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint *)&*comm), c1, *type, binv);
34: if (*ierr) return;
35: FREECHAR(name, c1);
36: }
38: PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
39: {
40: char *c1;
42: FIXCHAR(name, len, c1);
43: *ierr = PetscViewerHDF5PushGroup(*viewer, c1);
44: if (*ierr) return;
45: FREECHAR(name, c1);
46: }
48: PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char *path, char *abspath, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len0, PETSC_FORTRAN_CHARLEN_T len1)
49: {
50: char *c0;
51: char *c1;
53: FIXCHAR(path, len0, c0);
54: *ierr = PetscViewerHDF5GetGroup(*viewer, c0, &c1);
55: if (*ierr) return;
56: *ierr = PetscStrncpy(abspath, c1, len1);
57: if (*ierr) return;
58: *ierr = PetscFree(c1);
59: if (*ierr) return;
60: FREECHAR(path, c0);
61: FIXRETURNCHAR(PETSC_TRUE, abspath, len1);
62: }
64: PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char *parent, char *name, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T plen, PETSC_FORTRAN_CHARLEN_T nlen)
65: {
66: char *c1, *c2;
68: FIXCHAR(parent, plen, c1);
69: FIXCHAR(name, nlen, c2);
70: *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);
71: if (*ierr) return;
72: FREECHAR(parent, c1);
73: FREECHAR(name, c2);
74: }
76: PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char *parent, char *name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T plen, PETSC_FORTRAN_CHARLEN_T nlen)
77: {
78: char *c1, *c2;
80: FIXCHAR(parent, plen, c1);
81: FIXCHAR(name, nlen, c2);
82: *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, value);
83: if (*ierr) return;
84: FREECHAR(parent, c1);
85: FREECHAR(name, c2);
86: }
88: PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char *parent, char *name, PetscDataType *datatype, void *defaultValue, void *value, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T plen, PETSC_FORTRAN_CHARLEN_T nlen)
89: {
90: char *c1, *c2;
92: FIXCHAR(parent, plen, c1);
93: FIXCHAR(name, nlen, c2);
94: *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, defaultValue, value);
95: if (*ierr) return;
96: FREECHAR(parent, c1);
97: FREECHAR(name, c2);
98: }
100: PETSC_EXTERN void petscviewerhdf5hasdataset_(PetscViewer *viewer, char *path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
101: {
102: char *c1;
104: FIXCHAR(path, len, c1);
105: *ierr = PetscViewerHDF5HasDataset(*viewer, c1, has);
106: if (*ierr) return;
107: FREECHAR(path, c1);
108: }
110: PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char *path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
111: {
112: char *c1;
114: FIXCHAR(path, len, c1);
115: *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);
116: if (*ierr) return;
117: FREECHAR(path, c1);
118: }
120: PETSC_EXTERN void petscviewerhdf5opengroup_(PetscViewer *viewer, char path[], hid_t *fileId, hid_t *groupId, int *ierr, PETSC_FORTRAN_CHARLEN_T len)
121: {
122: char *c1;
124: FIXCHAR(path, len, c1);
125: *ierr = PetscViewerHDF5OpenGroup(*viewer, c1, fileId, groupId);
126: FREECHAR(path, c1);
127: }
129: PETSC_EXTERN void petscviewerhdf5writegroup_(PetscViewer *viewer, char path[], int *ierr, PETSC_FORTRAN_CHARLEN_T len)
130: {
131: char *c1;
133: FIXCHAR(path, len, c1);
134: *ierr = PetscViewerHDF5WriteGroup(*viewer, c1);
135: FREECHAR(path, c1);
136: }