Yet Another eXchange Tool  DO_NOT_EDIT_HERE
xt_idxstripes_f.f90
Go to the documentation of this file.
1 
13 
14 !
15 ! Keywords:
16 ! Maintainer: Jörg Behrens <behrens@dkrz.de>
17 ! Moritz Hanke <hanke@dkrz.de>
18 ! Thomas Jahns <jahns@dkrz.de>
19 ! URL: https://doc.redmine.dkrz.de/yaxt/html/
20 !
21 ! Redistribution and use in source and binary forms, with or without
22 ! modification, are permitted provided that the following conditions are
23 ! met:
24 !
25 ! Redistributions of source code must retain the above copyright notice,
26 ! this list of conditions and the following disclaimer.
27 !
28 ! Redistributions in binary form must reproduce the above copyright
29 ! notice, this list of conditions and the following disclaimer in the
30 ! documentation and/or other materials provided with the distribution.
31 !
32 ! Neither the name of the DKRZ GmbH nor the names of its contributors
33 ! may be used to endorse or promote products derived from this software
34 ! without specific prior written permission.
35 !
36 ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
37 ! IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
38 ! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
39 ! PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
40 ! OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
41 ! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
42 ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
43 ! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
44 ! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
45 ! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46 ! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47 !
48 
51 
53  USE xt_core, ONLY: xt_stripe, i2, i4, i8, xt_get_default_comm, &
54  xt_abort
56  USE iso_c_binding, ONLY: c_ptr, c_int
57  IMPLICIT NONE
58  PRIVATE
59  PUBLIC :: xt_idxstripes_new
60  INTERFACE xt_idxstripes_new
61  MODULE PROCEDURE xt_idxstripes_new_s
62  MODULE PROCEDURE xt_idxstripes_new_a1d
63  MODULE PROCEDURE xt_idxstripes_new_a1d_i2
64  MODULE PROCEDURE xt_idxstripes_new_a1d_i4
65  MODULE PROCEDURE xt_idxstripes_new_a1d_i8
66  MODULE PROCEDURE xt_idxstripes_new_a2d
67  MODULE PROCEDURE xt_idxstripes_new_a2d_i2
68  MODULE PROCEDURE xt_idxstripes_new_a2d_i4
69  MODULE PROCEDURE xt_idxstripes_new_a2d_i8
70  MODULE PROCEDURE xt_idxstripes_new_a3d
71  MODULE PROCEDURE xt_idxstripes_new_a3d_i2
72  MODULE PROCEDURE xt_idxstripes_new_a3d_i4
73  MODULE PROCEDURE xt_idxstripes_new_a3d_i8
74  MODULE PROCEDURE xt_idxstripes_new_a4d
75  MODULE PROCEDURE xt_idxstripes_new_a4d_i2
76  MODULE PROCEDURE xt_idxstripes_new_a4d_i4
77  MODULE PROCEDURE xt_idxstripes_new_a4d_i8
78  MODULE PROCEDURE xt_idxstripes_new_a5d
79  MODULE PROCEDURE xt_idxstripes_new_a5d_i2
80  MODULE PROCEDURE xt_idxstripes_new_a5d_i4
81  MODULE PROCEDURE xt_idxstripes_new_a5d_i8
82  MODULE PROCEDURE xt_idxstripes_new_a6d
83  MODULE PROCEDURE xt_idxstripes_new_a6d_i2
84  MODULE PROCEDURE xt_idxstripes_new_a6d_i4
85  MODULE PROCEDURE xt_idxstripes_new_a6d_i8
86  MODULE PROCEDURE xt_idxstripes_new_a7d
87  MODULE PROCEDURE xt_idxstripes_new_a7d_i2
88  MODULE PROCEDURE xt_idxstripes_new_a7d_i4
89  MODULE PROCEDURE xt_idxstripes_new_a7d_i8
90  END INTERFACE xt_idxstripes_new
91 
92  INTERFACE
93  FUNCTION xt_idxstripes_new_c(stripes, num_stripes) &
94  bind(c, name='xt_idxstripes_new') result(res_ptr)
95  import:: xt_idxlist, xt_stripe, c_ptr, c_int
96  IMPLICIT NONE
97  TYPE(xt_stripe), INTENT(in) :: stripes(*)
98  INTEGER(c_int), VALUE, INTENT(in) :: num_stripes
99  TYPE(c_ptr) :: res_ptr
100  END FUNCTION xt_idxstripes_new_c
101  END INTERFACE
102 
104 
105 CONTAINS
106 
107  FUNCTION xt_idxstripes_new_s(stripe) RESULT(res)
108  TYPE(xt_stripe), INTENT(in) :: stripe
109  TYPE(xt_idxlist) :: res
110 
111  res = xt_idxlist_c2f(xt_idxstripes_new_c((/ stripe /), 1_c_int))
112  END FUNCTION xt_idxstripes_new_s
113 
114  FUNCTION xt_idxstripes_new_a1d(stripes) RESULT(res)
115  TYPE(xt_stripe), INTENT(in) :: stripes(:)
116  TYPE(xt_idxlist) :: res
117 
118  INTEGER(c_int) :: num_stripes_c
119 
120  IF (SIZE(stripes) > huge(num_stripes_c)) &
121  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
122  __file__, &
123  __line__)
124  num_stripes_c = int(SIZE(stripes), c_int)
125  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
126  END FUNCTION xt_idxstripes_new_a1d
127 
128  FUNCTION xt_idxstripes_new_a1d_i2(stripes, num_stripes) RESULT(res)
129  TYPE(xt_stripe), INTENT(in) :: stripes(*)
130  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
131  TYPE(xt_idxlist) :: res
132 
133  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
134  int(num_stripes, c_int)))
135  END FUNCTION xt_idxstripes_new_a1d_i2
136 
137  FUNCTION xt_idxstripes_new_a1d_i4(stripes, num_stripes) RESULT(res)
138  TYPE(xt_stripe), INTENT(in) :: stripes(*)
139  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
140  TYPE(xt_idxlist) :: res
141 
142  INTEGER(c_int) :: num_stripes_c
143 
144  IF (num_stripes > huge(num_stripes_c)) &
145  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
146  __file__, &
147  __line__)
148  num_stripes_c = int(num_stripes, c_int)
149  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
150  END FUNCTION xt_idxstripes_new_a1d_i4
151 
152  FUNCTION xt_idxstripes_new_a1d_i8(stripes, num_stripes) RESULT(res)
153  TYPE(xt_stripe), INTENT(in) :: stripes(*)
154  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
155  TYPE(xt_idxlist) :: res
156 
157  INTEGER(c_int) :: num_stripes_c
158 
159  IF (num_stripes > huge(num_stripes_c)) &
160  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
161  __file__, &
162  __line__)
163  num_stripes_c = int(num_stripes, c_int)
164  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
165  END FUNCTION xt_idxstripes_new_a1d_i8
166 
167  FUNCTION xt_idxstripes_new_a2d(stripes) RESULT(res)
168  TYPE(xt_stripe), INTENT(in) :: stripes(:,:)
169  TYPE(xt_idxlist) :: res
170 
171  INTEGER(c_int) :: num_stripes_c
172 
173  IF (SIZE(stripes) > huge(num_stripes_c)) &
174  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
175  __file__, &
176  __line__)
177  num_stripes_c = int(SIZE(stripes), c_int)
178  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
179  END FUNCTION xt_idxstripes_new_a2d
180 
181  FUNCTION xt_idxstripes_new_a2d_i2(stripes, num_stripes) RESULT(res)
182  TYPE(xt_stripe), INTENT(in) :: stripes(1,*)
183  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
184  TYPE(xt_idxlist) :: res
185 
186  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
187  int(num_stripes, c_int)))
188  END FUNCTION xt_idxstripes_new_a2d_i2
189 
190  FUNCTION xt_idxstripes_new_a2d_i4(stripes, num_stripes) RESULT(res)
191  TYPE(xt_stripe), INTENT(in) :: stripes(1,*)
192  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
193  TYPE(xt_idxlist) :: res
194  INTEGER(c_int) :: num_stripes_c
195 
196  IF (num_stripes > huge(num_stripes_c)) &
197  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
198  __file__, &
199  __line__)
200  num_stripes_c = int(num_stripes, c_int)
201  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
202  END FUNCTION xt_idxstripes_new_a2d_i4
203 
204  FUNCTION xt_idxstripes_new_a2d_i8(stripes, num_stripes) RESULT(res)
205  TYPE(xt_stripe), INTENT(in) :: stripes(1,*)
206  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
207  TYPE(xt_idxlist) :: res
208 
209  INTEGER(c_int) :: num_stripes_c
210 
211  IF (num_stripes > huge(num_stripes_c)) &
212  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
213  __file__, &
214  __line__)
215  num_stripes_c = int(num_stripes, c_int)
216  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
217  END FUNCTION xt_idxstripes_new_a2d_i8
218 
219  FUNCTION xt_idxstripes_new_a3d(stripes) RESULT(res)
220  TYPE(xt_stripe), INTENT(in) :: stripes(:,:,:)
221  TYPE(xt_idxlist) :: res
222 
223  INTEGER(c_int) :: num_stripes_c
224 
225  IF (SIZE(stripes) > huge(num_stripes_c)) &
226  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
227  __file__, &
228  __line__)
229  num_stripes_c = int(SIZE(stripes), c_int)
230  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
231  END FUNCTION xt_idxstripes_new_a3d
232 
233  FUNCTION xt_idxstripes_new_a3d_i2(stripes, num_stripes) RESULT(res)
234  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,*)
235  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
236  TYPE(xt_idxlist) :: res
237 
238  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
239  int(num_stripes, c_int)))
240  END FUNCTION xt_idxstripes_new_a3d_i2
241 
242  FUNCTION xt_idxstripes_new_a3d_i4(stripes, num_stripes) RESULT(res)
243  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,*)
244  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
245  TYPE(xt_idxlist) :: res
246 
247  INTEGER(c_int) :: num_stripes_c
248 
249  IF (num_stripes > huge(num_stripes_c)) &
250  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
251  __file__, &
252  __line__)
253  num_stripes_c = int(num_stripes, c_int)
254  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
255  END FUNCTION xt_idxstripes_new_a3d_i4
256 
257  FUNCTION xt_idxstripes_new_a3d_i8(stripes, num_stripes) RESULT(res)
258  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,*)
259  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
260  TYPE(xt_idxlist) :: res
261 
262  INTEGER(c_int) :: num_stripes_c
263 
264  IF (num_stripes > huge(num_stripes_c)) &
265  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
266  __file__, &
267  __line__)
268  num_stripes_c = int(num_stripes, c_int)
269  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
270  END FUNCTION xt_idxstripes_new_a3d_i8
271 
272  FUNCTION xt_idxstripes_new_a4d(stripes) RESULT(res)
273  TYPE(xt_stripe), INTENT(in) :: stripes(:,:,:,:)
274  TYPE(xt_idxlist) :: res
275 
276  INTEGER(c_int) :: num_stripes_c
277 
278  IF (SIZE(stripes) > huge(num_stripes_c)) &
279  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
280  __file__, &
281  __line__)
282  num_stripes_c = int(SIZE(stripes), c_int)
283  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
284  END FUNCTION xt_idxstripes_new_a4d
285 
286  FUNCTION xt_idxstripes_new_a4d_i2(stripes, num_stripes) RESULT(res)
287  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,*)
288  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
289  TYPE(xt_idxlist) :: res
290 
291  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
292  int(num_stripes, c_int)))
293  END FUNCTION xt_idxstripes_new_a4d_i2
294 
295  FUNCTION xt_idxstripes_new_a4d_i4(stripes, num_stripes) RESULT(res)
296  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,*)
297  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
298  TYPE(xt_idxlist) :: res
299 
300  INTEGER(c_int) :: num_stripes_c
301 
302  IF (num_stripes > huge(num_stripes_c)) &
303  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
304  __file__, &
305  __line__)
306  num_stripes_c = int(num_stripes, c_int)
307  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
308  END FUNCTION xt_idxstripes_new_a4d_i4
309 
310  FUNCTION xt_idxstripes_new_a4d_i8(stripes, num_stripes) RESULT(res)
311  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,*)
312  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
313  TYPE(xt_idxlist) :: res
314 
315  INTEGER(c_int) :: num_stripes_c
316 
317  IF (num_stripes > huge(num_stripes_c)) &
318  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
319  __file__, &
320  __line__)
321  num_stripes_c = int(num_stripes, c_int)
322  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
323  END FUNCTION xt_idxstripes_new_a4d_i8
324 
325  FUNCTION xt_idxstripes_new_a5d(stripes) RESULT(res)
326  TYPE(xt_stripe), INTENT(in) :: stripes(:,:,:,:,:)
327  TYPE(xt_idxlist) :: res
328 
329  INTEGER(c_int) :: num_stripes_c
330 
331  IF (SIZE(stripes) > huge(num_stripes_c)) &
332  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
333  __file__, &
334  __line__)
335  num_stripes_c = int(SIZE(stripes), c_int)
336  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
337  END FUNCTION xt_idxstripes_new_a5d
338 
339  FUNCTION xt_idxstripes_new_a5d_i2(stripes, num_stripes) RESULT(res)
340  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,*)
341  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
342  TYPE(xt_idxlist) :: res
343 
344  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
345  int(num_stripes, c_int)))
346  END FUNCTION xt_idxstripes_new_a5d_i2
347 
348  FUNCTION xt_idxstripes_new_a5d_i4(stripes, num_stripes) RESULT(res)
349  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,*)
350  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
351  TYPE(xt_idxlist) :: res
352 
353  INTEGER(c_int) :: num_stripes_c
354 
355  IF (num_stripes > huge(num_stripes_c)) &
356  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
357  __file__, &
358  __line__)
359  num_stripes_c = int(num_stripes, c_int)
360  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
361  END FUNCTION xt_idxstripes_new_a5d_i4
362 
363  FUNCTION xt_idxstripes_new_a5d_i8(stripes, num_stripes) RESULT(res)
364  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,*)
365  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
366  TYPE(xt_idxlist) :: res
367 
368  INTEGER(c_int) :: num_stripes_c
369 
370  IF (num_stripes > huge(num_stripes_c)) &
371  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
372  __file__, &
373  __line__)
374  num_stripes_c = int(num_stripes, c_int)
375  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
376  END FUNCTION xt_idxstripes_new_a5d_i8
377 
378  FUNCTION xt_idxstripes_new_a6d(stripes) RESULT(res)
379  TYPE(xt_stripe), INTENT(in) :: stripes(:,:,:,:,:,:)
380  TYPE(xt_idxlist) :: res
381 
382  INTEGER(c_int) :: num_stripes_c
383 
384  IF (SIZE(stripes) > huge(num_stripes_c)) &
385  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
386  __file__, &
387  __line__)
388  num_stripes_c = int(SIZE(stripes), c_int)
389  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
390  END FUNCTION xt_idxstripes_new_a6d
391 
392  FUNCTION xt_idxstripes_new_a6d_i2(stripes, num_stripes) RESULT(res)
393  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,1,*)
394  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
395  TYPE(xt_idxlist) :: res
396 
397  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
398  int(num_stripes, c_int)))
399  END FUNCTION xt_idxstripes_new_a6d_i2
400 
401  FUNCTION xt_idxstripes_new_a6d_i4(stripes, num_stripes) RESULT(res)
402  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,1,*)
403  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
404  TYPE(xt_idxlist) :: res
405 
406  INTEGER(c_int) :: num_stripes_c
407 
408  IF (num_stripes > huge(num_stripes_c)) &
409  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
410  __file__, &
411  __line__)
412  num_stripes_c = int(num_stripes, c_int)
413  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
414  END FUNCTION xt_idxstripes_new_a6d_i4
415 
416  FUNCTION xt_idxstripes_new_a6d_i8(stripes, num_stripes) RESULT(res)
417  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,1,*)
418  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
419  TYPE(xt_idxlist) :: res
420 
421  INTEGER(c_int) :: num_stripes_c
422 
423  IF (num_stripes > huge(num_stripes_c)) &
424  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
425  __file__, &
426  __line__)
427  num_stripes_c = int(num_stripes, c_int)
428  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
429  END FUNCTION xt_idxstripes_new_a6d_i8
430 
431  FUNCTION xt_idxstripes_new_a7d(stripes) RESULT(res)
432  TYPE(xt_stripe), INTENT(in) :: stripes(:,:,:,:,:,:,:)
433  TYPE(xt_idxlist) :: res
434 
435  INTEGER(c_int) :: num_stripes_c
436 
437  IF (SIZE(stripes) > huge(num_stripes_c)) &
438  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
439  __file__, &
440  __line__)
441  num_stripes_c = int(SIZE(stripes), c_int)
442  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
443  END FUNCTION xt_idxstripes_new_a7d
444 
445  FUNCTION xt_idxstripes_new_a7d_i2(stripes, num_stripes) RESULT(res)
446  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,1,1,*)
447  INTEGER(i2), VALUE, INTENT(in) :: num_stripes
448  TYPE(xt_idxlist) :: res
449 
450  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, &
451  int(num_stripes, c_int)))
452  END FUNCTION xt_idxstripes_new_a7d_i2
453 
454  FUNCTION xt_idxstripes_new_a7d_i4(stripes, num_stripes) RESULT(res)
455  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,1,1,*)
456  INTEGER(i4), VALUE, INTENT(in) :: num_stripes
457  TYPE(xt_idxlist) :: res
458 
459  INTEGER(c_int) :: num_stripes_c
460 
461  IF (num_stripes > huge(num_stripes_c)) &
462  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
463  __file__, &
464  __line__)
465  num_stripes_c = int(num_stripes, c_int)
466  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
467  END FUNCTION xt_idxstripes_new_a7d_i4
468 
469  FUNCTION xt_idxstripes_new_a7d_i8(stripes, num_stripes) RESULT(res)
470  TYPE(xt_stripe), INTENT(in) :: stripes(1,1,1,1,1,1,*)
471  INTEGER(i8), VALUE, INTENT(in) :: num_stripes
472  TYPE(xt_idxlist) :: res
473 
474  INTEGER(c_int) :: num_stripes_c
475 
476  IF (num_stripes > huge(num_stripes_c)) &
477  CALL xt_abort(xt_get_default_comm(), "too many idxstripes elements", &
478  __file__, &
479  __line__)
480  num_stripes_c = int(num_stripes, c_int)
481  res = xt_idxlist_c2f(xt_idxstripes_new_c(stripes, num_stripes_c))
482  END FUNCTION xt_idxstripes_new_a7d_i8
483 
484  FUNCTION xt_idxstripes_from_idxlist_new(idxlist_src) RESULT(idxstripes)
485  TYPE(xt_idxlist), INTENT(in) :: idxlist_src
486  TYPE(xt_idxlist) :: idxstripes
487  INTERFACE
488  FUNCTION xt_idxstripes_from_idxlist_new_c(idxlist_src) &
489  bind(c, name='xt_idxstripes_from_idxlist_new') result(idxstripes)
490  IMPORT :: c_ptr
491  TYPE(c_ptr), VALUE, INTENT(in) :: idxlist_src
492  TYPE(c_ptr) :: idxstripes
493  END FUNCTION xt_idxstripes_from_idxlist_new_c
494  END INTERFACE
495  idxstripes = xt_idxlist_c2f(&
496  xt_idxstripes_from_idxlist_new_c(xt_idxlist_f2c(idxlist_src)))
497  END FUNCTION xt_idxstripes_from_idxlist_new
498 
499 END MODULE xt_idxstripes
500 !
501 ! Local Variables:
502 ! f90-continuation-indent: 5
503 ! coding: utf-8
504 ! indent-tabs-mode: nil
505 ! show-trailing-whitespace: t
506 ! require-trailing-newline: t
507 ! End:
508 !
integer, parameter, public i8
Definition: xt_core_f.f90:60
integer, parameter, public i4
Definition: xt_core_f.f90:59
Xt_idxlist xt_idxstripes_from_idxlist_new(Xt_idxlist idxlist_src)
type(xt_idxlist) function, public xt_idxlist_c2f(idxlist)
integer, parameter, public i2
Definition: xt_core_f.f90:58
Xt_idxlist xt_idxstripes_new(struct Xt_stripe const *stripes, int num_stripes)