1 #include <petsc/private/ftnimpl.h> 2 #include <petscviewer.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define petscviewerstringopen_ PETSCVIEWERSTRINGOPEN 6 #define petscviewerstringsetstring_ PETSCVIEWERSTRINGSETSTRING 7 #define petscviewerstringgetstringread_ PETSCVIEWERSTRINGGETSTRINGREAD 8 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 9 #define petscviewerstringopen_ petscviewerstringopen 10 #define petscviewerstringsetstring_ petscviewerstringsetstring 11 #define petscviewerstringgetstringread_ petscviewerstringgetstringread 12 #endif 13 14 PETSC_EXTERN void petscviewerstringopen_(MPI_Comm *comm, char *name, PetscViewer *str, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1) 15 { 16 PETSC_FORTRAN_OBJECT_CREATE(str); 17 *ierr = PetscViewerStringOpen(MPI_Comm_f2c(*(MPI_Fint *)&*comm), name, len1, str); 18 } 19 20 PETSC_EXTERN void petscviewerstringsetstring_(PetscViewer *str, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1) 21 { 22 PetscViewer v_a = PetscPatchDefaultViewers(str); 23 *ierr = PetscViewerStringSetString(v_a, name, len1); 24 } 25 26 PETSC_EXTERN void petscviewerstringgetstringread_(PetscViewer *a, char b[], PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T l_b) 27 { 28 size_t len; 29 char *c_b = PETSC_NULLPTR; 30 PetscViewer v_a = PetscPatchDefaultViewers(a); 31 *ierr = PetscViewerStringGetStringRead(v_a, (const char **)&c_b, &len); 32 if (*ierr) return; 33 *ierr = PetscStrncpy((char *)b, c_b, l_b); 34 if (*ierr) return; 35 } 36