Actual source code: zblockf.c

      1: #include <petsc/private/fortranimpl.h>
      2: #include <petscis.h>

      4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
      5:   #define isblockgetindices_     ISBLOCKGETINDICES
      6:   #define isblockrestoreindices_ ISBLOCKRESTOREINDICES
      7: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
      8:   #define isblockgetindices_     isblockgetindices
      9:   #define isblockrestoreindices_ isblockrestoreindices
     10: #endif

     12: PETSC_EXTERN void isblockgetindices_(IS *x, PetscInt *fa, size_t *ia, PetscErrorCode *ierr)
     13: {
     14:   const PetscInt *lx;

     16:   *ierr = ISBlockGetIndices(*x, &lx);
     17:   if (*ierr) return;
     18:   *ia = PetscIntAddressToFortran(fa, (PetscInt *)lx);
     19: }

     21: PETSC_EXTERN void isblockrestoreindices_(IS *x, PetscInt *fa, size_t *ia, PetscErrorCode *ierr)
     22: {
     23:   const PetscInt *lx = PetscIntAddressFromFortran(fa, *ia);
     24:   *ierr              = ISBlockRestoreIndices(*x, &lx);
     25: }