52 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_int
56 MODULE PROCEDURE xt_idxvec_new_a1d
57 MODULE PROCEDURE xt_idxvec_new_a1d_i2
58 MODULE PROCEDURE xt_idxvec_new_a1d_i4
59 MODULE PROCEDURE xt_idxvec_new_a1d_i8
60 MODULE PROCEDURE xt_idxvec_new_a2d
61 MODULE PROCEDURE xt_idxvec_new_a2d_i2
62 MODULE PROCEDURE xt_idxvec_new_a2d_i4
63 MODULE PROCEDURE xt_idxvec_new_a2d_i8
64 MODULE PROCEDURE xt_idxvec_new_a3d
65 MODULE PROCEDURE xt_idxvec_new_a3d_i2
66 MODULE PROCEDURE xt_idxvec_new_a3d_i4
67 MODULE PROCEDURE xt_idxvec_new_a3d_i8
68 MODULE PROCEDURE xt_idxvec_new_a4d
69 MODULE PROCEDURE xt_idxvec_new_a4d_i2
70 MODULE PROCEDURE xt_idxvec_new_a4d_i4
71 MODULE PROCEDURE xt_idxvec_new_a4d_i8
72 MODULE PROCEDURE xt_idxvec_new_a5d
73 MODULE PROCEDURE xt_idxvec_new_a5d_i2
74 MODULE PROCEDURE xt_idxvec_new_a5d_i4
75 MODULE PROCEDURE xt_idxvec_new_a5d_i8
76 MODULE PROCEDURE xt_idxvec_new_a6d
77 MODULE PROCEDURE xt_idxvec_new_a6d_i2
78 MODULE PROCEDURE xt_idxvec_new_a6d_i4
79 MODULE PROCEDURE xt_idxvec_new_a6d_i8
80 MODULE PROCEDURE xt_idxvec_new_a7d
81 MODULE PROCEDURE xt_idxvec_new_a7d_i2
82 MODULE PROCEDURE xt_idxvec_new_a7d_i4
83 MODULE PROCEDURE xt_idxvec_new_a7d_i8
87 MODULE PROCEDURE xt_idxvec_from_stripes_new_a
88 MODULE PROCEDURE xt_idxvec_from_stripes_new_a_i2
89 MODULE PROCEDURE xt_idxvec_from_stripes_new_a_i4
90 MODULE PROCEDURE xt_idxvec_from_stripes_new_a_i8
96 FUNCTION xt_idxvec_new_c(idxvec, num_indices) &
97 bind(c, name=
'xt_idxvec_new') result(res_ptr)
100 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(*)
101 INTEGER(c_int),
VALUE,
INTENT(in) :: num_indices
102 TYPE(c_ptr) :: res_ptr
103 END FUNCTION xt_idxvec_new_c
105 FUNCTION xt_idxvec_from_stripes_new_c(stripes, num_stripes) &
106 bind(c, name=
'xt_idxvec_from_stripes_new') result(res_ptr)
109 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
110 INTEGER(c_int),
VALUE,
INTENT(in) :: num_stripes
111 TYPE(c_ptr) :: res_ptr
112 END FUNCTION xt_idxvec_from_stripes_new_c
117 FUNCTION xt_idxvec_new_a1d(idxvec)
RESULT(res)
118 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:)
121 INTEGER(xt_int_kind) :: idxvec_dummy(1)
122 INTEGER(c_int) :: num_indices_c
123 IF (
SIZE(idxvec) > huge(num_indices_c)) &
127 num_indices_c = int(
SIZE(idxvec), c_int)
128 IF (num_indices_c > 0_c_int)
THEN 131 res =
xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
133 END FUNCTION xt_idxvec_new_a1d
135 FUNCTION xt_idxvec_new_a1d_i2(idxvec, num_indices)
RESULT(res)
136 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(*)
137 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
139 INTEGER(c_int) :: num_indices_c
141 num_indices_c = int(num_indices, c_int)
143 END FUNCTION xt_idxvec_new_a1d_i2
145 FUNCTION xt_idxvec_new_a1d_i4(idxvec, num_indices)
RESULT(res)
146 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(*)
147 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
149 INTEGER(c_int) :: num_indices_c
151 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
155 num_indices_c = int(num_indices, c_int)
157 END FUNCTION xt_idxvec_new_a1d_i4
159 FUNCTION xt_idxvec_new_a1d_i8(idxvec, num_indices)
RESULT(res)
160 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(*)
161 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
163 INTEGER(c_int) :: num_indices_c
165 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
169 num_indices_c = int(num_indices, c_int)
171 END FUNCTION xt_idxvec_new_a1d_i8
173 FUNCTION xt_idxvec_new_a2d(idxvec)
RESULT(res)
174 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:)
176 INTEGER(xt_int_kind) :: idxvec_dummy(1)
177 INTEGER(c_int) :: num_indices_c
178 IF (
SIZE(idxvec) > huge(num_indices_c)) &
182 num_indices_c = int(
SIZE(idxvec), c_int)
183 IF (num_indices_c > 0_c_int)
THEN 186 res =
xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
188 END FUNCTION xt_idxvec_new_a2d
190 FUNCTION xt_idxvec_new_a2d_i2(idxvec, num_indices)
RESULT(res)
191 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,*)
192 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
194 INTEGER(c_int) :: num_indices_c
196 num_indices_c = int(num_indices, c_int)
198 END FUNCTION xt_idxvec_new_a2d_i2
200 FUNCTION xt_idxvec_new_a2d_i4(idxvec, num_indices)
RESULT(res)
201 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,*)
202 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
204 INTEGER(c_int) :: num_indices_c
206 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
210 num_indices_c = int(num_indices, c_int)
212 END FUNCTION xt_idxvec_new_a2d_i4
214 FUNCTION xt_idxvec_new_a2d_i8(idxvec, num_indices)
RESULT(res)
215 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,*)
216 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
218 INTEGER(c_int) :: num_indices_c
220 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
224 num_indices_c = int(num_indices, c_int)
226 END FUNCTION xt_idxvec_new_a2d_i8
228 FUNCTION xt_idxvec_new_a3d(idxvec)
RESULT(res)
229 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:)
232 INTEGER(xt_int_kind) :: idxvec_dummy(1)
233 INTEGER(c_int) :: num_indices_c
234 IF (
SIZE(idxvec) > huge(num_indices_c)) &
238 num_indices_c = int(
SIZE(idxvec), c_int)
239 IF (num_indices_c > 0_c_int)
THEN 242 res =
xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
244 END FUNCTION xt_idxvec_new_a3d
246 FUNCTION xt_idxvec_new_a3d_i2(idxvec, num_indices)
RESULT(res)
247 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,*)
248 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
250 INTEGER(c_int) :: num_indices_c
251 num_indices_c = int(num_indices, c_int)
253 END FUNCTION xt_idxvec_new_a3d_i2
255 FUNCTION xt_idxvec_new_a3d_i4(idxvec, num_indices)
RESULT(res)
256 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,*)
257 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
259 INTEGER(c_int) :: num_indices_c
260 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
264 num_indices_c = int(num_indices, c_int)
266 END FUNCTION xt_idxvec_new_a3d_i4
268 FUNCTION xt_idxvec_new_a3d_i8(idxvec, num_indices)
RESULT(res)
269 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,*)
270 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
272 INTEGER(c_int) :: num_indices_c
273 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
277 num_indices_c = int(num_indices, c_int)
279 END FUNCTION xt_idxvec_new_a3d_i8
281 FUNCTION xt_idxvec_new_a4d(idxvec)
RESULT(res)
282 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:)
285 INTEGER(xt_int_kind) :: idxvec_dummy(1)
286 INTEGER(c_int) :: num_indices
287 IF (
SIZE(idxvec) > huge(num_indices)) &
291 num_indices = int(
SIZE(idxvec), c_int)
292 IF (num_indices > 0)
THEN 297 END FUNCTION xt_idxvec_new_a4d
299 FUNCTION xt_idxvec_new_a4d_i2(idxvec, num_indices)
RESULT(res)
300 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,*)
301 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
303 INTEGER(c_int) :: num_indices_c
305 num_indices_c = int(num_indices, c_int)
307 END FUNCTION xt_idxvec_new_a4d_i2
309 FUNCTION xt_idxvec_new_a4d_i4(idxvec, num_indices)
RESULT(res)
310 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,*)
311 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
313 INTEGER(c_int) :: num_indices_c
315 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
319 num_indices_c = int(num_indices, c_int)
321 END FUNCTION xt_idxvec_new_a4d_i4
323 FUNCTION xt_idxvec_new_a4d_i8(idxvec, num_indices)
RESULT(res)
324 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,*)
325 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
327 INTEGER(c_int) :: num_indices_c
329 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
333 num_indices_c = int(num_indices, c_int)
335 END FUNCTION xt_idxvec_new_a4d_i8
337 FUNCTION xt_idxvec_new_a5d(idxvec)
RESULT(res)
338 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:,:)
341 INTEGER(xt_int_kind) :: idxvec_dummy(1)
342 INTEGER(c_int) :: num_indices_c
343 IF (
SIZE(idxvec) > huge(num_indices_c)) &
347 num_indices_c = int(
SIZE(idxvec), c_int)
348 IF (num_indices_c > 0_c_int)
THEN 351 res =
xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
353 END FUNCTION xt_idxvec_new_a5d
355 FUNCTION xt_idxvec_new_a5d_i2(idxvec, num_indices)
RESULT(res)
356 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,*)
357 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
359 INTEGER(c_int) :: num_indices_c
361 num_indices_c = int(num_indices, c_int)
364 END FUNCTION xt_idxvec_new_a5d_i2
366 FUNCTION xt_idxvec_new_a5d_i4(idxvec, num_indices)
RESULT(res)
367 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,*)
368 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
370 INTEGER(c_int) :: num_indices_c
372 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
376 num_indices_c = int(num_indices, c_int)
378 END FUNCTION xt_idxvec_new_a5d_i4
380 FUNCTION xt_idxvec_new_a5d_i8(idxvec, num_indices)
RESULT(res)
381 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,*)
382 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
384 INTEGER(c_int) :: num_indices_c
386 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
390 num_indices_c = int(num_indices, c_int)
392 END FUNCTION xt_idxvec_new_a5d_i8
394 FUNCTION xt_idxvec_new_a6d(idxvec)
RESULT(res)
395 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:,:,:)
398 INTEGER(xt_int_kind) :: idxvec_dummy(1)
399 INTEGER(c_int) :: num_indices_c
401 IF (
SIZE(idxvec) > huge(num_indices_c)) &
405 num_indices_c = int(
SIZE(idxvec), c_int)
406 IF (num_indices_c > 0_c_int)
THEN 409 res =
xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
411 END FUNCTION xt_idxvec_new_a6d
413 FUNCTION xt_idxvec_new_a6d_i2(idxvec, num_indices)
RESULT(res)
414 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,*)
415 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
418 INTEGER(c_int) :: num_indices_c
420 num_indices_c = int(num_indices, c_int)
422 END FUNCTION xt_idxvec_new_a6d_i2
424 FUNCTION xt_idxvec_new_a6d_i4(idxvec, num_indices)
RESULT(res)
425 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,*)
426 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
428 INTEGER(c_int) :: num_indices_c
430 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
434 num_indices_c = int(num_indices, c_int)
436 END FUNCTION xt_idxvec_new_a6d_i4
438 FUNCTION xt_idxvec_new_a6d_i8(idxvec, num_indices)
RESULT(res)
439 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,*)
440 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
442 INTEGER(c_int) :: num_indices_c
444 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
448 num_indices_c = int(num_indices, c_int)
450 END FUNCTION xt_idxvec_new_a6d_i8
452 FUNCTION xt_idxvec_new_a7d(idxvec)
RESULT(res)
453 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:,:,:,:)
456 INTEGER(xt_int_kind) :: idxvec_dummy(1)
457 INTEGER(c_int) :: num_indices_c
458 IF (
SIZE(idxvec) > huge(num_indices_c)) &
462 num_indices_c = int(
SIZE(idxvec), c_int)
463 IF (num_indices_c > 0_c_int)
THEN 466 res =
xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
468 END FUNCTION xt_idxvec_new_a7d
470 FUNCTION xt_idxvec_new_a7d_i2(idxvec, num_indices)
RESULT(res)
471 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,1,*)
472 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
474 INTEGER(c_int) :: num_indices_c
476 num_indices_c = int(num_indices, c_int)
478 END FUNCTION xt_idxvec_new_a7d_i2
480 FUNCTION xt_idxvec_new_a7d_i4(idxvec, num_indices)
RESULT(res)
481 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,1,*)
482 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
484 INTEGER(c_int) :: num_indices_c
486 IF (
i4 /= c_int .AND. num_indices > huge(1_c_int)) &
490 num_indices_c = int(num_indices, c_int)
492 END FUNCTION xt_idxvec_new_a7d_i4
494 FUNCTION xt_idxvec_new_a7d_i8(idxvec, num_indices)
RESULT(res)
495 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,1,*)
496 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
498 INTEGER(c_int) :: num_indices_c
500 IF (
i8 /= c_int .AND. num_indices > huge(1_c_int)) &
504 num_indices_c = int(num_indices, c_int)
506 END FUNCTION xt_idxvec_new_a7d_i8
508 FUNCTION xt_idxvec_from_stripes_new_a(stripes)
RESULT(res)
509 TYPE(
xt_stripe),
INTENT(in) :: stripes(:)
511 INTEGER(c_int) :: num_stripes_c
512 num_stripes_c = int(
SIZE(stripes), c_int)
513 res =
xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
514 END FUNCTION xt_idxvec_from_stripes_new_a
516 FUNCTION xt_idxvec_from_stripes_new_a_i2(stripes, num_stripes)
RESULT(res)
517 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
518 INTEGER(i2),
INTENT(in) :: num_stripes
520 INTEGER(c_int) :: num_stripes_c
521 num_stripes_c = int(num_stripes, c_int)
522 res =
xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
523 END FUNCTION xt_idxvec_from_stripes_new_a_i2
525 FUNCTION xt_idxvec_from_stripes_new_a_i4(stripes, num_stripes)
RESULT(res)
526 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
527 INTEGER(i4),
INTENT(in) :: num_stripes
529 INTEGER(c_int) :: num_stripes_c
531 IF (
i4 /= c_int .AND. num_stripes > huge(1_c_int)) &
535 num_stripes_c = int(num_stripes, c_int)
536 res =
xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
537 END FUNCTION xt_idxvec_from_stripes_new_a_i4
539 FUNCTION xt_idxvec_from_stripes_new_a_i8(stripes, num_stripes)
RESULT(res)
540 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
541 INTEGER(i8),
INTENT(in) :: num_stripes
543 INTEGER(c_int) :: num_stripes_c
545 IF (
i8 /= c_int .AND. num_stripes > huge(1_c_int)) &
549 num_stripes_c = int(num_stripes, c_int)
550 res =
xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
551 END FUNCTION xt_idxvec_from_stripes_new_a_i8
Xt_idxlist xt_idxvec_from_stripes_new(const struct Xt_stripe *stripes, int num_stripes)
integer, parameter, public i8
integer, parameter, public i4
type(xt_idxlist) function, public xt_idxlist_c2f(idxlist)
integer, parameter, public i2
integer, parameter, public xt_int_kind
Xt_idxlist xt_idxvec_new(const Xt_int *idxlist, int num_indices)