Actual source code: f90_rs6000.h

  1: /* $Id: f90_rs6000.h,v 1.7 2000/09/22 18:54:10 balay Exp $ */

  3: #if !defined (__F90_RS6000_H)

  6: typedef struct {
  7:   long lower;   /* starting index of the fortran array */
  8:   long extent;  /* length of the array */
  9:   long mult;    /* in bytes */
 10: } tripple;

 12: /*
 13:   The following constants are just
 14:   guesses. The program behavies strangly
 15:   if these constants are not set in
 16:   the f90 pointer
 17: */
 18: #define F90_CHAR_ID    770
 19: #define F90_INT_ID     781
 20: #define F90_DOUBLE_ID  782
 21: #define F90_COMPLEX_ID 783
 22: #define F90_COOKIE     20481

 24: #if !defined (PETSC_COMPLEX)
 25: #define F90_SCALAR_ID F90_DOUBLE_ID
 26: #else
 27: #define F90_SCALAR_ID F90_COMPLEX_ID
 28: #endif

 30: #define f90_header() \
 31: void* addr;    /* Pointer to the data/array */ \
 32: short id;      /* integer id representing the datatype */ \
 33: short cookie;  /* a wiered f90 cookie */ \
 34: int   sd;      /* sizeof(DataType) */          \
 35: int   ndim;    /* No of dimentions */          \
 36: int   sum_d;   /* -sumof(lower*mult) */

 38: typedef struct {
 39:   f90_header()
 40:   tripple dim[1];
 41: }F90Array1d;

 43: typedef struct {
 44:   f90_header()
 45:   tripple dim[2];   /* dim2,dim1 */
 46: }F90Array2d;

 48: typedef struct {
 49:   f90_header()
 50:   tripple dim[3];   /* dim3,dim2,dim1 */
 51: }F90Array3d;

 53: typedef struct {
 54:   f90_header()
 55:   tripple dim[4];   /* dim4,dim3,dim2,dim1 */
 56: }F90Array4d;

 58: #endif