Actual source code: f90impl.h
4: #include "petscsys.h"
7: /* PGI compilers pass in f90 pointers as 2 arguments */
8: #if defined(PETSC_HAVE_F90_2PTR_ARG)
9: #define PETSC_F90_2PTR_PROTO_NOVAR ,void*
10: #define PETSC_F90_2PTR_PROTO(ptr) ,void* ptr
11: #define PETSC_F90_2PTR_PARAM(ptr) , ptr
12: #else
13: #define PETSC_F90_2PTR_PROTO_NOVAR
14: #define PETSC_F90_2PTR_PROTO(ptr)
15: #define PETSC_F90_2PTR_PARAM(ptr)
16: #endif
18: #if defined (PETSC_USING_F90)
20: #define F90Array1d void
21: #define F90Array2d void
22: #define F90Array3d void
23: #define F90Array4d void
25: EXTERN PetscErrorCode F90Array1dCreate(void*,PetscDataType,PetscInt,PetscInt,F90Array1d* PETSC_F90_2PTR_PROTO_NOVAR);
26: EXTERN PetscErrorCode F90Array1dAccess(F90Array1d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
27: EXTERN PetscErrorCode F90Array1dDestroy(F90Array1d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
28: EXTERN PetscErrorCode F90Array1dGetNextRecord(F90Array1d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
30: EXTERN PetscErrorCode F90Array2dCreate(void*,PetscDataType,PetscInt,PetscInt,PetscInt,PetscInt,F90Array2d* PETSC_F90_2PTR_PROTO_NOVAR);
31: EXTERN PetscErrorCode F90Array2dAccess(F90Array2d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
32: EXTERN PetscErrorCode F90Array2dDestroy(F90Array2d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
33: EXTERN PetscErrorCode F90Array2dGetNextRecord(F90Array2d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
35: EXTERN PetscErrorCode F90Array3dCreate(void*,PetscDataType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,F90Array3d* PETSC_F90_2PTR_PROTO_NOVAR);
36: EXTERN PetscErrorCode F90Array3dAccess(F90Array3d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
37: EXTERN PetscErrorCode F90Array3dDestroy(F90Array3d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
38: EXTERN PetscErrorCode F90Array3dGetNextRecord(F90Array3d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
40: EXTERN PetscErrorCode F90Array4dCreate(void*,PetscDataType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,F90Array4d* PETSC_F90_2PTR_PROTO_NOVAR);
41: EXTERN PetscErrorCode F90Array4dAccess(F90Array4d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
42: EXTERN PetscErrorCode F90Array4dDestroy(F90Array4d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
43: EXTERN PetscErrorCode F90Array4dGetNextRecord(F90Array4d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
45: /*
46: EXTERN PetscErrorCode F90Array1dGetInfo(F90Array1d*,PetscDataType*,int*,int*);
47: EXTERN PetscErrorCode F90Array2dGetInfo(F90Array2d*,PetscDataType*,int*,int*,int*,int*);
48: */
50: /*
51: F90Array1dCreate - Given a C pointer to a one dimensional
52: array and its length; this fills in the appropriate Fortran 90
53: pointer data structure.
55: Input Parameters:
56: + array - regular C pointer (address)
57: . type - DataType of the array
58: . start - starting index of the array
59: - len - length of array (in items)
61: Output Parameters:
62: . ptr - Fortran 90 pointer
63: */
65: #endif /* PETSC_USING_F90 */
67: #endif