Actual source code: f90_rs6000.h

      2: #if !defined (__F90_RS6000_H)

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

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

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

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

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

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

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

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

     57: #endif