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