File: ISO_Fortran_binding.h

package info (click to toggle)
openmpi 2.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 99,912 kB
  • ctags: 55,589
  • sloc: ansic: 525,999; f90: 18,307; makefile: 12,062; sh: 6,583; java: 6,278; asm: 3,515; cpp: 2,227; perl: 2,136; python: 1,350; lex: 734; fortran: 52; tcl: 12
file content (98 lines) | stat: -rw-r--r-- 3,316 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/************** Example ISO_Fortran_binding.h ********************/
#include <stdint.h>
#include <stddef.h>

/* Struct CFI_dim_t for triples of bound, extent and stride information */

typedef struct {
         intptr_t  lower_bound,
                   extent,
                   sm;
} CFI_dim_t;

typedef struct {
        intptr_t  lower_bound,
                  upper_bound,
                  stride;
}  CFI_bounds_t;


/* Maximum rank supported by the companion Fortran processor */

/* Changed from 15 to F2003 value of 7 (CER) */
#define CFI_MAX_RANK  7

/* Struct CFI_cdesc_t for holding all the information about a
   descriptor-based Fortran object */

typedef struct {
  void *        base_addr;          /* base address of object                      */
  size_t        elem_len;           /* length of one element, in bytes             */
  int           rank;               /* object rank, 0 .. CF_MAX_RANK               */
  int           type;               /* identifier for type of object               */
  int           attribute;          /* object attribute: 0..2, or -1               */
  int           state;              /* allocation/association state: 0 or 1        */
//Removed (CER)
//void *        fdesc;              /* pointer to corresponding Fortran descriptor */
  CFI_dim_t     dim[CFI_MAX_RANK];  /* dimension triples                           */
} CFI_cdesc_t;


/* function prototypes */

int CFI_update_cdesc ( CFI_cdesc_t * );

int CFI_update_fdesc ( CFI_cdesc_t * );

int CFI_allocate     ( CFI_cdesc_t *, const CFI_bounds_t bounds[] );

int CFI_deallocate   ( CFI_cdesc_t * );

int CFI_is_contiguous   ( const CFI_cdesc_t *, _Bool * );

int CFI_bounds_to_cdesc ( const CFI_bounds_t bounds[] , CFI_cdesc_t * );

int CFI_cdesc_to_bounds ( const CFI_cdesc_t * , CFI_bounds_t bounds[] );


/* Sympolic names for attributes of objects   */

#define CFI_attribute_assumed         0
#define CFI_attribute_allocatable     1
#define CFI_attribute_pointer         2

/* Symbolic names for type identifiers */

#define CFI_type_unknown               0
#define CFI_type_struct              100
#define CFI_type_signed_char           1
#define CFI_type_short                 3
#define CFI_type_int                   5
#define CFI_type_long                  7
#define CFI_type_long_long             9
#define CFI_type_size_t               11
#define CFI_type_int8_t               12
#define CFI_type_int16_t              14
#define CFI_type_int32_t              16
#define CFI_type_int64_t              18
#define CFI_type_int_least8_t         20
#define CFI_type_int_least16_t        22
#define CFI_type_int_least32_t        24
#define CFI_type_int_least64_t        26
#define CFI_type_int_fast8_t          28
#define CFI_type_int_fast16_t         30
#define CFI_type_int_fast32_t         32
#define CFI_type_int_fast64_t         34
#define CFI_type_intmax_t             36
#define CFI_type_intptr_t             37
#define CFI_type_float                38
#define CFI_type_double               39
#define CFI_type_long_double          40
#define CFI_type_float_Complex        41
#define CFI_type_double_Complex       42
#define CFI_type_long_double_Complex  43
#define CFI_type_Bool                 44
#define CFI_type_char                 45

/* End of Example ISO_Fortran_binding.h */