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