Actual source code: f90impl.h
4: #include "petsc.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: #if defined (PETSC_HAVE_F90_H)
21: #include PETSC_HAVE_F90_H
22: /* Check if PETSC_HAVE_F90_C is also specified */
23: #if !defined(PETSC_HAVE_F90_C)
24: #error "Both PETSC_HAVE_F90_H and PETSC_HAVE_F90_C flags have to be speficied"
25: #endif
27: #else /* PETSC_HAVE_F90_H */
29: #define F90Array1d void
30: #define F90Array2d void
31: #define F90Array3d void
32: #define F90Array4d void
34: #endif /* PETSC_HAVE_F90_H */
36: EXTERN PetscErrorCode F90Array1dCreate(void*,PetscDataType,PetscInt,PetscInt,F90Array1d* PETSC_F90_2PTR_PROTO_NOVAR);
37: EXTERN PetscErrorCode F90Array1dAccess(F90Array1d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
38: EXTERN PetscErrorCode F90Array1dDestroy(F90Array1d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
39: EXTERN PetscErrorCode F90Array1dGetNextRecord(F90Array1d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
41: EXTERN PetscErrorCode F90Array2dCreate(void*,PetscDataType,PetscInt,PetscInt,PetscInt,PetscInt,F90Array2d* PETSC_F90_2PTR_PROTO_NOVAR);
42: EXTERN PetscErrorCode F90Array2dAccess(F90Array2d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
43: EXTERN PetscErrorCode F90Array2dDestroy(F90Array2d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
44: EXTERN PetscErrorCode F90Array2dGetNextRecord(F90Array2d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
46: EXTERN PetscErrorCode F90Array3dCreate(void*,PetscDataType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,F90Array3d* PETSC_F90_2PTR_PROTO_NOVAR);
47: EXTERN PetscErrorCode F90Array3dAccess(F90Array3d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
48: EXTERN PetscErrorCode F90Array3dDestroy(F90Array3d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
49: EXTERN PetscErrorCode F90Array3dGetNextRecord(F90Array3d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
51: EXTERN PetscErrorCode F90Array4dCreate(void*,PetscDataType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,F90Array4d* PETSC_F90_2PTR_PROTO_NOVAR);
52: EXTERN PetscErrorCode F90Array4dAccess(F90Array4d*,PetscDataType,void** PETSC_F90_2PTR_PROTO_NOVAR);
53: EXTERN PetscErrorCode F90Array4dDestroy(F90Array4d*,PetscDataType PETSC_F90_2PTR_PROTO_NOVAR);
54: EXTERN PetscErrorCode F90Array4dGetNextRecord(F90Array4d*,void** PETSC_F90_2PTR_PROTO_NOVAR);
56: /*
57: EXTERN PetscErrorCode F90Array1dGetInfo(F90Array1d*,PetscDataType*,int*,int*);
58: EXTERN PetscErrorCode F90Array2dGetInfo(F90Array2d*,PetscDataType*,int*,int*,int*,int*);
59: */
61: /*
62: F90Array1dCreate - Given a C pointer to a one dimensional
63: array and its length; this fills in the appropriate Fortran 90
64: pointer data structure.
66: Input Parameters:
67: + array - regular C pointer (address)
68: . type - DataType of the array
69: . start - starting index of the array
70: - len - length of array (in items)
72: Output Parameters:
73: . ptr - Fortran 90 pointer
74: */
76: #endif /* PETSC_USING_F90 */
78: #endif