Actual source code: zf90mat.c

  2: #include "petscmat.h"
  3: #include "petscf90.h"

  5: #ifdef PETSC_HAVE_FORTRAN_CAPS
  6: #define matgetarrayf90_            MATGETARRAYF90
  7: #define matrestorearrayf90_        MATRESTOREARRAYF90
  8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
  9: #define matgetarrayf90_            matgetarrayf90
 10: #define matrestorearrayf90_        matrestorearrayf90
 11: #endif

 14: void PETSC_STDCALL matgetarrayf90_(Mat *mat,F90Array2d *ptr,int *ierr)
 15: {
 16:   PetscScalar *fa;
 17:   int    m,n;
 18:   *MatGetArray(*mat,&fa);       if (*ierr) return;
 19:   *MatGetLocalSize(*mat,&m,&n); if (*ierr) return;
 20:   *F90Array2dCreate(fa,PETSC_SCALAR,1,m,1,n,ptr);
 21: }
 22: void PETSC_STDCALL matrestorearrayf90_(Mat *mat,F90Array2d *ptr,int *ierr)
 23: {
 24:   PetscScalar *fa;
 25:   *F90Array2dAccess(ptr,(void **)&fa);if (*ierr) return;
 26:   *F90Array2dDestroy(ptr);if (*ierr) return;
 27:   *MatRestoreArray(*mat,&fa);
 28: }