48#include "fc_feature_defs.inc"
53 USE xt_core,
ONLY:
xt_stripe, i2, i4, i8, xt_abort
55 USE iso_c_binding,
ONLY: c_ptr, c_int
60 MODULE PROCEDURE xt_idxstripes_new_s
61 MODULE PROCEDURE xt_idxstripes_new_a1d
62 MODULE PROCEDURE xt_idxstripes_new_a1d_i2
63 MODULE PROCEDURE xt_idxstripes_new_a1d_i4
64 MODULE PROCEDURE xt_idxstripes_new_a1d_i8
65 MODULE PROCEDURE xt_idxstripes_new_a2d
66 MODULE PROCEDURE xt_idxstripes_new_a2d_i2
67 MODULE PROCEDURE xt_idxstripes_new_a2d_i4
68 MODULE PROCEDURE xt_idxstripes_new_a2d_i8
69 MODULE PROCEDURE xt_idxstripes_new_a3d
70 MODULE PROCEDURE xt_idxstripes_new_a3d_i2
71 MODULE PROCEDURE xt_idxstripes_new_a3d_i4
72 MODULE PROCEDURE xt_idxstripes_new_a3d_i8
73 MODULE PROCEDURE xt_idxstripes_new_a4d
74 MODULE PROCEDURE xt_idxstripes_new_a4d_i2
75 MODULE PROCEDURE xt_idxstripes_new_a4d_i4
76 MODULE PROCEDURE xt_idxstripes_new_a4d_i8
77 MODULE PROCEDURE xt_idxstripes_new_a5d
78 MODULE PROCEDURE xt_idxstripes_new_a5d_i2
79 MODULE PROCEDURE xt_idxstripes_new_a5d_i4
80 MODULE PROCEDURE xt_idxstripes_new_a5d_i8
81 MODULE PROCEDURE xt_idxstripes_new_a6d
82 MODULE PROCEDURE xt_idxstripes_new_a6d_i2
83 MODULE PROCEDURE xt_idxstripes_new_a6d_i4
84 MODULE PROCEDURE xt_idxstripes_new_a6d_i8
85 MODULE PROCEDURE xt_idxstripes_new_a7d
86 MODULE PROCEDURE xt_idxstripes_new_a7d_i2
87 MODULE PROCEDURE xt_idxstripes_new_a7d_i4
88 MODULE PROCEDURE xt_idxstripes_new_a7d_i8
92 FUNCTION xt_idxstripes_new_c(stripes, num_stripes) &
93 bind(c, name=
'xt_idxstripes_new') result(res_ptr)
97 INTEGER(c_int),
VALUE,
INTENT(in) :: num_stripes
98 TYPE(c_ptr) :: res_ptr
99 END FUNCTION xt_idxstripes_new_c
104 CHARACTER(len=*),
PARAMETER :: filename =
'xt_idxstripes_f.f90'
107 FUNCTION xt_idxstripes_new_s(stripe)
RESULT(res)
111 res = xt_idxlist_c2f(xt_idxstripes_new_c((/ stripe /), 1_c_int))
112 END FUNCTION xt_idxstripes_new_s
114 FUNCTION xt_idxstripes_new_a1d(stripes)
RESULT(res)
115 TYPE(
xt_stripe),
INTENT(in) :: stripes(:)
118 INTEGER(c_int) :: num_stripes_c
120 IF (
SIZE(stripes) > huge(num_stripes_c)) &
121 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
122 num_stripes_c = int(
SIZE(stripes), c_int)
123 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
124 END FUNCTION xt_idxstripes_new_a1d
126 FUNCTION xt_idxstripes_new_a1d_i2(stripes, num_stripes)
RESULT(res)
127 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
128 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
131 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
132 int(num_stripes, c_int)))
133 END FUNCTION xt_idxstripes_new_a1d_i2
135 FUNCTION xt_idxstripes_new_a1d_i4(stripes, num_stripes)
RESULT(res)
136 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
137 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
140 INTEGER(c_int) :: num_stripes_c
142 IF (num_stripes > huge(num_stripes_c)) &
143 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
144 num_stripes_c = int(num_stripes, c_int)
145 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
146 END FUNCTION xt_idxstripes_new_a1d_i4
148 FUNCTION xt_idxstripes_new_a1d_i8(stripes, num_stripes)
RESULT(res)
149 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
150 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
153 INTEGER(c_int) :: num_stripes_c
155 IF (num_stripes > huge(num_stripes_c)) &
156 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
157 num_stripes_c = int(num_stripes, c_int)
158 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
159 END FUNCTION xt_idxstripes_new_a1d_i8
161 FUNCTION xt_idxstripes_new_a2d(stripes)
RESULT(res)
162 TYPE(
xt_stripe),
INTENT(in) :: stripes(:,:)
165 INTEGER(c_int) :: num_stripes_c
167 IF (
SIZE(stripes) > huge(num_stripes_c)) &
168 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
169 num_stripes_c = int(
SIZE(stripes), c_int)
170 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
171 END FUNCTION xt_idxstripes_new_a2d
173 FUNCTION xt_idxstripes_new_a2d_i2(stripes, num_stripes)
RESULT(res)
174 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,*)
175 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
178 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
179 int(num_stripes, c_int)))
180 END FUNCTION xt_idxstripes_new_a2d_i2
182 FUNCTION xt_idxstripes_new_a2d_i4(stripes, num_stripes)
RESULT(res)
183 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,*)
184 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
186 INTEGER(c_int) :: num_stripes_c
188 IF (num_stripes > huge(num_stripes_c)) &
189 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
190 num_stripes_c = int(num_stripes, c_int)
191 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
192 END FUNCTION xt_idxstripes_new_a2d_i4
194 FUNCTION xt_idxstripes_new_a2d_i8(stripes, num_stripes)
RESULT(res)
195 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,*)
196 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
199 INTEGER(c_int) :: num_stripes_c
201 IF (num_stripes > huge(num_stripes_c)) &
202 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
203 num_stripes_c = int(num_stripes, c_int)
204 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
205 END FUNCTION xt_idxstripes_new_a2d_i8
207 FUNCTION xt_idxstripes_new_a3d(stripes)
RESULT(res)
208 TYPE(
xt_stripe),
INTENT(in) :: stripes(:,:,:)
211 INTEGER(c_int) :: num_stripes_c
213 IF (
SIZE(stripes) > huge(num_stripes_c)) &
214 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
215 num_stripes_c = int(
SIZE(stripes), c_int)
216 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
217 END FUNCTION xt_idxstripes_new_a3d
219 FUNCTION xt_idxstripes_new_a3d_i2(stripes, num_stripes)
RESULT(res)
220 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,*)
221 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
224 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
225 int(num_stripes, c_int)))
226 END FUNCTION xt_idxstripes_new_a3d_i2
228 FUNCTION xt_idxstripes_new_a3d_i4(stripes, num_stripes)
RESULT(res)
229 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,*)
230 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
233 INTEGER(c_int) :: num_stripes_c
235 IF (num_stripes > huge(num_stripes_c)) &
236 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
237 num_stripes_c = int(num_stripes, c_int)
238 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
239 END FUNCTION xt_idxstripes_new_a3d_i4
241 FUNCTION xt_idxstripes_new_a3d_i8(stripes, num_stripes)
RESULT(res)
242 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,*)
243 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
246 INTEGER(c_int) :: num_stripes_c
248 IF (num_stripes > huge(num_stripes_c)) &
249 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
250 num_stripes_c = int(num_stripes, c_int)
251 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
252 END FUNCTION xt_idxstripes_new_a3d_i8
254 FUNCTION xt_idxstripes_new_a4d(stripes)
RESULT(res)
255 TYPE(
xt_stripe),
INTENT(in) :: stripes(:,:,:,:)
258 INTEGER(c_int) :: num_stripes_c
260 IF (
SIZE(stripes) > huge(num_stripes_c)) &
261 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
262 num_stripes_c = int(
SIZE(stripes), c_int)
263 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
264 END FUNCTION xt_idxstripes_new_a4d
266 FUNCTION xt_idxstripes_new_a4d_i2(stripes, num_stripes)
RESULT(res)
267 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,*)
268 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
271 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
272 int(num_stripes, c_int)))
273 END FUNCTION xt_idxstripes_new_a4d_i2
275 FUNCTION xt_idxstripes_new_a4d_i4(stripes, num_stripes)
RESULT(res)
276 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,*)
277 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
280 INTEGER(c_int) :: num_stripes_c
282 IF (num_stripes > huge(num_stripes_c)) &
283 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
284 num_stripes_c = int(num_stripes, c_int)
285 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
286 END FUNCTION xt_idxstripes_new_a4d_i4
288 FUNCTION xt_idxstripes_new_a4d_i8(stripes, num_stripes)
RESULT(res)
289 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,*)
290 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
293 INTEGER(c_int) :: num_stripes_c
295 IF (num_stripes > huge(num_stripes_c)) &
296 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
297 num_stripes_c = int(num_stripes, c_int)
298 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
299 END FUNCTION xt_idxstripes_new_a4d_i8
301 FUNCTION xt_idxstripes_new_a5d(stripes)
RESULT(res)
302 TYPE(
xt_stripe),
INTENT(in) :: stripes(:,:,:,:,:)
305 INTEGER(c_int) :: num_stripes_c
307 IF (
SIZE(stripes) > huge(num_stripes_c)) &
308 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
309 num_stripes_c = int(
SIZE(stripes), c_int)
310 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
311 END FUNCTION xt_idxstripes_new_a5d
313 FUNCTION xt_idxstripes_new_a5d_i2(stripes, num_stripes)
RESULT(res)
314 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,*)
315 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
318 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
319 int(num_stripes, c_int)))
320 END FUNCTION xt_idxstripes_new_a5d_i2
322 FUNCTION xt_idxstripes_new_a5d_i4(stripes, num_stripes)
RESULT(res)
323 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,*)
324 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
327 INTEGER(c_int) :: num_stripes_c
329 IF (num_stripes > huge(num_stripes_c)) &
330 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
331 num_stripes_c = int(num_stripes, c_int)
332 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
333 END FUNCTION xt_idxstripes_new_a5d_i4
335 FUNCTION xt_idxstripes_new_a5d_i8(stripes, num_stripes)
RESULT(res)
336 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,*)
337 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
340 INTEGER(c_int) :: num_stripes_c
342 IF (num_stripes > huge(num_stripes_c)) &
343 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
344 num_stripes_c = int(num_stripes, c_int)
345 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
346 END FUNCTION xt_idxstripes_new_a5d_i8
348 FUNCTION xt_idxstripes_new_a6d(stripes)
RESULT(res)
349 TYPE(
xt_stripe),
INTENT(in) :: stripes(:,:,:,:,:,:)
352 INTEGER(c_int) :: num_stripes_c
354 IF (
SIZE(stripes) > huge(num_stripes_c)) &
355 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
356 num_stripes_c = int(
SIZE(stripes), c_int)
357 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
358 END FUNCTION xt_idxstripes_new_a6d
360 FUNCTION xt_idxstripes_new_a6d_i2(stripes, num_stripes)
RESULT(res)
361 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,1,*)
362 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
365 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
366 int(num_stripes, c_int)))
367 END FUNCTION xt_idxstripes_new_a6d_i2
369 FUNCTION xt_idxstripes_new_a6d_i4(stripes, num_stripes)
RESULT(res)
370 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,1,*)
371 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
374 INTEGER(c_int) :: num_stripes_c
376 IF (num_stripes > huge(num_stripes_c)) &
377 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
378 num_stripes_c = int(num_stripes, c_int)
379 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
380 END FUNCTION xt_idxstripes_new_a6d_i4
382 FUNCTION xt_idxstripes_new_a6d_i8(stripes, num_stripes)
RESULT(res)
383 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,1,*)
384 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
387 INTEGER(c_int) :: num_stripes_c
389 IF (num_stripes > huge(num_stripes_c)) &
390 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
391 num_stripes_c = int(num_stripes, c_int)
392 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
393 END FUNCTION xt_idxstripes_new_a6d_i8
395 FUNCTION xt_idxstripes_new_a7d(stripes)
RESULT(res)
396 TYPE(
xt_stripe),
INTENT(in) :: stripes(:,:,:,:,:,:,:)
399 INTEGER(c_int) :: num_stripes_c
401 IF (
SIZE(stripes) > huge(num_stripes_c)) &
402 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
403 num_stripes_c = int(
SIZE(stripes), c_int)
404 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
405 END FUNCTION xt_idxstripes_new_a7d
407 FUNCTION xt_idxstripes_new_a7d_i2(stripes, num_stripes)
RESULT(res)
408 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,1,1,*)
409 INTEGER(i2),
VALUE,
INTENT(in) :: num_stripes
412 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
413 int(num_stripes, c_int)))
414 END FUNCTION xt_idxstripes_new_a7d_i2
416 FUNCTION xt_idxstripes_new_a7d_i4(stripes, num_stripes)
RESULT(res)
417 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,1,1,*)
418 INTEGER(i4),
VALUE,
INTENT(in) :: num_stripes
421 INTEGER(c_int) :: num_stripes_c
423 IF (num_stripes > huge(num_stripes_c)) &
424 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
425 num_stripes_c = int(num_stripes, c_int)
426 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
427 END FUNCTION xt_idxstripes_new_a7d_i4
429 FUNCTION xt_idxstripes_new_a7d_i8(stripes, num_stripes)
RESULT(res)
430 TYPE(
xt_stripe),
INTENT(in) :: stripes(1,1,1,1,1,1,*)
431 INTEGER(i8),
VALUE,
INTENT(in) :: num_stripes
434 INTEGER(c_int) :: num_stripes_c
436 IF (num_stripes > huge(num_stripes_c)) &
437 CALL xt_abort(
"too many idxstripes elements", filename, __line__)
438 num_stripes_c = int(num_stripes, c_int)
439 res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
440 END FUNCTION xt_idxstripes_new_a7d_i8
446 FUNCTION xt_idxstripes_from_idxlist_new_c(idxlist_src) &
447 bind(c, name=
'xt_idxstripes_from_idxlist_new') result(idxstripes)
449 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist_src
450 TYPE(c_ptr) :: idxstripes
451 END FUNCTION xt_idxstripes_from_idxlist_new_c
453 idxstripes = xt_idxlist_c2f(&
457END MODULE xt_idxstripes
Xt_idxlist xt_idxstripes_from_idxlist_new(Xt_idxlist idxlist_src)
Xt_idxlist xt_idxstripes_new(struct Xt_stripe const *stripes, int num_stripes)
Xt_idxlist xt_idxlist_f2c(struct xt_idxlist_f *p)