xref: /petsc/src/sys/classes/viewer/impls/hdf5/ftn-custom/zhdf5f.c (revision 390e1bf27627d887df99a9f4d0d0ad68037f55ec)
1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h>
2d70abbfaSBarry Smith #include <petscviewerhdf5.h>
35c6c1daeSBarry Smith 
45c6c1daeSBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS)
55c6c1daeSBarry Smith #define petscviewerhdf5open_            PETSCVIEWERHDF5OPEN
63ef9c667SSatish Balay #define petscviewerhdf5pushgroup_       PETSCVIEWERHDF5PUSHGROUP
73ef9c667SSatish Balay #define petscviewerhdf5getgroup_        PETSCVIEWERHDF5GETGROUP
8df863907SAlex Fikl #define petscviewerhdf5writeattribute_  PETSCVIEWERHDF5WRITEATTRIBUTE
9df863907SAlex Fikl #define petscviewerhdf5readattribute_   PETSCVIEWERHDF5READATTRIBUTE
105c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
115c6c1daeSBarry Smith #define petscviewerhdf5open_            petscviewerhdf5open
123ef9c667SSatish Balay #define petscviewerhdf5pushgroup_       petscviewerhdf5pushgroup
133ef9c667SSatish Balay #define petscviewerhdf5getgroup_        petscviewerhdf5getgroup
14df863907SAlex Fikl #define petscviewerhdf5writeattribute_  petscviewerhdf5writeattribute
15df863907SAlex Fikl #define petscviewerhdf5readattribute_   petscviewerhdf5readattribute
165c6c1daeSBarry Smith #endif
175c6c1daeSBarry Smith 
18*390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5open_(MPI_Comm *comm, char* name PETSC_MIXED_LEN(len), PetscFileMode *type,
195c6c1daeSBarry Smith     PetscViewer *binv, PetscErrorCode *ierr PETSC_END_LEN(len))
205c6c1daeSBarry Smith {
215c6c1daeSBarry Smith   char *c1;
22df863907SAlex Fikl 
235c6c1daeSBarry Smith   FIXCHAR(name, len, c1);
245c6c1daeSBarry Smith   *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);
255c6c1daeSBarry Smith   FREECHAR(name, c1);
265c6c1daeSBarry Smith }
275c6c1daeSBarry Smith 
28*390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len),
293ef9c667SSatish Balay     PetscErrorCode *ierr PETSC_END_LEN(len))
303ef9c667SSatish Balay {
313ef9c667SSatish Balay   char *c1;
32df863907SAlex Fikl 
333ef9c667SSatish Balay   FIXCHAR(name, len, c1);
343ef9c667SSatish Balay   *ierr = PetscViewerHDF5PushGroup(*viewer, c1);
353ef9c667SSatish Balay   FREECHAR(name, c1);
363ef9c667SSatish Balay }
373ef9c667SSatish Balay 
38*390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5getgroup_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len),
393ef9c667SSatish Balay     PetscErrorCode *ierr PETSC_END_LEN(len))
403ef9c667SSatish Balay {
413ef9c667SSatish Balay   const char *c1;
42df863907SAlex Fikl 
433ef9c667SSatish Balay   *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);
443ef9c667SSatish Balay   *ierr = PetscStrncpy(name, c1, len);
453ef9c667SSatish Balay   FIXRETURNCHAR(PETSC_TRUE,name,len);
463ef9c667SSatish Balay }
47df863907SAlex Fikl 
48*390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen),
49*390e1bf2SBarry Smith     char* name PETSC_MIXED_LEN(nlen), PetscBool *has, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen))
50df863907SAlex Fikl {
51df863907SAlex Fikl    char *c1, *c2;
52df863907SAlex Fikl 
53df863907SAlex Fikl    FIXCHAR(parent, plen, c1);
54df863907SAlex Fikl    FIXCHAR(name, nlen, c2);
55df863907SAlex Fikl    *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);
56df863907SAlex Fikl    FREECHAR(parent, c1);
57df863907SAlex Fikl    FREECHAR(name, c2);
58df863907SAlex Fikl }
59df863907SAlex Fikl 
60*390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen),
61*390e1bf2SBarry Smith     char* name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, const void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen))
62df863907SAlex Fikl {
63df863907SAlex Fikl    char *c1, *c2;
64df863907SAlex Fikl 
65df863907SAlex Fikl    FIXCHAR(parent, plen, c1);
66df863907SAlex Fikl    FIXCHAR(name, nlen, c2);
67df863907SAlex Fikl    *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);
68df863907SAlex Fikl    FREECHAR(parent, c1);
69df863907SAlex Fikl    FREECHAR(name, c2);
70df863907SAlex Fikl }
71df863907SAlex Fikl 
72*390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen),
73*390e1bf2SBarry Smith     char* name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen))
74df863907SAlex Fikl {
75df863907SAlex Fikl    char *c1, *c2;
76df863907SAlex Fikl 
77df863907SAlex Fikl    FIXCHAR(parent, plen, c1);
78df863907SAlex Fikl    FIXCHAR(name, nlen, c2);
79df863907SAlex Fikl    *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);
80df863907SAlex Fikl    FREECHAR(parent, c1);
81df863907SAlex Fikl    FREECHAR(name, c2);
82df863907SAlex Fikl }
83