19
19
namespace Fortran ::ISO {
20
20
extern " C" {
21
21
22
- void *CFI_address (
22
+ RT_EXT_API_GROUP_BEGIN
23
+
24
+ RT_API_ATTRS void *CFI_address (
23
25
const CFI_cdesc_t *descriptor, const CFI_index_t subscripts[]) {
24
26
char *p{static_cast <char *>(descriptor->base_addr )};
25
27
const CFI_rank_t rank{descriptor->rank };
@@ -30,8 +32,9 @@ void *CFI_address(
30
32
return p;
31
33
}
32
34
33
- int CFI_allocate (CFI_cdesc_t *descriptor, const CFI_index_t lower_bounds[],
34
- const CFI_index_t upper_bounds[], std::size_t elem_len) {
35
+ RT_API_ATTRS int CFI_allocate (CFI_cdesc_t *descriptor,
36
+ const CFI_index_t lower_bounds[], const CFI_index_t upper_bounds[],
37
+ std::size_t elem_len) {
35
38
if (!descriptor) {
36
39
return CFI_INVALID_DESCRIPTOR;
37
40
}
@@ -81,7 +84,7 @@ int CFI_allocate(CFI_cdesc_t *descriptor, const CFI_index_t lower_bounds[],
81
84
return CFI_SUCCESS;
82
85
}
83
86
84
- int CFI_deallocate (CFI_cdesc_t *descriptor) {
87
+ RT_API_ATTRS int CFI_deallocate (CFI_cdesc_t *descriptor) {
85
88
if (!descriptor) {
86
89
return CFI_INVALID_DESCRIPTOR;
87
90
}
@@ -101,7 +104,7 @@ int CFI_deallocate(CFI_cdesc_t *descriptor) {
101
104
return CFI_SUCCESS;
102
105
}
103
106
104
- int CFI_establish (CFI_cdesc_t *descriptor, void *base_addr,
107
+ RT_API_ATTRS int CFI_establish (CFI_cdesc_t *descriptor, void *base_addr,
105
108
CFI_attribute_t attribute, CFI_type_t type, std::size_t elem_len,
106
109
CFI_rank_t rank, const CFI_index_t extents[]) {
107
110
int cfiStatus{VerifyEstablishParameters (descriptor, base_addr, attribute,
@@ -121,7 +124,7 @@ int CFI_establish(CFI_cdesc_t *descriptor, void *base_addr,
121
124
return CFI_SUCCESS;
122
125
}
123
126
124
- int CFI_is_contiguous (const CFI_cdesc_t *descriptor) {
127
+ RT_API_ATTRS int CFI_is_contiguous (const CFI_cdesc_t *descriptor) {
125
128
CFI_index_t bytes = descriptor->elem_len ;
126
129
for (int j{0 }; j < descriptor->rank ; ++j) {
127
130
if (bytes != descriptor->dim [j].sm ) {
@@ -132,7 +135,7 @@ int CFI_is_contiguous(const CFI_cdesc_t *descriptor) {
132
135
return 1 ;
133
136
}
134
137
135
- int CFI_section (CFI_cdesc_t *result, const CFI_cdesc_t *source,
138
+ RT_API_ATTRS int CFI_section (CFI_cdesc_t *result, const CFI_cdesc_t *source,
136
139
const CFI_index_t lower_bounds[], const CFI_index_t upper_bounds[],
137
140
const CFI_index_t strides[]) {
138
141
CFI_index_t extent[CFI_MAX_RANK];
@@ -208,7 +211,7 @@ int CFI_section(CFI_cdesc_t *result, const CFI_cdesc_t *source,
208
211
return CFI_SUCCESS;
209
212
}
210
213
211
- int CFI_select_part (CFI_cdesc_t *result, const CFI_cdesc_t *source,
214
+ RT_API_ATTRS int CFI_select_part (CFI_cdesc_t *result, const CFI_cdesc_t *source,
212
215
std::size_t displacement, std::size_t elem_len) {
213
216
if (!result || !source) {
214
217
return CFI_INVALID_DESCRIPTOR;
@@ -243,7 +246,7 @@ int CFI_select_part(CFI_cdesc_t *result, const CFI_cdesc_t *source,
243
246
return CFI_SUCCESS;
244
247
}
245
248
246
- int CFI_setpointer (CFI_cdesc_t *result, const CFI_cdesc_t *source,
249
+ RT_API_ATTRS int CFI_setpointer (CFI_cdesc_t *result, const CFI_cdesc_t *source,
247
250
const CFI_index_t lower_bounds[]) {
248
251
if (!result) {
249
252
return CFI_INVALID_DESCRIPTOR;
@@ -285,5 +288,7 @@ int CFI_setpointer(CFI_cdesc_t *result, const CFI_cdesc_t *source,
285
288
}
286
289
return CFI_SUCCESS;
287
290
}
291
+
292
+ RT_EXT_API_GROUP_END
288
293
} // extern "C"
289
294
} // namespace Fortran::ISO
0 commit comments