Actual source code: f90_solaris_old.h

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

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

 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


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

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

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

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

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

 59: #endif