52 USE iso_c_binding
, ONLY: c_ptr, c_int, c_f_pointer, c_null_ptr, &
64 TYPE(c_ptr) :: cptr = c_null_ptr
79 bind(c, name=
'xt_idxlist_get_pack_size_f2c') result(pack_size)
83 INTEGER(xt_mpi_fint_kind),
VALUE,
INTENT(in) :: comm
84 INTEGER(xt_mpi_fint_kind) :: pack_size
114 FUNCTION xt_idxlist_get_num_indices_c(idxlist)
RESULT(num_indices) &
115 bind(c, name=
'xt_idxlist_get_num_indices')
116 IMPORT :: c_int, c_ptr
118 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
119 INTEGER(c_int) :: num_indices
120 END FUNCTION xt_idxlist_get_num_indices_c
122 SUBROUTINE xt_idxlist_get_indices_c(idxlist, indices) &
123 bind(c, name=
'xt_idxlist_get_indices')
124 IMPORT :: c_ptr, xt_int_kind
126 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
127 INTEGER(xt_int_kind),
INTENT(out) :: indices(*)
128 END SUBROUTINE xt_idxlist_get_indices_c
130 SUBROUTINE xt_idxlist_delete_c(idxlist) bind(C, name='xt_idxlist_delete')
133 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
134 END SUBROUTINE xt_idxlist_delete_c
136 FUNCTION xt_idxlist_get_indices_at_positions_c(idxlist, positions, &
137 num_pos, indices, undef_idx) &
138 bind(c, name=
'xt_idxlist_get_indices_at_positions') result(num_subst)
139 IMPORT :: c_ptr, c_int, xt_int_kind
140 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
141 INTEGER(c_int),
INTENT(in) :: positions(*)
142 INTEGER(c_int),
VALUE,
INTENT(in) :: num_pos
143 INTEGER(xt_int_kind),
VALUE,
INTENT(in) :: undef_idx
144 INTEGER(xt_int_kind),
INTENT(out) :: indices(*)
145 INTEGER(c_int) :: num_subst
146 END FUNCTION xt_idxlist_get_indices_at_positions_c
151 MODULE PROCEDURE xt_idxlist_delete_1
152 MODULE PROCEDURE xt_idxlist_delete_a1d
153 MODULE PROCEDURE xt_idxlist_delete_a2d
157 MODULE PROCEDURE xt_idxlist_get_indices_1d
158 MODULE PROCEDURE xt_idxlist_get_indices_2d
159 MODULE PROCEDURE xt_idxlist_get_indices_3d
160 MODULE PROCEDURE xt_idxlist_get_indices_4d
161 MODULE PROCEDURE xt_idxlist_get_indices_5d
162 MODULE PROCEDURE xt_idxlist_get_indices_6d
163 MODULE PROCEDURE xt_idxlist_get_indices_7d
167 MODULE PROCEDURE xt_idxlist_is_null
168 END INTERFACE xt_is_null
171 MODULE PROCEDURE xt_idxlist_get_indices_at_positions_a1d
172 MODULE PROCEDURE xt_idxlist_get_indices_at_positions_a1d_i2
173 MODULE PROCEDURE xt_idxlist_get_indices_at_positions_a1d_i4
174 MODULE PROCEDURE xt_idxlist_get_indices_at_positions_a1d_i8
178 FUNCTION xt_idxlist_get_pos_exts_of_index_stripes_c(idxlist, &
179 num_stripes, stripes, num_ext, pos_ext, single_match_only) &
180 bind(c, name=
'xt_idxlist_get_pos_exts_of_index_stripes') &
181 result(num_unmatched)
182 IMPORT :: c_ptr, c_int
183 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
184 INTEGER(c_int),
VALUE,
INTENT(in) :: num_stripes
185 TYPE(c_ptr),
VALUE,
INTENT(in) :: stripes
186 INTEGER(c_int),
INTENT(out) :: num_ext
187 TYPE(c_ptr),
INTENT(out) :: pos_ext
188 INTEGER(c_int),
VALUE,
INTENT(in) :: single_match_only
189 INTEGER(c_int) :: num_unmatched
190 END FUNCTION xt_idxlist_get_pos_exts_of_index_stripes_c
192 SUBROUTINE free_c(p) bind(c, name='free')
194 TYPE(c_ptr),
VALUE,
INTENT(in) :: p
195 END SUBROUTINE free_c
199 MODULE PROCEDURE gpe_is_i4_a_i4_p1d_l
200 MODULE PROCEDURE gpe_is_a_p1d_l
205 FUNCTION xt_idxlist_is_null(idxlist)
RESULT(p)
208 p = .NOT. c_associated(idxlist%cptr)
209 END FUNCTION xt_idxlist_is_null
211 SUBROUTINE xt_idxlist_delete_1(idxlist)
214 idxlist%cptr = c_null_ptr
215 END SUBROUTINE xt_idxlist_delete_1
217 SUBROUTINE xt_idxlist_delete_a1d(idxlists)
218 TYPE(
xt_idxlist),
INTENT(inout) :: idxlists(:)
223 idxlists(i)%cptr = c_null_ptr
225 END SUBROUTINE xt_idxlist_delete_a1d
227 SUBROUTINE xt_idxlist_delete_a2d(idxlists)
228 TYPE(
xt_idxlist),
INTENT(inout) :: idxlists(:, :)
229 INTEGER :: i, j, m, n
230 m =
SIZE(idxlists, 1)
231 n =
SIZE(idxlists, 2)
235 idxlists(i, j)%cptr = c_null_ptr
238 END SUBROUTINE xt_idxlist_delete_a2d
243 INTEGER,
VALUE,
INTENT(in) :: position
244 INTEGER(xt_int_kind),
INTENT(out) :: idx
246 INTEGER(c_int) :: position_c
249 FUNCTION xt_idxlist_get_index_at_position_c(idxlist, position, idx) &
250 bind(c, name=
'xt_idxlist_get_index_at_position') result(res)
251 IMPORT :: c_ptr, c_int, xt_int_kind
252 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
253 INTEGER(c_int),
VALUE,
INTENT(in) :: position
254 INTEGER(xt_int_kind),
INTENT(out) :: idx
255 INTEGER(c_int) :: res
256 END FUNCTION xt_idxlist_get_index_at_position_c
259 position_c = int(position, c_int)
260 res = xt_idxlist_get_index_at_position_c(
xt_idxlist_f2c(idxlist), &
261 position_c, idx) /= 0
264 FUNCTION xt_idxlist_get_indices_at_positions_a1d(idxlist, positions, &
265 indices, undef_idx)
RESULT(num_subst)
268 INTEGER,
INTENT(in) :: positions(:)
269 INTEGER(xt_int_kind),
INTENT(out) :: indices(:)
270 INTEGER(xt_int_kind),
INTENT(in) :: undef_idx
271 INTEGER :: num_subst, n
272 INTEGER(c_int) :: num_positions_c
275 IF (n > huge(1_c_int)) n = huge(1_c_int)
277 num_positions_c = int(n, c_int)
278 num_subst = xt_idxlist_get_indices_at_positions_c(
xt_idxlist_f2c(idxlist), &
279 int(positions, c_int), num_positions_c, &
281 END FUNCTION xt_idxlist_get_indices_at_positions_a1d
283 FUNCTION xt_idxlist_get_indices_at_positions_a1d_i2(idxlist, positions, &
284 num_pos, indices, undef_idx)
RESULT(num_subst)
287 INTEGER,
INTENT(in) :: positions(*)
288 INTEGER(xt_int_kind),
INTENT(out) :: indices(*)
289 INTEGER(xt_int_kind),
INTENT(in) :: undef_idx
290 INTEGER(i2),
INTENT(in) :: num_pos
292 INTEGER(c_int) :: num_pos_c
294 num_pos_c = int(num_pos, c_int)
295 num_subst = xt_idxlist_get_indices_at_positions_c(
xt_idxlist_f2c(idxlist), &
296 int(positions(1:num_pos), c_int), num_pos_c, &
298 END FUNCTION xt_idxlist_get_indices_at_positions_a1d_i2
300 FUNCTION xt_idxlist_get_indices_at_positions_a1d_i4(idxlist, positions, &
301 num_pos, indices, undef_idx)
RESULT(num_subst)
304 INTEGER,
INTENT(in) :: positions(*)
305 INTEGER(xt_int_kind),
INTENT(out) :: indices(*)
306 INTEGER(xt_int_kind),
INTENT(in) :: undef_idx
307 INTEGER(i4),
INTENT(in) :: num_pos
309 INTEGER(c_int) :: num_pos_c
311 IF (num_pos > huge(1_c_int) .OR. num_pos < 0) &
316 num_pos_c = int(num_pos, c_int)
317 num_subst = xt_idxlist_get_indices_at_positions_c(
xt_idxlist_f2c(idxlist), &
318 int(positions(1:num_pos), c_int), num_pos_c, indices, undef_idx)
319 END FUNCTION xt_idxlist_get_indices_at_positions_a1d_i4
321 FUNCTION xt_idxlist_get_indices_at_positions_a1d_i8(idxlist, positions, &
322 num_pos, indices, undef_idx)
RESULT(num_subst)
325 INTEGER,
INTENT(in) :: positions(*)
326 INTEGER(xt_int_kind),
INTENT(out) :: indices(*)
327 INTEGER(xt_int_kind),
INTENT(in) :: undef_idx
328 INTEGER(i8),
INTENT(in) :: num_pos
330 INTEGER(c_int) :: num_pos_c
332 IF (num_pos > huge(1_c_int) .OR. num_pos < 0) &
337 num_pos_c = int(num_pos, c_int)
338 num_subst = xt_idxlist_get_indices_at_positions_c(
xt_idxlist_f2c(idxlist), &
339 int(positions(1:num_pos), c_int), num_pos_c, indices, undef_idx)
340 END FUNCTION xt_idxlist_get_indices_at_positions_a1d_i8
346 INTEGER(xt_int_kind),
VALUE,
INTENT(in) :: idx
347 INTEGER,
INTENT(out) :: position
349 INTEGER(c_int) :: position_c
352 FUNCTION xt_idxlist_get_position_of_index_c(idxlist, idx, position) &
353 bind(c, name=
'xt_idxlist_get_position_of_index') result(res)
354 IMPORT ::
xt_idxlist, xt_int_kind, c_int, c_ptr
355 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
356 INTEGER(xt_int_kind),
VALUE,
INTENT(in) :: idx
357 INTEGER(c_int),
INTENT(out) :: position
358 INTEGER(c_int) :: res
359 END FUNCTION xt_idxlist_get_position_of_index_c
362 notfound = xt_idxlist_get_position_of_index_c(
xt_idxlist_f2c(idxlist), &
363 idx, position_c) /= 0
364 position = int(position_c)
368 offset)
RESULT(notfound)
371 INTEGER(xt_int_kind),
VALUE,
INTENT(in) :: idx
372 INTEGER,
INTENT(out) :: position
373 INTEGER,
INTENT(in) :: offset
375 INTEGER(c_int) :: position_c, offset_c
378 FUNCTION xt_idxlist_get_position_of_index_off_c(idxlist, idx, position, &
379 offset) bind(c, name='xt_idxlist_get_position_of_index_off') &
381 IMPORT ::
xt_idxlist, xt_int_kind, c_int, c_ptr
382 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
383 INTEGER(xt_int_kind),
VALUE,
INTENT(in) :: idx
384 INTEGER(c_int),
INTENT(out) :: position
385 INTEGER(c_int),
VALUE,
INTENT(in) :: offset
386 INTEGER(c_int) :: res
387 END FUNCTION xt_idxlist_get_position_of_index_off_c
390 offset_c = int(offset, c_int)
391 notfound = xt_idxlist_get_position_of_index_off_c(
xt_idxlist_f2c(idxlist), &
392 idx, position_c, offset_c) /= 0
393 position = int(position_c)
397 single_match_only)
RESULT(num_missing)
400 INTEGER(xt_int_kind),
INTENT(in) :: indices(:)
401 INTEGER,
INTENT(out) :: positions(:)
402 LOGICAL,
INTENT(in) :: single_match_only
403 INTEGER :: num_missing, n, ofs
404 INTEGER(c_int) :: single_match_only_, num_pos_c
407 FUNCTION xt_idxlist_get_positions_of_indices_c(idxlist, indices, &
408 num_indices, positions, single_match_only) &
409 bind(c, name=
'xt_idxlist_get_positions_of_indices') &
411 IMPORT ::
xt_idxlist, xt_int_kind, c_int, c_ptr
412 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
413 INTEGER(xt_int_kind),
INTENT(in) :: indices(*)
414 INTEGER(c_int),
VALUE,
INTENT(in) :: num_indices
415 INTEGER(c_int),
INTENT(out) :: positions(*)
416 INTEGER(c_int),
VALUE,
INTENT(in) :: single_match_only
417 INTEGER(c_int) :: num_missing
418 END FUNCTION xt_idxlist_get_positions_of_indices_c
422 IF (
SIZE(positions) < n)
THEN 429 single_match_only_ = merge(1_c_int, 0_c_int, single_match_only)
431 IF (n > huge(1_c_int))
THEN 432 num_missing = num_missing &
433 + int(xt_idxlist_get_positions_of_indices_c(&
435 positions(ofs:), single_match_only_))
436 ofs = ofs + huge(1_c_int)
437 n = n - huge(1_c_int)
439 num_pos_c = int(n, c_int)
440 num_missing = num_missing &
441 + int(xt_idxlist_get_positions_of_indices_c(&
443 num_pos_c, positions(ofs:), single_match_only_))
451 TYPE(
xt_stripe),
ALLOCATABLE,
INTENT(out) :: stripes(:)
454 SUBROUTINE xt_idxlist_get_index_stripes_c(idxlist, stripes,&
455 num_stripes) bind(c, name='xt_idxlist_get_index_stripes')
456 IMPORT :: c_ptr, c_int
457 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
458 TYPE(c_ptr),
INTENT(out) :: stripes
459 INTEGER(c_int),
INTENT(out) :: num_stripes
460 END SUBROUTINE xt_idxlist_get_index_stripes_c
462 TYPE(c_ptr) :: stripes_c_ptr
463 INTEGER(c_int) :: num_stripes
464 TYPE(
xt_stripe),
POINTER :: stripes_f_ptr(:)
465 INTEGER :: stripes_shape(1)
467 stripes_c_ptr, num_stripes)
468 IF (num_stripes > huge(stripes_shape)) &
472 stripes_shape(1) = int(num_stripes)
473 IF (num_stripes > 0)
THEN 474 ALLOCATE(stripes(int(num_stripes)))
475 CALL c_f_pointer(stripes_c_ptr, stripes_f_ptr, stripes_shape)
476 stripes = stripes_f_ptr
478 CALL free_c(stripes_c_ptr)
482 global_start_index)
RESULT(bounds)
484 INTEGER(xt_int_kind),
INTENT(in) :: global_size(:)
485 INTEGER(xt_int_kind),
INTENT(in) :: global_start_index
486 TYPE(
xt_bounds) :: bounds(size(global_size))
487 INTEGER(c_int) :: ndim
490 SUBROUTINE xt_idxlist_get_bounding_box_c(idxlist, ndim, global_size, &
491 global_start_index, bounds) &
492 bind(c, name=
'xt_idxlist_get_bounding_box')
493 IMPORT :: c_int, c_ptr, xt_int_kind,
xt_bounds 494 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
495 INTEGER(c_int),
VALUE :: ndim
496 INTEGER(xt_int_kind),
INTENT(in) :: global_size(ndim)
497 INTEGER(xt_int_kind),
VALUE,
INTENT(in) :: global_start_index
498 TYPE(
xt_bounds),
INTENT(out) :: bounds(ndim)
499 END SUBROUTINE xt_idxlist_get_bounding_box_c
502 ndim = int(
SIZE(global_size), c_int)
504 ndim, global_size, global_start_index, bounds)
513 FUNCTION xt_idxlist_get_intersection_c(idxlist_src, idxlist_dst) &
514 bind(c, name=
'xt_idxlist_get_intersection') result(intersection)
516 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist_src, idxlist_dst
517 TYPE(c_ptr) :: intersection
518 END FUNCTION xt_idxlist_get_intersection_c
530 FUNCTION xt_idxlist_copy_c(idxlist) bind(c, name='xt_idxlist_copy') &
533 TYPE(c_ptr),
VALUE,
INTENT(IN) :: idxlist
535 END FUNCTION xt_idxlist_copy_c
543 TYPE(c_ptr),
INTENT(in) :: idxlist
550 INTEGER :: num_indices
553 IF (n > huge(num_indices) .OR. n < -huge(num_indices)) &
560 SUBROUTINE xt_idxlist_get_indices_1d(idxlist, indices)
562 INTEGER(xt_int_kind),
INTENT(out) :: indices(:)
563 INTEGER(c_int) :: num_indices
564 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
565 IF (num_indices >
SIZE(indices))
THEN 571 END SUBROUTINE xt_idxlist_get_indices_1d
573 SUBROUTINE xt_idxlist_get_indices_2d(idxlist, indices)
575 INTEGER(xt_int_kind),
INTENT(out) :: indices(:,:)
576 INTEGER(c_int) :: num_indices
577 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
578 IF (num_indices >
SIZE(indices))
THEN 584 END SUBROUTINE xt_idxlist_get_indices_2d
586 SUBROUTINE xt_idxlist_get_indices_3d(idxlist, indices)
588 INTEGER(xt_int_kind),
INTENT(out) :: indices(:,:,:)
589 INTEGER(c_int) :: num_indices
590 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
591 IF (num_indices >
SIZE(indices))
THEN 597 END SUBROUTINE xt_idxlist_get_indices_3d
599 SUBROUTINE xt_idxlist_get_indices_4d(idxlist, indices)
601 INTEGER(xt_int_kind),
INTENT(out) :: indices(:,:,:,:)
602 INTEGER(c_int) :: num_indices
603 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
604 IF (num_indices >
SIZE(indices))
THEN 610 END SUBROUTINE xt_idxlist_get_indices_4d
612 SUBROUTINE xt_idxlist_get_indices_5d(idxlist, indices)
614 INTEGER(xt_int_kind),
INTENT(out) :: indices(:,:,:,:,:)
615 INTEGER(c_int) :: num_indices
616 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
617 IF (num_indices >
SIZE(indices))
THEN 623 END SUBROUTINE xt_idxlist_get_indices_5d
625 SUBROUTINE xt_idxlist_get_indices_6d(idxlist, indices)
627 INTEGER(xt_int_kind),
INTENT(out) :: indices(:,:,:,:,:,:)
628 INTEGER(c_int) :: num_indices
629 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
630 IF (num_indices >
SIZE(indices))
THEN 636 END SUBROUTINE xt_idxlist_get_indices_6d
638 SUBROUTINE xt_idxlist_get_indices_7d(idxlist, indices)
640 INTEGER(xt_int_kind),
INTENT(out) :: indices(:,:,:,:,:,:,:)
641 INTEGER(c_int) :: num_indices
642 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
643 IF (num_indices >
SIZE(indices))
THEN 649 END SUBROUTINE xt_idxlist_get_indices_7d
653 INTEGER(xt_int_kind),
POINTER :: indices(:)
654 INTEGER(c_int) :: num_indices
655 TYPE(c_ptr) :: c_indices
656 INTEGER(xt_int_kind),
SAVE,
TARGET :: dummy(1) = -huge(indices)
657 INTEGER :: indices_shape(1)
659 FUNCTION xt_idxlist_get_indices_const_c(idxlist) &
660 bind(c, name=
'xt_idxlist_get_indices_const') result(indices)
663 TYPE(c_ptr),
VALUE,
INTENT(in) :: idxlist
664 TYPE(c_ptr) :: indices
665 END FUNCTION xt_idxlist_get_indices_const_c
667 num_indices = xt_idxlist_get_num_indices_c(
xt_idxlist_f2c(idxlist))
668 IF (num_indices > 0_xt_int_kind)
THEN 669 IF (num_indices > huge(indices_shape)) &
671 "too many indices for default integer kind", &
674 indices_shape(1) = int(num_indices)
675 c_indices = xt_idxlist_get_indices_const_c(
xt_idxlist_f2c(idxlist))
676 CALL c_f_pointer(c_indices, indices, indices_shape)
678 indices => dummy(1:0)
682 FUNCTION gpe_is_i4_a_i4_p1d_l(idxlist, &
683 num_stripes, stripes, num_ext, pos_ext, single_match_only) &
684 result(num_unmatched)
686 INTEGER(i4),
INTENT(in) :: num_stripes
687 TYPE(
xt_stripe),
INTENT(in),
TARGET :: stripes(num_stripes)
688 INTEGER,
INTENT(out) :: num_ext
689 TYPE(
xt_pos_ext),
ALLOCATABLE,
INTENT(out) :: pos_ext(:)
690 LOGICAL,
INTENT(in) :: single_match_only
691 INTEGER :: num_unmatched
693 INTEGER(c_int) :: num_unmatched_c, num_ext_c, num_stripes_c
694 TYPE(c_ptr) :: pos_ext_c, stripes_c
696 INTEGER :: pos_ext_shape(1)
698 IF (num_stripes > huge(1_c_int) .OR. num_stripes < 0) &
700 "interface violation detected", &
704 stripes_c = c_loc(stripes)
705 num_stripes_c = int(num_stripes, c_int)
706 num_unmatched_c = xt_idxlist_get_pos_exts_of_index_stripes_c(&
708 num_ext_c, pos_ext_c, merge(1_c_int, 0_c_int, single_match_only))
710 IF (num_ext_c > huge(1) .OR. num_ext_c < 0 &
711 .OR. num_unmatched_c > huge(1) .OR. num_unmatched_c < 0) &
713 "data representation problem", &
716 num_unmatched = int(num_unmatched_c)
717 num_ext = int(num_ext_c)
718 IF (num_ext > 0)
THEN 719 ALLOCATE(pos_ext(num_ext))
720 pos_ext_shape(1) = num_ext
721 CALL c_f_pointer(pos_ext_c, pos_ext_fptr, pos_ext_shape)
722 pos_ext = pos_ext_fptr
723 CALL free_c(pos_ext_c)
725 END FUNCTION gpe_is_i4_a_i4_p1d_l
727 FUNCTION gpe_is_a_p1d_l(idxlist, stripes, pos_ext, single_match_only) &
728 result(num_unmatched)
730 TYPE(
xt_stripe),
INTENT(in) :: stripes(:)
731 TYPE(
xt_pos_ext),
ALLOCATABLE,
INTENT(out) :: pos_ext(:)
732 LOGICAL,
INTENT(in) :: single_match_only
733 INTEGER :: num_unmatched
736 INTEGER(i4) :: num_stripes
738 num_stripes =
SIZE(stripes)
739 IF (num_stripes > 0)
THEN 740 num_unmatched = gpe_is_i4_a_i4_p1d_l(idxlist, num_stripes, stripes, &
741 num_ext, pos_ext, single_match_only)
745 END FUNCTION gpe_is_a_p1d_l
integer, parameter, public i8
int xt_idxlist_get_num_indices(Xt_idxlist idxlist)
integer, parameter, public i4
external, public xt_idxlist_unpack_f
type(xt_idxlist) function, public xt_idxlist_c2f(idxlist)
describes range of positions starting with start up to start + size - 1 i.e. [start,start+size) if size is positive and down to start + size + 1 i.e. (start+size,start] if size is negative
void xt_idxlist_get_indices(Xt_idxlist idxlist, Xt_int *indices)
integer, parameter, public xt_mpi_fint_kind
void xt_idxlist_delete(Xt_idxlist idxlist)
integer, parameter, public i2
external, public xt_idxlist_pack_f
int xt_idxlist_get_position_of_index_off(Xt_idxlist idxlist, Xt_int index, int *position, int offset)
void xt_idxlist_get_bounding_box(Xt_idxlist idxlist, unsigned ndim, const Xt_int global_size[ndim], Xt_int global_start_index, struct Xt_bounds bounds[ndim])
int xt_idxlist_get_positions_of_indices(Xt_idxlist idxlist, const Xt_int *indices, int num_indices, int *positions, int single_match_only)
int xt_idxlist_get_indices_at_positions(Xt_idxlist idxlist, const int *positions, int num_pos, Xt_int *indices, Xt_int undef_idx)
void xt_idxlist_get_index_stripes(Xt_idxlist idxlist, struct Xt_stripe **stripes, int *num_stripes)
int xt_idxlist_get_pos_exts_of_index_stripes(Xt_idxlist idxlist, int num_stripes, const struct Xt_stripe stripes[num_stripes], int *num_ext, struct Xt_pos_ext **pos_ext, int single_match_only)
int xt_idxlist_get_index_at_position(Xt_idxlist idxlist, int position, Xt_int *index)
int xt_idxlist_get_position_of_index(Xt_idxlist idxlist, Xt_int index, int *position)
integer, parameter, public xt_int_kind
Xt_idxlist xt_idxlist_copy(Xt_idxlist idxlist)
size_t xt_idxlist_get_pack_size(Xt_idxlist idxlist, MPI_Comm comm)
const Xt_int * xt_idxlist_get_indices_const(Xt_idxlist idxlist)
Xt_idxlist xt_idxlist_get_intersection(Xt_idxlist idxlist_src, Xt_idxlist idxlist_dst)