xref: /petsc/src/sys/classes/viewer/impls/hdf5/ftn-custom/zhdf5f.c (revision df8639073d6802c28ef7b878c36103415c0702bb)
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
8*df863907SAlex Fikl #define petscviewerhdf5writeattribute_  PETSCVIEWERHDF5WRITEATTRIBUTE
9*df863907SAlex 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
14*df863907SAlex Fikl #define petscviewerhdf5writeattribute_  petscviewerhdf5writeattribute
15*df863907SAlex Fikl #define petscviewerhdf5readattribute_   petscviewerhdf5readattribute
165c6c1daeSBarry Smith #endif
175c6c1daeSBarry Smith 
188cc058d9SJed Brown 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;
22*df863907SAlex 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 
283ef9c667SSatish Balay 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;
32*df863907SAlex Fikl 
333ef9c667SSatish Balay   FIXCHAR(name, len, c1);
343ef9c667SSatish Balay   *ierr = PetscViewerHDF5PushGroup(*viewer, c1);
353ef9c667SSatish Balay   FREECHAR(name, c1);
363ef9c667SSatish Balay }
373ef9c667SSatish Balay 
383ef9c667SSatish Balay 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;
42*df863907SAlex Fikl 
433ef9c667SSatish Balay   *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);
443ef9c667SSatish Balay   *ierr = PetscStrncpy(name, c1, len);
453ef9c667SSatish Balay   FIXRETURNCHAR(PETSC_TRUE,name,len);
463ef9c667SSatish Balay }
47*df863907SAlex Fikl 
48*df863907SAlex Fikl PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5hasattribute_(PetscViewer *viewer, CHAR parent PETSC_MIXED_LEN(plen),
49*df863907SAlex Fikl     CHAR name PETSC_MIXED_LEN(nlen), PetscBool *has, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen))
50*df863907SAlex Fikl {
51*df863907SAlex Fikl    char *c1, *c2;
52*df863907SAlex Fikl 
53*df863907SAlex Fikl    FIXCHAR(parent, plen, c1);
54*df863907SAlex Fikl    FIXCHAR(name, nlen, c2);
55*df863907SAlex Fikl    *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);
56*df863907SAlex Fikl    FREECHAR(parent, c1);
57*df863907SAlex Fikl    FREECHAR(name, c2);
58*df863907SAlex Fikl }
59*df863907SAlex Fikl 
60*df863907SAlex Fikl PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5writeattribute_(PetscViewer *viewer, CHAR parent PETSC_MIXED_LEN(plen),
61*df863907SAlex Fikl     CHAR name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, const void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen))
62*df863907SAlex Fikl {
63*df863907SAlex Fikl    char *c1, *c2;
64*df863907SAlex Fikl 
65*df863907SAlex Fikl    FIXCHAR(parent, plen, c1);
66*df863907SAlex Fikl    FIXCHAR(name, nlen, c2);
67*df863907SAlex Fikl    *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);
68*df863907SAlex Fikl    FREECHAR(parent, c1);
69*df863907SAlex Fikl    FREECHAR(name, c2);
70*df863907SAlex Fikl }
71*df863907SAlex Fikl 
72*df863907SAlex Fikl PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5readattribute_(PetscViewer *viewer, CHAR parent PETSC_MIXED_LEN(plen),
73*df863907SAlex Fikl     CHAR name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen))
74*df863907SAlex Fikl {
75*df863907SAlex Fikl    char *c1, *c2;
76*df863907SAlex Fikl 
77*df863907SAlex Fikl    FIXCHAR(parent, plen, c1);
78*df863907SAlex Fikl    FIXCHAR(name, nlen, c2);
79*df863907SAlex Fikl    *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);
80*df863907SAlex Fikl    FREECHAR(parent, c1);
81*df863907SAlex Fikl    FREECHAR(name, c2);
82*df863907SAlex Fikl }
83