48#include "fc_feature_defs.inc"
50 USE xt_core,
ONLY: i2, i4, i8, xt_int_kind, xt_abort,
xt_stripe
51 USE xt_idxlist_abstract,
ONLY:
xt_idxlist, xt_idxlist_c2f
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)
98 IMPORT :: xt_int_kind, c_ptr, c_int
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
115 CHARACTER(len=*),
PARAMETER :: filename =
'xt_idxvec_f.f90'
118 FUNCTION xt_idxvec_new_a1d(idxvec)
RESULT(res)
119 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:)
122 INTEGER(xt_int_kind) :: idxvec_dummy(1)
123 INTEGER(c_int) :: num_indices_c
124 IF (
SIZE(idxvec) > huge(num_indices_c)) &
125 CALL xt_abort(
"too many idxvec elements", filename, __line__)
126 num_indices_c = int(
SIZE(idxvec), c_int)
127 IF (num_indices_c > 0_c_int)
THEN
128 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
130 idxvec_dummy(1) = huge(idxvec_dummy)
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)
142 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
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)) &
152 CALL xt_abort(
"too many idxvec elements", filename, __line__)
153 num_indices_c = int(num_indices, c_int)
154 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
155 END FUNCTION xt_idxvec_new_a1d_i4
157 FUNCTION xt_idxvec_new_a1d_i8(idxvec, num_indices)
RESULT(res)
158 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(*)
159 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
161 INTEGER(c_int) :: num_indices_c
163 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
164 CALL xt_abort(
"too many idxvec elements", filename, __line__)
165 num_indices_c = int(num_indices, c_int)
166 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
167 END FUNCTION xt_idxvec_new_a1d_i8
169 FUNCTION xt_idxvec_new_a2d(idxvec)
RESULT(res)
170 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:)
172 INTEGER(xt_int_kind) :: idxvec_dummy(1)
173 INTEGER(c_int) :: num_indices_c
174 IF (
SIZE(idxvec) > huge(num_indices_c)) &
175 CALL xt_abort(
"too many idxvec elements", filename, __line__)
176 num_indices_c = int(
SIZE(idxvec), c_int)
177 IF (num_indices_c > 0_c_int)
THEN
178 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
180 idxvec_dummy(1) = huge(idxvec_dummy)
181 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
183 END FUNCTION xt_idxvec_new_a2d
185 FUNCTION xt_idxvec_new_a2d_i2(idxvec, num_indices)
RESULT(res)
186 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,*)
187 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
189 INTEGER(c_int) :: num_indices_c
191 num_indices_c = int(num_indices, c_int)
192 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
193 END FUNCTION xt_idxvec_new_a2d_i2
195 FUNCTION xt_idxvec_new_a2d_i4(idxvec, num_indices)
RESULT(res)
196 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,*)
197 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
199 INTEGER(c_int) :: num_indices_c
201 IF (i4 /= c_int .AND. num_indices > huge(1_c_int)) &
202 CALL xt_abort(
"too many idxvec elements", filename, __line__)
203 num_indices_c = int(num_indices, c_int)
204 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
205 END FUNCTION xt_idxvec_new_a2d_i4
207 FUNCTION xt_idxvec_new_a2d_i8(idxvec, num_indices)
RESULT(res)
208 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,*)
209 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
211 INTEGER(c_int) :: num_indices_c
213 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
214 CALL xt_abort(
"too many idxvec elements", filename, __line__)
215 num_indices_c = int(num_indices, c_int)
216 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
217 END FUNCTION xt_idxvec_new_a2d_i8
219 FUNCTION xt_idxvec_new_a3d(idxvec)
RESULT(res)
220 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:)
223 INTEGER(xt_int_kind) :: idxvec_dummy(1)
224 INTEGER(c_int) :: num_indices_c
225 IF (
SIZE(idxvec) > huge(num_indices_c)) &
226 CALL xt_abort(
"too many idxvec elements", filename, __line__)
227 num_indices_c = int(
SIZE(idxvec), c_int)
228 IF (num_indices_c > 0_c_int)
THEN
229 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
231 idxvec_dummy(1) = huge(idxvec_dummy)
232 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
234 END FUNCTION xt_idxvec_new_a3d
236 FUNCTION xt_idxvec_new_a3d_i2(idxvec, num_indices)
RESULT(res)
237 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,*)
238 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
240 INTEGER(c_int) :: num_indices_c
241 num_indices_c = int(num_indices, c_int)
242 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
243 END FUNCTION xt_idxvec_new_a3d_i2
245 FUNCTION xt_idxvec_new_a3d_i4(idxvec, num_indices)
RESULT(res)
246 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,*)
247 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
249 INTEGER(c_int) :: num_indices_c
250 IF (i4 /= c_int .AND. num_indices > huge(1_c_int)) &
251 CALL xt_abort(
"too many idxvec elements", filename, __line__)
252 num_indices_c = int(num_indices, c_int)
253 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
254 END FUNCTION xt_idxvec_new_a3d_i4
256 FUNCTION xt_idxvec_new_a3d_i8(idxvec, num_indices)
RESULT(res)
257 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,*)
258 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
260 INTEGER(c_int) :: num_indices_c
261 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
262 CALL xt_abort(
"too many idxvec elements", filename, __line__)
263 num_indices_c = int(num_indices, c_int)
264 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
265 END FUNCTION xt_idxvec_new_a3d_i8
267 FUNCTION xt_idxvec_new_a4d(idxvec)
RESULT(res)
268 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:)
271 INTEGER(xt_int_kind) :: idxvec_dummy(1)
272 INTEGER(c_int) :: num_indices
273 IF (
SIZE(idxvec) > huge(num_indices)) &
274 CALL xt_abort(
"too many idxvec elements", filename, __line__)
275 num_indices = int(
SIZE(idxvec), c_int)
276 IF (num_indices > 0)
THEN
277 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices))
279 idxvec_dummy(1) = huge(idxvec_dummy)
280 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices))
282 END FUNCTION xt_idxvec_new_a4d
284 FUNCTION xt_idxvec_new_a4d_i2(idxvec, num_indices)
RESULT(res)
285 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,*)
286 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
288 INTEGER(c_int) :: num_indices_c
290 num_indices_c = int(num_indices, c_int)
291 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
292 END FUNCTION xt_idxvec_new_a4d_i2
294 FUNCTION xt_idxvec_new_a4d_i4(idxvec, num_indices)
RESULT(res)
295 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,*)
296 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
298 INTEGER(c_int) :: num_indices_c
300 IF (i4 /= c_int .AND. num_indices > huge(1_c_int)) &
301 CALL xt_abort(
"too many idxvec elements", filename, __line__)
302 num_indices_c = int(num_indices, c_int)
303 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
304 END FUNCTION xt_idxvec_new_a4d_i4
306 FUNCTION xt_idxvec_new_a4d_i8(idxvec, num_indices)
RESULT(res)
307 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,*)
308 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
310 INTEGER(c_int) :: num_indices_c
312 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
313 CALL xt_abort(
"too many idxvec elements", filename, __line__)
314 num_indices_c = int(num_indices, c_int)
315 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
316 END FUNCTION xt_idxvec_new_a4d_i8
318 FUNCTION xt_idxvec_new_a5d(idxvec)
RESULT(res)
319 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:,:)
322 INTEGER(xt_int_kind) :: idxvec_dummy(1)
323 INTEGER(c_int) :: num_indices_c
324 IF (
SIZE(idxvec) > huge(num_indices_c)) &
325 CALL xt_abort(
"too many idxvec elements", filename, __line__)
326 num_indices_c = int(
SIZE(idxvec), c_int)
327 IF (num_indices_c > 0_c_int)
THEN
328 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
330 idxvec_dummy(1) = huge(idxvec_dummy)
331 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
333 END FUNCTION xt_idxvec_new_a5d
335 FUNCTION xt_idxvec_new_a5d_i2(idxvec, num_indices)
RESULT(res)
336 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,*)
337 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
339 INTEGER(c_int) :: num_indices_c
341 num_indices_c = int(num_indices, c_int)
342 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
344 END FUNCTION xt_idxvec_new_a5d_i2
346 FUNCTION xt_idxvec_new_a5d_i4(idxvec, num_indices)
RESULT(res)
347 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,*)
348 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
350 INTEGER(c_int) :: num_indices_c
352 IF (i4 /= c_int .AND. num_indices > huge(1_c_int)) &
353 CALL xt_abort(
"too many idxvec elements", filename, __line__)
354 num_indices_c = int(num_indices, c_int)
355 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
356 END FUNCTION xt_idxvec_new_a5d_i4
358 FUNCTION xt_idxvec_new_a5d_i8(idxvec, num_indices)
RESULT(res)
359 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,*)
360 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
362 INTEGER(c_int) :: num_indices_c
364 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
365 CALL xt_abort(
"too many idxvec elements", filename, __line__)
366 num_indices_c = int(num_indices, c_int)
367 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
368 END FUNCTION xt_idxvec_new_a5d_i8
370 FUNCTION xt_idxvec_new_a6d(idxvec)
RESULT(res)
371 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:,:,:)
374 INTEGER(xt_int_kind) :: idxvec_dummy(1)
375 INTEGER(c_int) :: num_indices_c
377 IF (
SIZE(idxvec) > huge(num_indices_c)) &
378 CALL xt_abort(
"too many idxvec elements", filename, __line__)
379 num_indices_c = int(
SIZE(idxvec), c_int)
380 IF (num_indices_c > 0_c_int)
THEN
381 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
383 idxvec_dummy(1) = huge(idxvec_dummy)
384 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
386 END FUNCTION xt_idxvec_new_a6d
388 FUNCTION xt_idxvec_new_a6d_i2(idxvec, num_indices)
RESULT(res)
389 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,*)
390 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
393 INTEGER(c_int) :: num_indices_c
395 num_indices_c = int(num_indices, c_int)
396 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
397 END FUNCTION xt_idxvec_new_a6d_i2
399 FUNCTION xt_idxvec_new_a6d_i4(idxvec, num_indices)
RESULT(res)
400 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,*)
401 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
403 INTEGER(c_int) :: num_indices_c
405 IF (i4 /= c_int .AND. num_indices > huge(1_c_int)) &
406 CALL xt_abort(
"too many idxvec elements", filename, __line__)
407 num_indices_c = int(num_indices, c_int)
408 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
409 END FUNCTION xt_idxvec_new_a6d_i4
411 FUNCTION xt_idxvec_new_a6d_i8(idxvec, num_indices)
RESULT(res)
412 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,*)
413 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
415 INTEGER(c_int) :: num_indices_c
417 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
418 CALL xt_abort(
"too many idxvec elements", filename, __line__)
419 num_indices_c = int(num_indices, c_int)
420 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
421 END FUNCTION xt_idxvec_new_a6d_i8
423 FUNCTION xt_idxvec_new_a7d(idxvec)
RESULT(res)
424 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(:,:,:,:,:,:,:)
427 INTEGER(xt_int_kind) :: idxvec_dummy(1)
428 INTEGER(c_int) :: num_indices_c
429 IF (
SIZE(idxvec) > huge(num_indices_c)) &
430 CALL xt_abort(
"too many idxvec elements", filename, __line__)
431 num_indices_c = int(
SIZE(idxvec), c_int)
432 IF (num_indices_c > 0_c_int)
THEN
433 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
435 idxvec_dummy(1) = huge(idxvec_dummy)
436 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec_dummy, num_indices_c))
438 END FUNCTION xt_idxvec_new_a7d
440 FUNCTION xt_idxvec_new_a7d_i2(idxvec, num_indices)
RESULT(res)
441 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,1,*)
442 INTEGER(i2),
VALUE,
INTENT(in) :: num_indices
444 INTEGER(c_int) :: num_indices_c
446 num_indices_c = int(num_indices, c_int)
447 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
448 END FUNCTION xt_idxvec_new_a7d_i2
450 FUNCTION xt_idxvec_new_a7d_i4(idxvec, num_indices)
RESULT(res)
451 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,1,*)
452 INTEGER(i4),
VALUE,
INTENT(in) :: num_indices
454 INTEGER(c_int) :: num_indices_c
456 IF (i4 /= c_int .AND. num_indices > huge(1_c_int)) &
457 CALL xt_abort(
"too many idxvec elements", filename, __line__)
458 num_indices_c = int(num_indices, c_int)
459 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
460 END FUNCTION xt_idxvec_new_a7d_i4
462 FUNCTION xt_idxvec_new_a7d_i8(idxvec, num_indices)
RESULT(res)
463 INTEGER(xt_int_kind),
INTENT(in) :: idxvec(1,1,1,1,1,1,*)
464 INTEGER(i8),
VALUE,
INTENT(in) :: num_indices
466 INTEGER(c_int) :: num_indices_c
468 IF (i8 /= c_int .AND. num_indices > huge(1_c_int)) &
469 CALL xt_abort(
"too many idxvec elements", filename, __line__)
470 num_indices_c = int(num_indices, c_int)
471 res = xt_idxlist_c2f(xt_idxvec_new_c(idxvec, num_indices_c))
472 END FUNCTION xt_idxvec_new_a7d_i8
474 FUNCTION xt_idxvec_from_stripes_new_a(stripes)
RESULT(res)
475 TYPE(
xt_stripe),
INTENT(in) :: stripes(:)
477 INTEGER(c_int) :: num_stripes_c
478 num_stripes_c = int(
SIZE(stripes), c_int)
479 res = xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
480 END FUNCTION xt_idxvec_from_stripes_new_a
482 FUNCTION xt_idxvec_from_stripes_new_a_i2(stripes, num_stripes)
RESULT(res)
483 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
484 INTEGER(i2),
INTENT(in) :: num_stripes
486 INTEGER(c_int) :: num_stripes_c
487 num_stripes_c = int(num_stripes, c_int)
488 res = xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
489 END FUNCTION xt_idxvec_from_stripes_new_a_i2
491 FUNCTION xt_idxvec_from_stripes_new_a_i4(stripes, num_stripes)
RESULT(res)
492 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
493 INTEGER(i4),
INTENT(in) :: num_stripes
495 INTEGER(c_int) :: num_stripes_c
497 IF (i4 /= c_int .AND. num_stripes > huge(1_c_int)) &
498 CALL xt_abort(
"too many stripes", filename, __line__)
499 num_stripes_c = int(num_stripes, c_int)
500 res = xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
501 END FUNCTION xt_idxvec_from_stripes_new_a_i4
503 FUNCTION xt_idxvec_from_stripes_new_a_i8(stripes, num_stripes)
RESULT(res)
504 TYPE(
xt_stripe),
INTENT(in) :: stripes(*)
505 INTEGER(i8),
INTENT(in) :: num_stripes
507 INTEGER(c_int) :: num_stripes_c
509 IF (i8 /= c_int .AND. num_stripes > huge(1_c_int)) &
510 CALL xt_abort(
"too many stripes", filename, __line__)
511 num_stripes_c = int(num_stripes, c_int)
512 res = xt_idxlist_c2f(xt_idxvec_from_stripes_new_c(stripes, num_stripes_c))
513 END FUNCTION xt_idxvec_from_stripes_new_a_i8
Xt_idxlist xt_idxvec_from_stripes_new(const struct Xt_stripe *stripes, int num_stripes)
Xt_idxlist xt_idxvec_new(const Xt_int *idxlist, int num_indices)