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)
96 TYPE(xt_stripe),
INTENT(in) :: stripes(*)
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)
108 TYPE(xt_stripe),
INTENT(in) :: stripe
109 TYPE(xt_idxlist) :: res
112 END FUNCTION xt_idxstripes_new_s
114 FUNCTION xt_idxstripes_new_a1d(stripes)
RESULT(res)
115 TYPE(xt_stripe),
INTENT(in) :: stripes(:)
116 TYPE(xt_idxlist) :: res
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)
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
129 TYPE(xt_idxlist) :: res
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
138 TYPE(xt_idxlist) :: res
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)
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
151 TYPE(xt_idxlist) :: res
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)
159 END FUNCTION xt_idxstripes_new_a1d_i8
161 FUNCTION xt_idxstripes_new_a2d(stripes)
RESULT(res)
162 TYPE(xt_stripe),
INTENT(in) :: stripes(:,:)
163 TYPE(xt_idxlist) :: res
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)
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
176 TYPE(xt_idxlist) :: res
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
185 TYPE(xt_idxlist) :: res
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)
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
197 TYPE(xt_idxlist) :: res
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)
205 END FUNCTION xt_idxstripes_new_a2d_i8
207 FUNCTION xt_idxstripes_new_a3d(stripes)
RESULT(res)
208 TYPE(xt_stripe),
INTENT(in) :: stripes(:,:,:)
209 TYPE(xt_idxlist) :: res
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)
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
222 TYPE(xt_idxlist) :: res
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
231 TYPE(xt_idxlist) :: res
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)
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
244 TYPE(xt_idxlist) :: res
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)
252 END FUNCTION xt_idxstripes_new_a3d_i8
254 FUNCTION xt_idxstripes_new_a4d(stripes)
RESULT(res)
255 TYPE(xt_stripe),
INTENT(in) :: stripes(:,:,:,:)
256 TYPE(xt_idxlist) :: res
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)
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
269 TYPE(xt_idxlist) :: res
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
278 TYPE(xt_idxlist) :: res
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)
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
291 TYPE(xt_idxlist) :: res
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)
299 END FUNCTION xt_idxstripes_new_a4d_i8
301 FUNCTION xt_idxstripes_new_a5d(stripes)
RESULT(res)
302 TYPE(xt_stripe),
INTENT(in) :: stripes(:,:,:,:,:)
303 TYPE(xt_idxlist) :: res
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)
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
316 TYPE(xt_idxlist) :: res
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
325 TYPE(xt_idxlist) :: res
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)
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
338 TYPE(xt_idxlist) :: res
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)
346 END FUNCTION xt_idxstripes_new_a5d_i8
348 FUNCTION xt_idxstripes_new_a6d(stripes)
RESULT(res)
349 TYPE(xt_stripe),
INTENT(in) :: stripes(:,:,:,:,:,:)
350 TYPE(xt_idxlist) :: res
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)
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
363 TYPE(xt_idxlist) :: res
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
372 TYPE(xt_idxlist) :: res
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)
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
385 TYPE(xt_idxlist) :: res
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)
393 END FUNCTION xt_idxstripes_new_a6d_i8
395 FUNCTION xt_idxstripes_new_a7d(stripes)
RESULT(res)
396 TYPE(xt_stripe),
INTENT(in) :: stripes(:,:,:,:,:,:,:)
397 TYPE(xt_idxlist) :: res
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)
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
410 TYPE(xt_idxlist) :: res
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
419 TYPE(xt_idxlist) :: res
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)
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
432 TYPE(xt_idxlist) :: res
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)
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
integer, parameter, public i8
integer, parameter, public i4
integer, parameter, public i2
type(xt_idxlist) function, public xt_idxlist_c2f(idxlist)
Xt_idxlist xt_idxstripes_from_idxlist_new(Xt_idxlist idxlist_src)
Xt_idxlist xt_idxstripes_new(struct Xt_stripe const *stripes, int num_stripes)