Actual source code: f90impl.h
petsc-3.10.5 2019-03-28
4: #include <petsc/private/fortranimpl.h>
6: /* PGI compilers pass in f90 pointers as 2 arguments */
7: #if defined(PETSC_HAVE_F90_2PTR_ARG)
8: #define PETSC_F90_2PTR_PROTO_NOVAR ,void*
9: #define PETSC_F90_2PTR_PROTO(ptr) ,void* ptr
10: #define PETSC_F90_2PTR_PARAM(ptr) , ptr
11: #else
12: #define PETSC_F90_2PTR_PROTO_NOVAR
13: #define PETSC_F90_2PTR_PROTO(ptr)
14: #define PETSC_F90_2PTR_PARAM(ptr)
15: #endif
17: #if defined(PETSC_USING_F90)
18: typedef struct { char dummy; } F90Array1d;
19: typedef struct { char dummy; } F90Array2d;
20: typedef struct { char dummy; } F90Array3d;
21: typedef struct { char dummy; } F90Array4d;
23: PETSC_EXTERN PetscErrorCode F90Array1dCreate(void*,MPI_Datatype,PetscInt,PetscInt,F90Array1d* PETSC_F90_2PTR_PROTO_NOVAR);
24: PETSC_EXTERN PetscErrorCode F90Array1dAccess(F90Array1d*,MPI_Datatype,void** PETSC_F90_2PTR_PROTO_NOVAR);
25: PETSC_EXTERN PetscErrorCode F90Array1dDestroy(F90Array1d*,MPI_Datatype PETSC_F90_2PTR_PROTO_NOVAR);
26: PETSC_EXTERN PetscErrorCode F90Array1dGetNextRecord(F90Array1d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
28: PETSC_EXTERN PetscErrorCode F90Array2dCreate(void*,MPI_Datatype,PetscInt,PetscInt,PetscInt,PetscInt,F90Array2d* PETSC_F90_2PTR_PROTO_NOVAR);
29: PETSC_EXTERN PetscErrorCode F90Array2dAccess(F90Array2d*,MPI_Datatype,void** PETSC_F90_2PTR_PROTO_NOVAR);
30: PETSC_EXTERN PetscErrorCode F90Array2dDestroy(F90Array2d*,MPI_Datatype PETSC_F90_2PTR_PROTO_NOVAR);
31: PETSC_EXTERN PetscErrorCode F90Array2dGetNextRecord(F90Array2d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
33: PETSC_EXTERN PetscErrorCode F90Array3dCreate(void*,MPI_Datatype,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,F90Array3d* PETSC_F90_2PTR_PROTO_NOVAR);
34: PETSC_EXTERN PetscErrorCode F90Array3dAccess(F90Array3d*,MPI_Datatype,void** PETSC_F90_2PTR_PROTO_NOVAR);
35: PETSC_EXTERN PetscErrorCode F90Array3dDestroy(F90Array3d*,MPI_Datatype PETSC_F90_2PTR_PROTO_NOVAR);
36: PETSC_EXTERN PetscErrorCode F90Array3dGetNextRecord(F90Array3d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
38: PETSC_EXTERN PetscErrorCode F90Array4dCreate(void*,MPI_Datatype,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,F90Array4d* PETSC_F90_2PTR_PROTO_NOVAR);
39: PETSC_EXTERN PetscErrorCode F90Array4dAccess(F90Array4d*,MPI_Datatype,void** PETSC_F90_2PTR_PROTO_NOVAR);
40: PETSC_EXTERN PetscErrorCode F90Array4dDestroy(F90Array4d*,MPI_Datatype PETSC_F90_2PTR_PROTO_NOVAR);
41: PETSC_EXTERN PetscErrorCode F90Array4dGetNextRecord(F90Array4d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
44: /*
45: F90Array1dCreate - Given a C pointer to a one dimensional
46: array and its length; this fills in the appropriate Fortran 90
47: pointer data structure.
49: Input Parameters:
50: + array - regular C pointer (address)
51: . type - DataType of the array
52: . start - starting index of the array
53: - len - length of array (in items)
55: Output Parameters:
56: . ptr - Fortran 90 pointer
57: */
59: #endif /* PETSC_USING_F90 */
60: #endif