Actual source code: f90_solaris_old.h

  2: #if !defined (__F90_SOLARIS_OLD_H)
  4: 
  5: typedef struct {
  6:   long lower;   /* starting index of the fortran array */
  7:   long extent;  /* length of the array */
  8:   long mult;    /* in bytes for char,32 bit words for others. Why???? */
  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    100665344
 18: #define F90_INT_ID     35659784
 19: #define F90_DOUBLE_ID  58736640
 20: #define F90_COMPLEX_ID 68190216
 21: #define F90_COOKIE     36864

 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


 30: #define f90_header() \
 31: void*          addr;    /* Pointer to the data */ \
 32: int            sd;      /* sizeof(DataType) in bits */  \
 33: unsigned short cookie;  /* a wierd f90 cookie */ \
 34: unsigned short ndim;    /* No of dimensions */          \
 35: int            id;      /* integer id representing the datatype */ \
 36: int            a,b;     /* unknown stuff - always zero. */

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

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

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

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

 58: #endif