Actual source code: f90_alpha.h

  2: #if !defined (__F90_ALPHA_H)
  4: 
  5: typedef struct {
  6:   long mult;    /* stride in bytes */
  7:   long upper;   /* ending index of the array */
  8:   long lower;   /* starting index of the fortran array */
  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: */

 18: #define F90_INT_ID     3
 19: #define F90_LONG_ID    4
 20: #define F90_DOUBLE_ID  10
 21: #define F90_COMPLEX_ID 13
 22: #define F90_CHAR_ID    14

 24: #if defined(PARCH_linux)
 25: #define A_VAL 5
 26: #else
 27: #define A_VAL 1
 28: #endif

 30: #define B_VAL 10

 32: #if !defined (PETSC_COMPLEX)
 33: #define F90_SCALAR_ID F90_DOUBLE_ID
 34: #else
 35: #define F90_SCALAR_ID F90_COMPLEX_ID
 36: #endif


 39: #define f90_header() \
 40: char           ndim,a;  /* No of dimensions, a=1 */ \
 41: char           id,b;    /* char id representing the datatype, b=0 */ \
 42: int            c;       /* c=0 */ \
 43: long           sd;      /* sizeof(DataType) in bits */  \
 44: void*          addr;    /* Pointer to the data */ \
 45: long           d;       /* d=0 */ \
 46: void*          addr_d;  /* addr-sumof(lower*mult) */

 48: typedef struct {
 49:   f90_header()
 50:   tripple dim[1];
 51: }F90Array1d;

 53: typedef struct {
 54:   f90_header()
 55:   tripple dim[2];   /* dim1,dim2 */
 56: }F90Array2d;

 58: typedef struct {
 59:   f90_header()
 60:   tripple dim[3];   /* dim1,dim2,dim3 */
 61: }F90Array3d;

 63: typedef struct {
 64:   f90_header()
 65:   tripple dim[4];   /* dim1,dim2,dim3,dim4 */
 66: }F90Array4d;


 69: #endif