Actual source code: ziscoloringf90.c
1: #include <petscis.h>
2: #include <petsc/private/f90impl.h>
4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
5: #define iscoloringgetisf90_ ISCOLORINGGETISF90
6: #define iscoloringrestoreisf90_ ISCOLORINGRESTOREISF90
7: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
8: #define iscoloringgetisf90_ iscoloringgetisf90
9: #define iscoloringrestoreisf90_ iscoloringrestoreisf90
10: #endif
12: PETSC_EXTERN void iscoloringgetisf90_(ISColoring *iscoloring, PetscCopyMode mode, PetscInt *n, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
13: {
14: IS *lis;
15: PetscFortranAddr *newisint;
16: int i;
18: *__ierr = ISColoringGetIS(*iscoloring, mode, n, &lis);
19: if (*__ierr) return;
20: *__ierr = PetscMalloc1(*n, &newisint);
21: if (*__ierr) return;
22: for (i = 0; i < *n; i++) newisint[i] = (PetscFortranAddr)lis[i];
23: *__ierr = F90Array1dCreate(newisint, MPIU_FORTRANADDR, 1, *n, ptr PETSC_F90_2PTR_PARAM(ptrd));
24: }
26: PETSC_EXTERN void iscoloringrestoreisf90_(ISColoring *iscoloring, PetscCopyMode mode, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
27: {
28: PetscFortranAddr *is;
30: *__ierr = F90Array1dAccess(ptr, MPIU_FORTRANADDR, (void **)&is PETSC_F90_2PTR_PARAM(ptrd));
31: if (*__ierr) return;
32: *__ierr = F90Array1dDestroy(ptr, MPIU_FORTRANADDR PETSC_F90_2PTR_PARAM(ptrd));
33: if (*__ierr) return;
34: *__ierr = ISColoringRestoreIS(*iscoloring, mode, (IS **)is);
35: if (*__ierr) return;
36: *__ierr = PetscFree(is);
37: }