1! wrapfsidre.F
2! This file is generated by Shroud 0.12.2. Do not edit.
3!
4! Copyright (c) 2017-2021, Lawrence Livermore National Security, LLC and
5! other Axom Project Developers. See the top-level LICENSE file for details.
6!
7! SPDX-License-Identifier: (BSD-3-Clause)
8!>
9!! \file wrapfsidre.F
10!! \brief Shroud generated wrapper for sidre namespace
11!<
12! splicer begin file_top
13#include "axom/config.hpp"
14! splicer end file_top
15module axom_sidre
16    use iso_c_binding, only : C_INT, C_NULL_PTR, C_PTR
17    ! splicer begin module_use
18    ! map conduit type names to sidre type names
19    use conduit, only : &
20        SIDRE_NO_TYPE_ID    => CONDUIT_EMPTY_ID, &
21        SIDRE_INT8_ID       => CONDUIT_INT8_ID, &
22        SIDRE_INT16_ID      => CONDUIT_INT16_ID, &
23        SIDRE_INT32_ID      => CONDUIT_INT32_ID, &
24        SIDRE_INT64_ID      => CONDUIT_INT64_ID, &
25        SIDRE_UINT8_ID      => CONDUIT_UINT8_ID, &
26        SIDRE_UINT16_ID     => CONDUIT_UINT16_ID, &
27        SIDRE_UINT32_ID     => CONDUIT_UINT32_ID, &
28        SIDRE_UINT64_ID     => CONDUIT_UINT64_ID, &
29        SIDRE_FLOAT32_ID    => CONDUIT_FLOAT32_ID, &
30        SIDRE_FLOAT64_ID    => CONDUIT_FLOAT64_ID, &
31        SIDRE_CHAR8_STR_ID  => CONDUIT_CHAR8_STR_ID, &
32        SIDRE_INT_ID        => CONDUIT_INT_ID, &
33        SIDRE_UINT_ID       => CONDUIT_UINT_ID, &
34        SIDRE_LONG_ID       => CONDUIT_LONG_ID, &
35        SIDRE_ULONG_ID      => CONDUIT_ULONG_ID, &
36        SIDRE_FLOAT_ID      => CONDUIT_FLOAT_ID, &
37        SIDRE_DOUBLE_ID     => CONDUIT_DOUBLE_ID
38    use, intrinsic :: iso_c_binding, only : C_INT64_T
39    ! splicer end module_use
40    implicit none
41
42    ! splicer begin module_top
43    integer, parameter :: MAXNAMESIZE = 128
44
45    integer, parameter :: SIDRE_IndexType = C_INT64_T
46
47    integer, parameter :: invalid_index = -1_SIDRE_IndexType
48    ! splicer end module_top
49
50    type, bind(C) :: SIDRE_SHROUD_buffer_capsule
51        type(C_PTR) :: addr = C_NULL_PTR  ! address of C++ memory
52        integer(C_INT) :: idtor = 0       ! index of destructor
53    end type SIDRE_SHROUD_buffer_capsule
54
55    type SidreBuffer
56        type(SIDRE_SHROUD_buffer_capsule) :: cxxmem
57        ! splicer begin class.Buffer.component_part
58        ! splicer end class.Buffer.component_part
59    contains
60        procedure :: get_index => buffer_get_index
61        procedure :: get_num_views => buffer_get_num_views
62        procedure :: get_void_ptr => buffer_get_void_ptr
63        procedure :: get_type_id => buffer_get_type_id
64        procedure :: get_num_elements => buffer_get_num_elements
65        procedure :: get_total_bytes => buffer_get_total_bytes
66        procedure :: get_bytes_per_element => buffer_get_bytes_per_element
67        procedure :: describe_int32_t => buffer_describe_int32_t
68        procedure :: describe_int64_t => buffer_describe_int64_t
69        procedure :: allocate_existing => buffer_allocate_existing
70        procedure :: allocate_from_type_int32_t => buffer_allocate_from_type_int32_t
71        procedure :: allocate_from_type_int64_t => buffer_allocate_from_type_int64_t
72        procedure :: reallocate_int32_t => buffer_reallocate_int32_t
73        procedure :: reallocate_int64_t => buffer_reallocate_int64_t
74        procedure :: print => buffer_print
75        procedure :: get_instance => buffer_get_instance
76        procedure :: set_instance => buffer_set_instance
77        procedure :: associated => buffer_associated
78        generic :: allocate => allocate_existing,  &
79            allocate_from_type_int32_t, allocate_from_type_int64_t
80        generic :: describe => describe_int32_t, describe_int64_t
81        generic :: reallocate => reallocate_int32_t, reallocate_int64_t
82        ! splicer begin class.Buffer.type_bound_procedure_part
83        ! splicer end class.Buffer.type_bound_procedure_part
84    end type SidreBuffer
85
86    type, bind(C) :: SIDRE_SHROUD_group_capsule
87        type(C_PTR) :: addr = C_NULL_PTR  ! address of C++ memory
88        integer(C_INT) :: idtor = 0       ! index of destructor
89    end type SIDRE_SHROUD_group_capsule
90
91    type SidreGroup
92        type(SIDRE_SHROUD_group_capsule) :: cxxmem
93        ! splicer begin class.Group.component_part
94        ! splicer end class.Group.component_part
95    contains
96        procedure :: get_index => group_get_index
97        procedure :: get_name => group_get_name
98        procedure :: get_path => group_get_path
99        procedure :: get_path_name => group_get_path_name
100        procedure :: get_parent => group_get_parent
101        procedure :: get_num_groups => group_get_num_groups
102        procedure :: get_num_views => group_get_num_views
103        procedure :: get_data_store => group_get_data_store
104        procedure :: has_view => group_has_view
105        procedure :: has_child_view => group_has_child_view
106        procedure :: get_view_index => group_get_view_index
107        procedure :: get_view_name_int32_t => group_get_view_name_int32_t
108        procedure :: get_view_name_int64_t => group_get_view_name_int64_t
109        procedure :: get_view_from_name => group_get_view_from_name
110        procedure :: get_view_from_index_int32_t => group_get_view_from_index_int32_t
111        procedure :: get_view_from_index_int64_t => group_get_view_from_index_int64_t
112        procedure :: get_first_valid_view_index => group_get_first_valid_view_index
113        procedure :: get_next_valid_view_index_int32_t => group_get_next_valid_view_index_int32_t
114        procedure :: get_next_valid_view_index_int64_t => group_get_next_valid_view_index_int64_t
115        procedure :: create_view_empty => group_create_view_empty
116        procedure :: create_view_from_type_int32_t => group_create_view_from_type_int32_t
117        procedure :: create_view_from_type_int64_t => group_create_view_from_type_int64_t
118        procedure :: create_view_from_shape => group_create_view_from_shape
119        procedure :: create_view_into_buffer => group_create_view_into_buffer
120        procedure :: create_view_from_type_and_buffer_int32_t => group_create_view_from_type_and_buffer_int32_t
121        procedure :: create_view_from_type_and_buffer_int64_t => group_create_view_from_type_and_buffer_int64_t
122        procedure :: create_view_from_shape_and_buffer => group_create_view_from_shape_and_buffer
123        procedure :: create_view_external => group_create_view_external
124        procedure :: create_view_from_type_external_int32_t => group_create_view_from_type_external_int32_t
125        procedure :: create_view_from_type_external_int64_t => group_create_view_from_type_external_int64_t
126        procedure :: create_view_from_shape_external => group_create_view_from_shape_external
127        procedure :: create_view_and_allocate_nelems_int32_t => group_create_view_and_allocate_nelems_int32_t
128        procedure :: create_view_and_allocate_nelems_int64_t => group_create_view_and_allocate_nelems_int64_t
129        procedure :: create_view_and_allocate_shape => group_create_view_and_allocate_shape
130        procedure :: create_view_scalar_int => group_create_view_scalar_int
131        procedure :: create_view_scalar_long => group_create_view_scalar_long
132        procedure :: create_view_scalar_float => group_create_view_scalar_float
133        procedure :: create_view_scalar_double => group_create_view_scalar_double
134        procedure :: create_view_string => group_create_view_string
135        procedure :: destroy_view => group_destroy_view
136        procedure :: destroy_view_and_data_name => group_destroy_view_and_data_name
137        procedure :: destroy_view_and_data_index_int32_t => group_destroy_view_and_data_index_int32_t
138        procedure :: destroy_view_and_data_index_int64_t => group_destroy_view_and_data_index_int64_t
139        procedure :: move_view => group_move_view
140        procedure :: copy_view => group_copy_view
141        procedure :: has_group => group_has_group
142        procedure :: has_child_group => group_has_child_group
143        procedure :: get_group_index => group_get_group_index
144        procedure :: get_group_name_int32_t => group_get_group_name_int32_t
145        procedure :: get_group_name_int64_t => group_get_group_name_int64_t
146        procedure :: get_group_from_name => group_get_group_from_name
147        procedure :: get_group_from_index_int32_t => group_get_group_from_index_int32_t
148        procedure :: get_group_from_index_int64_t => group_get_group_from_index_int64_t
149        procedure :: get_first_valid_group_index => group_get_first_valid_group_index
150        procedure :: get_next_valid_group_index_int32_t => group_get_next_valid_group_index_int32_t
151        procedure :: get_next_valid_group_index_int64_t => group_get_next_valid_group_index_int64_t
152        procedure :: create_group => group_create_group
153        procedure :: destroy_group_name => group_destroy_group_name
154        procedure :: destroy_group_index_int32_t => group_destroy_group_index_int32_t
155        procedure :: destroy_group_index_int64_t => group_destroy_group_index_int64_t
156        procedure :: move_group => group_move_group
157        procedure :: print => group_print
158        procedure :: is_equivalent_to => group_is_equivalent_to
159        procedure :: save => group_save
160        procedure :: load_0 => group_load_0
161        procedure :: load_1 => group_load_1
162        procedure :: load_external_data => group_load_external_data
163        procedure :: rename => group_rename
164        procedure :: get_instance => group_get_instance
165        procedure :: set_instance => group_set_instance
166        procedure :: associated => group_associated
167        generic :: create_view => create_view_empty,  &
168            create_view_from_type_int32_t, create_view_from_type_int64_t &
169            , create_view_from_shape, create_view_into_buffer,  &
170            create_view_from_type_and_buffer_int32_t,  &
171            create_view_from_type_and_buffer_int64_t,  &
172            create_view_from_shape_and_buffer, create_view_external,  &
173            create_view_from_type_external_int32_t,  &
174            create_view_from_type_external_int64_t,  &
175            create_view_from_shape_external
176        generic :: create_view_and_allocate =>  &
177            create_view_and_allocate_nelems_int32_t,  &
178            create_view_and_allocate_nelems_int64_t,  &
179            create_view_and_allocate_shape
180        generic :: create_view_scalar => create_view_scalar_int,  &
181            create_view_scalar_long, create_view_scalar_float,  &
182            create_view_scalar_double
183        generic :: destroy_group => destroy_group_name,  &
184            destroy_group_index_int32_t, destroy_group_index_int64_t
185        generic :: destroy_view_and_data => destroy_view_and_data_name,  &
186            destroy_view_and_data_index_int32_t,  &
187            destroy_view_and_data_index_int64_t
188        generic :: get_group => get_group_from_name,  &
189            get_group_from_index_int32_t, get_group_from_index_int64_t
190        generic :: get_group_name => get_group_name_int32_t,  &
191            get_group_name_int64_t
192        generic :: get_next_valid_group_index =>  &
193            get_next_valid_group_index_int32_t,  &
194            get_next_valid_group_index_int64_t
195        generic :: get_next_valid_view_index =>  &
196            get_next_valid_view_index_int32_t,  &
197            get_next_valid_view_index_int64_t
198        generic :: get_view => get_view_from_name,  &
199            get_view_from_index_int32_t, get_view_from_index_int64_t
200        generic :: get_view_name => get_view_name_int32_t,  &
201            get_view_name_int64_t
202        generic :: load => load_0, load_1
203        ! splicer begin class.Group.type_bound_procedure_part
204        procedure :: get_scalar_int => group_get_scalar_int
205        procedure :: get_scalar_long => group_get_scalar_long
206        procedure :: get_scalar_float => group_get_scalar_float
207        procedure :: get_scalar_double => group_get_scalar_double
208        generic :: get_scalar => &
209            get_scalar_int,  &
210            get_scalar_long,  &
211            get_scalar_float,  &
212            get_scalar_double
213        procedure :: set_scalar_int => group_set_scalar_int
214        procedure :: set_scalar_long => group_set_scalar_long
215        procedure :: set_scalar_float => group_set_scalar_float
216        procedure :: set_scalar_double => group_set_scalar_double
217        generic :: set_scalar => &
218            set_scalar_int,  &
219            set_scalar_long,  &
220            set_scalar_float,  &
221            set_scalar_double
222        procedure :: create_array_view_int_scalar => group_create_array_view_int_scalar
223        procedure :: create_array_view_int_1d => group_create_array_view_int_1d
224        procedure :: create_array_view_int_2d => group_create_array_view_int_2d
225        procedure :: create_array_view_int_3d => group_create_array_view_int_3d
226        procedure :: create_array_view_int_4d => group_create_array_view_int_4d
227        procedure :: create_array_view_long_scalar => group_create_array_view_long_scalar
228        procedure :: create_array_view_long_1d => group_create_array_view_long_1d
229        procedure :: create_array_view_long_2d => group_create_array_view_long_2d
230        procedure :: create_array_view_long_3d => group_create_array_view_long_3d
231        procedure :: create_array_view_long_4d => group_create_array_view_long_4d
232        procedure :: create_array_view_float_scalar => group_create_array_view_float_scalar
233        procedure :: create_array_view_float_1d => group_create_array_view_float_1d
234        procedure :: create_array_view_float_2d => group_create_array_view_float_2d
235        procedure :: create_array_view_float_3d => group_create_array_view_float_3d
236        procedure :: create_array_view_float_4d => group_create_array_view_float_4d
237        procedure :: create_array_view_double_scalar => group_create_array_view_double_scalar
238        procedure :: create_array_view_double_1d => group_create_array_view_double_1d
239        procedure :: create_array_view_double_2d => group_create_array_view_double_2d
240        procedure :: create_array_view_double_3d => group_create_array_view_double_3d
241        procedure :: create_array_view_double_4d => group_create_array_view_double_4d
242        generic :: create_array_view => &
243            create_array_view_int_scalar,  &
244            create_array_view_int_1d,  &
245            create_array_view_int_2d,  &
246            create_array_view_int_3d,  &
247            create_array_view_int_4d,  &
248            create_array_view_long_scalar,  &
249            create_array_view_long_1d,  &
250            create_array_view_long_2d,  &
251            create_array_view_long_3d,  &
252            create_array_view_long_4d,  &
253            create_array_view_float_scalar,  &
254            create_array_view_float_1d,  &
255            create_array_view_float_2d,  &
256            create_array_view_float_3d,  &
257            create_array_view_float_4d,  &
258            create_array_view_double_scalar,  &
259            create_array_view_double_1d,  &
260            create_array_view_double_2d,  &
261            create_array_view_double_3d,  &
262            create_array_view_double_4d
263        procedure :: set_array_data_ptr_int_scalar => group_set_array_data_ptr_int_scalar
264        procedure :: set_array_data_ptr_int_1d => group_set_array_data_ptr_int_1d
265        procedure :: set_array_data_ptr_int_2d => group_set_array_data_ptr_int_2d
266        procedure :: set_array_data_ptr_int_3d => group_set_array_data_ptr_int_3d
267        procedure :: set_array_data_ptr_int_4d => group_set_array_data_ptr_int_4d
268        procedure :: set_array_data_ptr_long_scalar => group_set_array_data_ptr_long_scalar
269        procedure :: set_array_data_ptr_long_1d => group_set_array_data_ptr_long_1d
270        procedure :: set_array_data_ptr_long_2d => group_set_array_data_ptr_long_2d
271        procedure :: set_array_data_ptr_long_3d => group_set_array_data_ptr_long_3d
272        procedure :: set_array_data_ptr_long_4d => group_set_array_data_ptr_long_4d
273        procedure :: set_array_data_ptr_float_scalar => group_set_array_data_ptr_float_scalar
274        procedure :: set_array_data_ptr_float_1d => group_set_array_data_ptr_float_1d
275        procedure :: set_array_data_ptr_float_2d => group_set_array_data_ptr_float_2d
276        procedure :: set_array_data_ptr_float_3d => group_set_array_data_ptr_float_3d
277        procedure :: set_array_data_ptr_float_4d => group_set_array_data_ptr_float_4d
278        procedure :: set_array_data_ptr_double_scalar => group_set_array_data_ptr_double_scalar
279        procedure :: set_array_data_ptr_double_1d => group_set_array_data_ptr_double_1d
280        procedure :: set_array_data_ptr_double_2d => group_set_array_data_ptr_double_2d
281        procedure :: set_array_data_ptr_double_3d => group_set_array_data_ptr_double_3d
282        procedure :: set_array_data_ptr_double_4d => group_set_array_data_ptr_double_4d
283        generic :: set_array_data_ptr => &
284            set_array_data_ptr_int_scalar,  &
285            set_array_data_ptr_int_1d,  &
286            set_array_data_ptr_int_2d,  &
287            set_array_data_ptr_int_3d,  &
288            set_array_data_ptr_int_4d,  &
289            set_array_data_ptr_long_scalar,  &
290            set_array_data_ptr_long_1d,  &
291            set_array_data_ptr_long_2d,  &
292            set_array_data_ptr_long_3d,  &
293            set_array_data_ptr_long_4d,  &
294            set_array_data_ptr_float_scalar,  &
295            set_array_data_ptr_float_1d,  &
296            set_array_data_ptr_float_2d,  &
297            set_array_data_ptr_float_3d,  &
298            set_array_data_ptr_float_4d,  &
299            set_array_data_ptr_double_scalar,  &
300            set_array_data_ptr_double_1d,  &
301            set_array_data_ptr_double_2d,  &
302            set_array_data_ptr_double_3d,  &
303            set_array_data_ptr_double_4d
304        procedure :: get_string => group_get_string
305        procedure :: set_string => group_set_string
306        ! splicer end class.Group.type_bound_procedure_part
307    end type SidreGroup
308
309    type, bind(C) :: SIDRE_SHROUD_view_capsule
310        type(C_PTR) :: addr = C_NULL_PTR  ! address of C++ memory
311        integer(C_INT) :: idtor = 0       ! index of destructor
312    end type SIDRE_SHROUD_view_capsule
313
314    type SidreView
315        type(SIDRE_SHROUD_view_capsule) :: cxxmem
316        ! splicer begin class.View.component_part
317        ! splicer end class.View.component_part
318    contains
319        procedure :: get_index => view_get_index
320        procedure :: get_name => view_get_name
321        procedure :: get_path => view_get_path
322        procedure :: get_path_name => view_get_path_name
323        procedure :: get_owning_group => view_get_owning_group
324        procedure :: has_buffer => view_has_buffer
325        procedure :: get_buffer => view_get_buffer
326        procedure :: is_external => view_is_external
327        procedure :: is_allocated => view_is_allocated
328        procedure :: is_applied => view_is_applied
329        procedure :: is_described => view_is_described
330        procedure :: is_empty => view_is_empty
331        procedure :: is_opaque => view_is_opaque
332        procedure :: is_scalar => view_is_scalar
333        procedure :: is_string => view_is_string
334        procedure :: get_type_id => view_get_type_id
335        procedure :: get_total_bytes => view_get_total_bytes
336        procedure :: get_num_elements => view_get_num_elements
337        procedure :: get_bytes_per_element => view_get_bytes_per_element
338        procedure :: get_offset => view_get_offset
339        procedure :: get_stride => view_get_stride
340        procedure :: get_num_dimensions => view_get_num_dimensions
341        procedure :: get_shape => view_get_shape
342        procedure :: allocate_simple => view_allocate_simple
343        procedure :: allocate_from_type_int32_t => view_allocate_from_type_int32_t
344        procedure :: allocate_from_type_int64_t => view_allocate_from_type_int64_t
345        procedure :: reallocate_int32_t => view_reallocate_int32_t
346        procedure :: reallocate_int64_t => view_reallocate_int64_t
347        procedure :: attach_buffer_only => view_attach_buffer_only
348        procedure :: attach_buffer_type_int32_t => view_attach_buffer_type_int32_t
349        procedure :: attach_buffer_type_int64_t => view_attach_buffer_type_int64_t
350        procedure :: attach_buffer_shape => view_attach_buffer_shape
351        procedure :: clear => view_clear
352        procedure :: apply_0 => view_apply_0
353        procedure :: apply_nelems => view_apply_nelems
354        procedure :: apply_nelems_offset => view_apply_nelems_offset
355        procedure :: apply_nelems_offset_stride => view_apply_nelems_offset_stride
356        procedure :: apply_type_nelems => view_apply_type_nelems
357        procedure :: apply_type_nelems_offset => view_apply_type_nelems_offset
358        procedure :: apply_type_nelems_offset_stride => view_apply_type_nelems_offset_stride
359        procedure :: apply_type_shape => view_apply_type_shape
360        procedure :: set_scalar_int => view_set_scalar_int
361        procedure :: set_scalar_long => view_set_scalar_long
362        procedure :: set_scalar_float => view_set_scalar_float
363        procedure :: set_scalar_double => view_set_scalar_double
364        procedure :: set_string => view_set_string
365        procedure :: set_external_data_ptr_only => view_set_external_data_ptr_only
366        procedure :: set_external_data_ptr_type_int32_t => view_set_external_data_ptr_type_int32_t
367        procedure :: set_external_data_ptr_type_int64_t => view_set_external_data_ptr_type_int64_t
368        procedure :: set_external_data_ptr_shape => view_set_external_data_ptr_shape
369        procedure :: get_string => view_get_string
370        procedure :: get_data_int => view_get_data_int
371        procedure :: get_data_long => view_get_data_long
372        procedure :: get_data_float => view_get_data_float
373        procedure :: get_data_double => view_get_data_double
374        procedure :: get_void_ptr => view_get_void_ptr
375        procedure :: print => view_print
376        procedure :: rename => view_rename
377        procedure :: get_instance => view_get_instance
378        procedure :: set_instance => view_set_instance
379        procedure :: associated => view_associated
380        generic :: allocate => allocate_simple,  &
381            allocate_from_type_int32_t, allocate_from_type_int64_t
382        generic :: apply => apply_0, apply_nelems, apply_nelems_offset,  &
383            apply_nelems_offset_stride, apply_type_nelems,  &
384            apply_type_nelems_offset, apply_type_nelems_offset_stride,  &
385            apply_type_shape
386        generic :: attach_buffer => attach_buffer_only,  &
387            attach_buffer_type_int32_t, attach_buffer_type_int64_t,  &
388            attach_buffer_shape
389        generic :: reallocate => reallocate_int32_t, reallocate_int64_t
390        generic :: set_external_data_ptr => set_external_data_ptr_only,  &
391            set_external_data_ptr_type_int32_t,  &
392            set_external_data_ptr_type_int64_t,  &
393            set_external_data_ptr_shape
394        generic :: set_scalar => set_scalar_int, set_scalar_long,  &
395            set_scalar_float, set_scalar_double
396        ! splicer begin class.View.type_bound_procedure_part
397        procedure :: get_data_int_scalar_ptr => view_get_data_int_scalar_ptr
398        procedure :: get_data_int_1d_ptr => view_get_data_int_1d_ptr
399        procedure :: get_data_int_2d_ptr => view_get_data_int_2d_ptr
400        procedure :: get_data_int_3d_ptr => view_get_data_int_3d_ptr
401        procedure :: get_data_int_4d_ptr => view_get_data_int_4d_ptr
402        procedure :: get_data_long_scalar_ptr => view_get_data_long_scalar_ptr
403        procedure :: get_data_long_1d_ptr => view_get_data_long_1d_ptr
404        procedure :: get_data_long_2d_ptr => view_get_data_long_2d_ptr
405        procedure :: get_data_long_3d_ptr => view_get_data_long_3d_ptr
406        procedure :: get_data_long_4d_ptr => view_get_data_long_4d_ptr
407        procedure :: get_data_float_scalar_ptr => view_get_data_float_scalar_ptr
408        procedure :: get_data_float_1d_ptr => view_get_data_float_1d_ptr
409        procedure :: get_data_float_2d_ptr => view_get_data_float_2d_ptr
410        procedure :: get_data_float_3d_ptr => view_get_data_float_3d_ptr
411        procedure :: get_data_float_4d_ptr => view_get_data_float_4d_ptr
412        procedure :: get_data_double_scalar_ptr => view_get_data_double_scalar_ptr
413        procedure :: get_data_double_1d_ptr => view_get_data_double_1d_ptr
414        procedure :: get_data_double_2d_ptr => view_get_data_double_2d_ptr
415        procedure :: get_data_double_3d_ptr => view_get_data_double_3d_ptr
416        procedure :: get_data_double_4d_ptr => view_get_data_double_4d_ptr
417        generic :: get_data => &
418            get_data_int_scalar_ptr,  &
419            get_data_int_1d_ptr,  &
420            get_data_int_2d_ptr,  &
421            get_data_int_3d_ptr,  &
422            get_data_int_4d_ptr,  &
423            get_data_long_scalar_ptr,  &
424            get_data_long_1d_ptr,  &
425            get_data_long_2d_ptr,  &
426            get_data_long_3d_ptr,  &
427            get_data_long_4d_ptr,  &
428            get_data_float_scalar_ptr,  &
429            get_data_float_1d_ptr,  &
430            get_data_float_2d_ptr,  &
431            get_data_float_3d_ptr,  &
432            get_data_float_4d_ptr,  &
433            get_data_double_scalar_ptr,  &
434            get_data_double_1d_ptr,  &
435            get_data_double_2d_ptr,  &
436            get_data_double_3d_ptr,  &
437            get_data_double_4d_ptr
438        procedure :: set_array_data_ptr_int_scalar => view_set_array_data_ptr_int_scalar
439        procedure :: set_array_data_ptr_int_1d => view_set_array_data_ptr_int_1d
440        procedure :: set_array_data_ptr_int_2d => view_set_array_data_ptr_int_2d
441        procedure :: set_array_data_ptr_int_3d => view_set_array_data_ptr_int_3d
442        procedure :: set_array_data_ptr_int_4d => view_set_array_data_ptr_int_4d
443        procedure :: set_array_data_ptr_long_scalar => view_set_array_data_ptr_long_scalar
444        procedure :: set_array_data_ptr_long_1d => view_set_array_data_ptr_long_1d
445        procedure :: set_array_data_ptr_long_2d => view_set_array_data_ptr_long_2d
446        procedure :: set_array_data_ptr_long_3d => view_set_array_data_ptr_long_3d
447        procedure :: set_array_data_ptr_long_4d => view_set_array_data_ptr_long_4d
448        procedure :: set_array_data_ptr_float_scalar => view_set_array_data_ptr_float_scalar
449        procedure :: set_array_data_ptr_float_1d => view_set_array_data_ptr_float_1d
450        procedure :: set_array_data_ptr_float_2d => view_set_array_data_ptr_float_2d
451        procedure :: set_array_data_ptr_float_3d => view_set_array_data_ptr_float_3d
452        procedure :: set_array_data_ptr_float_4d => view_set_array_data_ptr_float_4d
453        procedure :: set_array_data_ptr_double_scalar => view_set_array_data_ptr_double_scalar
454        procedure :: set_array_data_ptr_double_1d => view_set_array_data_ptr_double_1d
455        procedure :: set_array_data_ptr_double_2d => view_set_array_data_ptr_double_2d
456        procedure :: set_array_data_ptr_double_3d => view_set_array_data_ptr_double_3d
457        procedure :: set_array_data_ptr_double_4d => view_set_array_data_ptr_double_4d
458        generic :: set_array_data_ptr => &
459            set_array_data_ptr_int_scalar,  &
460            set_array_data_ptr_int_1d,  &
461            set_array_data_ptr_int_2d,  &
462            set_array_data_ptr_int_3d,  &
463            set_array_data_ptr_int_4d,  &
464            set_array_data_ptr_long_scalar,  &
465            set_array_data_ptr_long_1d,  &
466            set_array_data_ptr_long_2d,  &
467            set_array_data_ptr_long_3d,  &
468            set_array_data_ptr_long_4d,  &
469            set_array_data_ptr_float_scalar,  &
470            set_array_data_ptr_float_1d,  &
471            set_array_data_ptr_float_2d,  &
472            set_array_data_ptr_float_3d,  &
473            set_array_data_ptr_float_4d,  &
474            set_array_data_ptr_double_scalar,  &
475            set_array_data_ptr_double_1d,  &
476            set_array_data_ptr_double_2d,  &
477            set_array_data_ptr_double_3d,  &
478            set_array_data_ptr_double_4d
479        ! splicer end class.View.type_bound_procedure_part
480    end type SidreView
481
482    type, bind(C) :: SIDRE_SHROUD_datastore_capsule
483        type(C_PTR) :: addr = C_NULL_PTR  ! address of C++ memory
484        integer(C_INT) :: idtor = 0       ! index of destructor
485    end type SIDRE_SHROUD_datastore_capsule
486
487    type SidreDataStore
488        type(SIDRE_SHROUD_datastore_capsule) :: cxxmem
489        ! splicer begin class.DataStore.component_part
490        ! splicer end class.DataStore.component_part
491    contains
492        procedure :: delete => datastore_delete
493        procedure :: get_root => datastore_get_root
494        procedure :: get_num_buffers => datastore_get_num_buffers
495        procedure :: get_buffer_int32_t => datastore_get_buffer_int32_t
496        procedure :: get_buffer_int64_t => datastore_get_buffer_int64_t
497        procedure :: create_buffer_empty => datastore_create_buffer_empty
498        procedure :: create_buffer_from_type_int32_t => datastore_create_buffer_from_type_int32_t
499        procedure :: create_buffer_from_type_int64_t => datastore_create_buffer_from_type_int64_t
500        procedure :: destroy_buffer_int32_t => datastore_destroy_buffer_int32_t
501        procedure :: destroy_buffer_int64_t => datastore_destroy_buffer_int64_t
502        procedure :: generate_blueprint_index_0 => datastore_generate_blueprint_index_0
503#ifdef AXOM_USE_MPI
504        procedure :: generate_blueprint_index_1 => datastore_generate_blueprint_index_1
505#endif
506        procedure :: print => datastore_print
507        procedure :: get_instance => datastore_get_instance
508        procedure :: set_instance => datastore_set_instance
509        procedure :: associated => datastore_associated
510        generic :: create_buffer => create_buffer_empty,  &
511            create_buffer_from_type_int32_t,  &
512            create_buffer_from_type_int64_t
513        generic :: destroy_buffer => destroy_buffer_int32_t,  &
514            destroy_buffer_int64_t
515        generic :: generate_blueprint_index => generate_blueprint_index_0
516#ifdef AXOM_USE_MPI
517        generic :: generate_blueprint_index => generate_blueprint_index_1
518#endif
519        generic :: get_buffer => get_buffer_int32_t, get_buffer_int64_t
520        ! splicer begin class.DataStore.type_bound_procedure_part
521        ! splicer end class.DataStore.type_bound_procedure_part
522    end type SidreDataStore
523
524    interface operator (.eq.)
525        module procedure buffer_eq
526        module procedure group_eq
527        module procedure view_eq
528        module procedure datastore_eq
529    end interface
530
531    interface operator (.ne.)
532        module procedure buffer_ne
533        module procedure group_ne
534        module procedure view_ne
535        module procedure datastore_ne
536    end interface
537
538    interface
539
540        pure function c_buffer_get_index(self) &
541                result(SHT_rv) &
542                bind(C, name="SIDRE_Buffer_get_index")
543            use iso_c_binding, only : C_INT64_T
544            import :: SIDRE_SHROUD_buffer_capsule
545            implicit none
546            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
547            integer(C_INT64_T) :: SHT_rv
548        end function c_buffer_get_index
549
550        pure function c_buffer_get_num_views(self) &
551                result(SHT_rv) &
552                bind(C, name="SIDRE_Buffer_get_num_views")
553            use iso_c_binding, only : C_SIZE_T
554            import :: SIDRE_SHROUD_buffer_capsule
555            implicit none
556            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
557            integer(C_SIZE_T) :: SHT_rv
558        end function c_buffer_get_num_views
559
560        function c_buffer_get_void_ptr(self) &
561                result(SHT_rv) &
562                bind(C, name="SIDRE_Buffer_get_void_ptr")
563            use iso_c_binding, only : C_PTR
564            import :: SIDRE_SHROUD_buffer_capsule
565            implicit none
566            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
567            type(C_PTR) :: SHT_rv
568        end function c_buffer_get_void_ptr
569
570        pure function c_buffer_get_type_id(self) &
571                result(SHT_rv) &
572                bind(C, name="SIDRE_Buffer_get_type_id")
573            use iso_c_binding, only : C_INT
574            import :: SIDRE_SHROUD_buffer_capsule
575            implicit none
576            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
577            integer(C_INT) :: SHT_rv
578        end function c_buffer_get_type_id
579
580        pure function c_buffer_get_num_elements(self) &
581                result(SHT_rv) &
582                bind(C, name="SIDRE_Buffer_get_num_elements")
583            use iso_c_binding, only : C_SIZE_T
584            import :: SIDRE_SHROUD_buffer_capsule
585            implicit none
586            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
587            integer(C_SIZE_T) :: SHT_rv
588        end function c_buffer_get_num_elements
589
590        pure function c_buffer_get_total_bytes(self) &
591                result(SHT_rv) &
592                bind(C, name="SIDRE_Buffer_get_total_bytes")
593            use iso_c_binding, only : C_SIZE_T
594            import :: SIDRE_SHROUD_buffer_capsule
595            implicit none
596            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
597            integer(C_SIZE_T) :: SHT_rv
598        end function c_buffer_get_total_bytes
599
600        pure function c_buffer_get_bytes_per_element(self) &
601                result(SHT_rv) &
602                bind(C, name="SIDRE_Buffer_get_bytes_per_element")
603            use iso_c_binding, only : C_SIZE_T
604            import :: SIDRE_SHROUD_buffer_capsule
605            implicit none
606            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
607            integer(C_SIZE_T) :: SHT_rv
608        end function c_buffer_get_bytes_per_element
609
610        subroutine c_buffer_describe(self, type, num_elems) &
611                bind(C, name="SIDRE_Buffer_describe")
612            use iso_c_binding, only : C_INT, C_INT64_T
613            import :: SIDRE_SHROUD_buffer_capsule
614            implicit none
615            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
616            integer(C_INT), value, intent(IN) :: type
617            integer(C_INT64_T), value, intent(IN) :: num_elems
618        end subroutine c_buffer_describe
619
620        subroutine c_buffer_allocate_existing(self) &
621                bind(C, name="SIDRE_Buffer_allocate_existing")
622            import :: SIDRE_SHROUD_buffer_capsule
623            implicit none
624            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
625        end subroutine c_buffer_allocate_existing
626
627        subroutine c_buffer_allocate_from_type(self, type, num_elems) &
628                bind(C, name="SIDRE_Buffer_allocate_from_type")
629            use iso_c_binding, only : C_INT, C_INT64_T
630            import :: SIDRE_SHROUD_buffer_capsule
631            implicit none
632            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
633            integer(C_INT), value, intent(IN) :: type
634            integer(C_INT64_T), value, intent(IN) :: num_elems
635        end subroutine c_buffer_allocate_from_type
636
637        subroutine c_buffer_reallocate(self, num_elems) &
638                bind(C, name="SIDRE_Buffer_reallocate")
639            use iso_c_binding, only : C_INT64_T
640            import :: SIDRE_SHROUD_buffer_capsule
641            implicit none
642            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
643            integer(C_INT64_T), value, intent(IN) :: num_elems
644        end subroutine c_buffer_reallocate
645
646        subroutine c_buffer_print(self) &
647                bind(C, name="SIDRE_Buffer_print")
648            import :: SIDRE_SHROUD_buffer_capsule
649            implicit none
650            type(SIDRE_SHROUD_buffer_capsule), intent(IN) :: self
651        end subroutine c_buffer_print
652
653        ! splicer begin class.Buffer.additional_interfaces
654        ! splicer end class.Buffer.additional_interfaces
655
656        function c_group_get_index(self) &
657                result(SHT_rv) &
658                bind(C, name="SIDRE_Group_get_index")
659            use iso_c_binding, only : C_INT64_T
660            import :: SIDRE_SHROUD_group_capsule
661            implicit none
662            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
663            integer(C_INT64_T) :: SHT_rv
664        end function c_group_get_index
665
666        pure function c_group_get_name(self) &
667                result(SHT_rv) &
668                bind(C, name="SIDRE_Group_get_name")
669            use iso_c_binding, only : C_PTR
670            import :: SIDRE_SHROUD_group_capsule
671            implicit none
672            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
673            type(C_PTR) SHT_rv
674        end function c_group_get_name
675
676        subroutine c_group_get_name_bufferify(self, SHF_rv, NSHF_rv) &
677                bind(C, name="SIDRE_Group_get_name_bufferify")
678            use iso_c_binding, only : C_CHAR, C_INT
679            import :: SIDRE_SHROUD_group_capsule
680            implicit none
681            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
682            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
683            integer(C_INT), value, intent(IN) :: NSHF_rv
684        end subroutine c_group_get_name_bufferify
685
686        subroutine c_group_get_path_bufferify(self, SHF_rv, NSHF_rv) &
687                bind(C, name="SIDRE_Group_get_path_bufferify")
688            use iso_c_binding, only : C_CHAR, C_INT
689            import :: SIDRE_SHROUD_group_capsule
690            implicit none
691            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
692            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
693            integer(C_INT), value, intent(IN) :: NSHF_rv
694        end subroutine c_group_get_path_bufferify
695
696        subroutine c_group_get_path_name_bufferify(self, SHF_rv, &
697                NSHF_rv) &
698                bind(C, name="SIDRE_Group_get_path_name_bufferify")
699            use iso_c_binding, only : C_CHAR, C_INT
700            import :: SIDRE_SHROUD_group_capsule
701            implicit none
702            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
703            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
704            integer(C_INT), value, intent(IN) :: NSHF_rv
705        end subroutine c_group_get_path_name_bufferify
706
707        function c_group_get_parent(self, SHT_crv) &
708                result(SHT_rv) &
709                bind(C, name="SIDRE_Group_get_parent")
710            use iso_c_binding, only : C_PTR
711            import :: SIDRE_SHROUD_group_capsule
712            implicit none
713            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
714            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
715            type(C_PTR) SHT_rv
716        end function c_group_get_parent
717
718        pure function c_group_get_num_groups(self) &
719                result(SHT_rv) &
720                bind(C, name="SIDRE_Group_get_num_groups")
721            use iso_c_binding, only : C_SIZE_T
722            import :: SIDRE_SHROUD_group_capsule
723            implicit none
724            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
725            integer(C_SIZE_T) :: SHT_rv
726        end function c_group_get_num_groups
727
728        pure function c_group_get_num_views(self) &
729                result(SHT_rv) &
730                bind(C, name="SIDRE_Group_get_num_views")
731            use iso_c_binding, only : C_SIZE_T
732            import :: SIDRE_SHROUD_group_capsule
733            implicit none
734            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
735            integer(C_SIZE_T) :: SHT_rv
736        end function c_group_get_num_views
737
738        function c_group_get_data_store(self, SHT_crv) &
739                result(SHT_rv) &
740                bind(C, name="SIDRE_Group_get_data_store")
741            use iso_c_binding, only : C_PTR
742            import :: SIDRE_SHROUD_datastore_capsule, SIDRE_SHROUD_group_capsule
743            implicit none
744            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
745            type(SIDRE_SHROUD_datastore_capsule), intent(OUT) :: SHT_crv
746            type(C_PTR) SHT_rv
747        end function c_group_get_data_store
748
749        pure function c_group_has_view(self, path) &
750                result(SHT_rv) &
751                bind(C, name="SIDRE_Group_has_view")
752            use iso_c_binding, only : C_BOOL, C_CHAR
753            import :: SIDRE_SHROUD_group_capsule
754            implicit none
755            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
756            character(kind=C_CHAR), intent(IN) :: path(*)
757            logical(C_BOOL) :: SHT_rv
758        end function c_group_has_view
759
760        pure function c_group_has_view_bufferify(self, path, Lpath) &
761                result(SHT_rv) &
762                bind(C, name="SIDRE_Group_has_view_bufferify")
763            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
764            import :: SIDRE_SHROUD_group_capsule
765            implicit none
766            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
767            character(kind=C_CHAR), intent(IN) :: path(*)
768            integer(C_INT), value, intent(IN) :: Lpath
769            logical(C_BOOL) :: SHT_rv
770        end function c_group_has_view_bufferify
771
772        pure function c_group_has_child_view(self, name) &
773                result(SHT_rv) &
774                bind(C, name="SIDRE_Group_has_child_view")
775            use iso_c_binding, only : C_BOOL, C_CHAR
776            import :: SIDRE_SHROUD_group_capsule
777            implicit none
778            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
779            character(kind=C_CHAR), intent(IN) :: name(*)
780            logical(C_BOOL) :: SHT_rv
781        end function c_group_has_child_view
782
783        pure function c_group_has_child_view_bufferify(self, name, &
784                Lname) &
785                result(SHT_rv) &
786                bind(C, name="SIDRE_Group_has_child_view_bufferify")
787            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
788            import :: SIDRE_SHROUD_group_capsule
789            implicit none
790            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
791            character(kind=C_CHAR), intent(IN) :: name(*)
792            integer(C_INT), value, intent(IN) :: Lname
793            logical(C_BOOL) :: SHT_rv
794        end function c_group_has_child_view_bufferify
795
796        pure function c_group_get_view_index(self, name) &
797                result(SHT_rv) &
798                bind(C, name="SIDRE_Group_get_view_index")
799            use iso_c_binding, only : C_CHAR, C_INT64_T
800            import :: SIDRE_SHROUD_group_capsule
801            implicit none
802            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
803            character(kind=C_CHAR), intent(IN) :: name(*)
804            integer(C_INT64_T) :: SHT_rv
805        end function c_group_get_view_index
806
807        pure function c_group_get_view_index_bufferify(self, name, &
808                Lname) &
809                result(SHT_rv) &
810                bind(C, name="SIDRE_Group_get_view_index_bufferify")
811            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T
812            import :: SIDRE_SHROUD_group_capsule
813            implicit none
814            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
815            character(kind=C_CHAR), intent(IN) :: name(*)
816            integer(C_INT), value, intent(IN) :: Lname
817            integer(C_INT64_T) :: SHT_rv
818        end function c_group_get_view_index_bufferify
819
820        pure function c_group_get_view_name(self, idx) &
821                result(SHT_rv) &
822                bind(C, name="SIDRE_Group_get_view_name")
823            use iso_c_binding, only : C_INT64_T, C_PTR
824            import :: SIDRE_SHROUD_group_capsule
825            implicit none
826            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
827            integer(C_INT64_T), value, intent(IN) :: idx
828            type(C_PTR) SHT_rv
829        end function c_group_get_view_name
830
831        subroutine c_group_get_view_name_bufferify(self, idx, SHF_rv, &
832                NSHF_rv) &
833                bind(C, name="SIDRE_Group_get_view_name_bufferify")
834            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T
835            import :: SIDRE_SHROUD_group_capsule
836            implicit none
837            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
838            integer(C_INT64_T), value, intent(IN) :: idx
839            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
840            integer(C_INT), value, intent(IN) :: NSHF_rv
841        end subroutine c_group_get_view_name_bufferify
842
843        function c_group_get_view_from_name(self, path, SHT_crv) &
844                result(SHT_rv) &
845                bind(C, name="SIDRE_Group_get_view_from_name")
846            use iso_c_binding, only : C_CHAR, C_PTR
847            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
848            implicit none
849            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
850            character(kind=C_CHAR), intent(IN) :: path(*)
851            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
852            type(C_PTR) SHT_rv
853        end function c_group_get_view_from_name
854
855        function c_group_get_view_from_name_bufferify(self, path, Lpath, &
856                SHT_crv) &
857                result(SHT_rv) &
858                bind(C, name="SIDRE_Group_get_view_from_name_bufferify")
859            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
860            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
861            implicit none
862            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
863            character(kind=C_CHAR), intent(IN) :: path(*)
864            integer(C_INT), value, intent(IN) :: Lpath
865            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
866            type(C_PTR) SHT_rv
867        end function c_group_get_view_from_name_bufferify
868
869        function c_group_get_view_from_index(self, idx, SHT_crv) &
870                result(SHT_rv) &
871                bind(C, name="SIDRE_Group_get_view_from_index")
872            use iso_c_binding, only : C_INT64_T, C_PTR
873            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
874            implicit none
875            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
876            integer(C_INT64_T), value, intent(IN) :: idx
877            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
878            type(C_PTR) SHT_rv
879        end function c_group_get_view_from_index
880
881        pure function c_group_get_first_valid_view_index(self) &
882                result(SHT_rv) &
883                bind(C, name="SIDRE_Group_get_first_valid_view_index")
884            use iso_c_binding, only : C_INT64_T
885            import :: SIDRE_SHROUD_group_capsule
886            implicit none
887            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
888            integer(C_INT64_T) :: SHT_rv
889        end function c_group_get_first_valid_view_index
890
891        pure function c_group_get_next_valid_view_index(self, idx) &
892                result(SHT_rv) &
893                bind(C, name="SIDRE_Group_get_next_valid_view_index")
894            use iso_c_binding, only : C_INT64_T
895            import :: SIDRE_SHROUD_group_capsule
896            implicit none
897            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
898            integer(C_INT64_T), value, intent(IN) :: idx
899            integer(C_INT64_T) :: SHT_rv
900        end function c_group_get_next_valid_view_index
901
902        function c_group_create_view_empty(self, path, SHT_crv) &
903                result(SHT_rv) &
904                bind(C, name="SIDRE_Group_create_view_empty")
905            use iso_c_binding, only : C_CHAR, C_PTR
906            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
907            implicit none
908            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
909            character(kind=C_CHAR), intent(IN) :: path(*)
910            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
911            type(C_PTR) SHT_rv
912        end function c_group_create_view_empty
913
914        function c_group_create_view_empty_bufferify(self, path, Lpath, &
915                SHT_crv) &
916                result(SHT_rv) &
917                bind(C, name="SIDRE_Group_create_view_empty_bufferify")
918            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
919            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
920            implicit none
921            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
922            character(kind=C_CHAR), intent(IN) :: path(*)
923            integer(C_INT), value, intent(IN) :: Lpath
924            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
925            type(C_PTR) SHT_rv
926        end function c_group_create_view_empty_bufferify
927
928        function c_group_create_view_from_type(self, path, type, &
929                num_elems, SHT_crv) &
930                result(SHT_rv) &
931                bind(C, name="SIDRE_Group_create_view_from_type")
932            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
933            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
934            implicit none
935            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
936            character(kind=C_CHAR), intent(IN) :: path(*)
937            integer(C_INT), value, intent(IN) :: type
938            integer(C_INT64_T), value, intent(IN) :: num_elems
939            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
940            type(C_PTR) SHT_rv
941        end function c_group_create_view_from_type
942
943        function c_group_create_view_from_type_bufferify(self, path, &
944                Lpath, type, num_elems, SHT_crv) &
945                result(SHT_rv) &
946                bind(C, name="SIDRE_Group_create_view_from_type_bufferify")
947            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
948            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
949            implicit none
950            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
951            character(kind=C_CHAR), intent(IN) :: path(*)
952            integer(C_INT), value, intent(IN) :: Lpath
953            integer(C_INT), value, intent(IN) :: type
954            integer(C_INT64_T), value, intent(IN) :: num_elems
955            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
956            type(C_PTR) SHT_rv
957        end function c_group_create_view_from_type_bufferify
958
959        function c_group_create_view_from_shape(self, path, type, ndims, &
960                shape, SHT_crv) &
961                result(SHT_rv) &
962                bind(C, name="SIDRE_Group_create_view_from_shape")
963            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
964            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
965            implicit none
966            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
967            character(kind=C_CHAR), intent(IN) :: path(*)
968            integer(C_INT), value, intent(IN) :: type
969            integer(C_INT), value, intent(IN) :: ndims
970            integer(C_INT64_T), intent(IN) :: shape(*)
971            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
972            type(C_PTR) SHT_rv
973        end function c_group_create_view_from_shape
974
975        function c_group_create_view_from_shape_bufferify(self, path, &
976                Lpath, type, ndims, shape, SHT_crv) &
977                result(SHT_rv) &
978                bind(C, name="SIDRE_Group_create_view_from_shape_bufferify")
979            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
980            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
981            implicit none
982            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
983            character(kind=C_CHAR), intent(IN) :: path(*)
984            integer(C_INT), value, intent(IN) :: Lpath
985            integer(C_INT), value, intent(IN) :: type
986            integer(C_INT), value, intent(IN) :: ndims
987            integer(C_INT64_T), intent(IN) :: shape(*)
988            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
989            type(C_PTR) SHT_rv
990        end function c_group_create_view_from_shape_bufferify
991
992        function c_group_create_view_into_buffer(self, path, buff, &
993                SHT_crv) &
994                result(SHT_rv) &
995                bind(C, name="SIDRE_Group_create_view_into_buffer")
996            use iso_c_binding, only : C_CHAR, C_PTR
997            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
998            implicit none
999            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1000            character(kind=C_CHAR), intent(IN) :: path(*)
1001            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
1002            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1003            type(C_PTR) SHT_rv
1004        end function c_group_create_view_into_buffer
1005
1006        function c_group_create_view_into_buffer_bufferify(self, path, &
1007                Lpath, buff, SHT_crv) &
1008                result(SHT_rv) &
1009                bind(C, name="SIDRE_Group_create_view_into_buffer_bufferify")
1010            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1011            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1012            implicit none
1013            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1014            character(kind=C_CHAR), intent(IN) :: path(*)
1015            integer(C_INT), value, intent(IN) :: Lpath
1016            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
1017            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1018            type(C_PTR) SHT_rv
1019        end function c_group_create_view_into_buffer_bufferify
1020
1021        function c_group_create_view_from_type_and_buffer(self, path, &
1022                type, num_elems, buff, SHT_crv) &
1023                result(SHT_rv) &
1024                bind(C, name="SIDRE_Group_create_view_from_type_and_buffer")
1025            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1026            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1027            implicit none
1028            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1029            character(kind=C_CHAR), intent(IN) :: path(*)
1030            integer(C_INT), value, intent(IN) :: type
1031            integer(C_INT64_T), value, intent(IN) :: num_elems
1032            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
1033            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1034            type(C_PTR) SHT_rv
1035        end function c_group_create_view_from_type_and_buffer
1036
1037        function c_group_create_view_from_type_and_buffer_bufferify( &
1038                self, path, Lpath, type, num_elems, buff, SHT_crv) &
1039                result(SHT_rv) &
1040                bind(C, name="SIDRE_Group_create_view_from_type_and_buffer_bufferify")
1041            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1042            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1043            implicit none
1044            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1045            character(kind=C_CHAR), intent(IN) :: path(*)
1046            integer(C_INT), value, intent(IN) :: Lpath
1047            integer(C_INT), value, intent(IN) :: type
1048            integer(C_INT64_T), value, intent(IN) :: num_elems
1049            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
1050            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1051            type(C_PTR) SHT_rv
1052        end function c_group_create_view_from_type_and_buffer_bufferify
1053
1054        function c_group_create_view_from_shape_and_buffer(self, path, &
1055                type, ndims, shape, buff, SHT_crv) &
1056                result(SHT_rv) &
1057                bind(C, name="SIDRE_Group_create_view_from_shape_and_buffer")
1058            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1059            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1060            implicit none
1061            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1062            character(kind=C_CHAR), intent(IN) :: path(*)
1063            integer(C_INT), value, intent(IN) :: type
1064            integer(C_INT), value, intent(IN) :: ndims
1065            integer(C_INT64_T), intent(IN) :: shape(*)
1066            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
1067            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1068            type(C_PTR) SHT_rv
1069        end function c_group_create_view_from_shape_and_buffer
1070
1071        function c_group_create_view_from_shape_and_buffer_bufferify( &
1072                self, path, Lpath, type, ndims, shape, buff, SHT_crv) &
1073                result(SHT_rv) &
1074                bind(C, name="SIDRE_Group_create_view_from_shape_and_buffer_bufferify")
1075            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1076            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1077            implicit none
1078            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1079            character(kind=C_CHAR), intent(IN) :: path(*)
1080            integer(C_INT), value, intent(IN) :: Lpath
1081            integer(C_INT), value, intent(IN) :: type
1082            integer(C_INT), value, intent(IN) :: ndims
1083            integer(C_INT64_T), intent(IN) :: shape(*)
1084            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
1085            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1086            type(C_PTR) SHT_rv
1087        end function c_group_create_view_from_shape_and_buffer_bufferify
1088
1089        function c_group_create_view_external(self, path, external_ptr, &
1090                SHT_crv) &
1091                result(SHT_rv) &
1092                bind(C, name="SIDRE_Group_create_view_external")
1093            use iso_c_binding, only : C_CHAR, C_PTR
1094            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1095            implicit none
1096            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1097            character(kind=C_CHAR), intent(IN) :: path(*)
1098            type(C_PTR), value, intent(IN) :: external_ptr
1099            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1100            type(C_PTR) SHT_rv
1101        end function c_group_create_view_external
1102
1103        function c_group_create_view_external_bufferify(self, path, &
1104                Lpath, external_ptr, SHT_crv) &
1105                result(SHT_rv) &
1106                bind(C, name="SIDRE_Group_create_view_external_bufferify")
1107            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1108            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1109            implicit none
1110            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1111            character(kind=C_CHAR), intent(IN) :: path(*)
1112            integer(C_INT), value, intent(IN) :: Lpath
1113            type(C_PTR), value, intent(IN) :: external_ptr
1114            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1115            type(C_PTR) SHT_rv
1116        end function c_group_create_view_external_bufferify
1117
1118        function c_group_create_view_from_type_external(self, path, &
1119                type, num_elems, external_ptr, SHT_crv) &
1120                result(SHT_rv) &
1121                bind(C, name="SIDRE_Group_create_view_from_type_external")
1122            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1123            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1124            implicit none
1125            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1126            character(kind=C_CHAR), intent(IN) :: path(*)
1127            integer(C_INT), value, intent(IN) :: type
1128            integer(C_INT64_T), value, intent(IN) :: num_elems
1129            type(C_PTR), value, intent(IN) :: external_ptr
1130            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1131            type(C_PTR) SHT_rv
1132        end function c_group_create_view_from_type_external
1133
1134        function c_group_create_view_from_type_external_bufferify(self, &
1135                path, Lpath, type, num_elems, external_ptr, SHT_crv) &
1136                result(SHT_rv) &
1137                bind(C, name="SIDRE_Group_create_view_from_type_external_bufferify")
1138            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1139            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1140            implicit none
1141            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1142            character(kind=C_CHAR), intent(IN) :: path(*)
1143            integer(C_INT), value, intent(IN) :: Lpath
1144            integer(C_INT), value, intent(IN) :: type
1145            integer(C_INT64_T), value, intent(IN) :: num_elems
1146            type(C_PTR), value, intent(IN) :: external_ptr
1147            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1148            type(C_PTR) SHT_rv
1149        end function c_group_create_view_from_type_external_bufferify
1150
1151        function c_group_create_view_from_shape_external(self, path, &
1152                type, ndims, shape, external_ptr, SHT_crv) &
1153                result(SHT_rv) &
1154                bind(C, name="SIDRE_Group_create_view_from_shape_external")
1155            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1156            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1157            implicit none
1158            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1159            character(kind=C_CHAR), intent(IN) :: path(*)
1160            integer(C_INT), value, intent(IN) :: type
1161            integer(C_INT), value, intent(IN) :: ndims
1162            integer(C_INT64_T), intent(IN) :: shape(*)
1163            type(C_PTR), value, intent(IN) :: external_ptr
1164            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1165            type(C_PTR) SHT_rv
1166        end function c_group_create_view_from_shape_external
1167
1168        function c_group_create_view_from_shape_external_bufferify(self, &
1169                path, Lpath, type, ndims, shape, external_ptr, SHT_crv) &
1170                result(SHT_rv) &
1171                bind(C, name="SIDRE_Group_create_view_from_shape_external_bufferify")
1172            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1173            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1174            implicit none
1175            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1176            character(kind=C_CHAR), intent(IN) :: path(*)
1177            integer(C_INT), value, intent(IN) :: Lpath
1178            integer(C_INT), value, intent(IN) :: type
1179            integer(C_INT), value, intent(IN) :: ndims
1180            integer(C_INT64_T), intent(IN) :: shape(*)
1181            type(C_PTR), value, intent(IN) :: external_ptr
1182            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1183            type(C_PTR) SHT_rv
1184        end function c_group_create_view_from_shape_external_bufferify
1185
1186        function c_group_create_view_and_allocate_nelems(self, path, &
1187                type, num_elems, SHT_crv) &
1188                result(SHT_rv) &
1189                bind(C, name="SIDRE_Group_create_view_and_allocate_nelems")
1190            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1191            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1192            implicit none
1193            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1194            character(kind=C_CHAR), intent(IN) :: path(*)
1195            integer(C_INT), value, intent(IN) :: type
1196            integer(C_INT64_T), value, intent(IN) :: num_elems
1197            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1198            type(C_PTR) SHT_rv
1199        end function c_group_create_view_and_allocate_nelems
1200
1201        function c_group_create_view_and_allocate_nelems_bufferify(self, &
1202                path, Lpath, type, num_elems, SHT_crv) &
1203                result(SHT_rv) &
1204                bind(C, name="SIDRE_Group_create_view_and_allocate_nelems_bufferify")
1205            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1206            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1207            implicit none
1208            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1209            character(kind=C_CHAR), intent(IN) :: path(*)
1210            integer(C_INT), value, intent(IN) :: Lpath
1211            integer(C_INT), value, intent(IN) :: type
1212            integer(C_INT64_T), value, intent(IN) :: num_elems
1213            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1214            type(C_PTR) SHT_rv
1215        end function c_group_create_view_and_allocate_nelems_bufferify
1216
1217        function c_group_create_view_and_allocate_shape(self, path, &
1218                type, ndims, shape, SHT_crv) &
1219                result(SHT_rv) &
1220                bind(C, name="SIDRE_Group_create_view_and_allocate_shape")
1221            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1222            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1223            implicit none
1224            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1225            character(kind=C_CHAR), intent(IN) :: path(*)
1226            integer(C_INT), value, intent(IN) :: type
1227            integer(C_INT), value, intent(IN) :: ndims
1228            integer(C_INT64_T), intent(IN) :: shape(*)
1229            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1230            type(C_PTR) SHT_rv
1231        end function c_group_create_view_and_allocate_shape
1232
1233        function c_group_create_view_and_allocate_shape_bufferify(self, &
1234                path, Lpath, type, ndims, shape, SHT_crv) &
1235                result(SHT_rv) &
1236                bind(C, name="SIDRE_Group_create_view_and_allocate_shape_bufferify")
1237            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T, C_PTR
1238            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1239            implicit none
1240            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1241            character(kind=C_CHAR), intent(IN) :: path(*)
1242            integer(C_INT), value, intent(IN) :: Lpath
1243            integer(C_INT), value, intent(IN) :: type
1244            integer(C_INT), value, intent(IN) :: ndims
1245            integer(C_INT64_T), intent(IN) :: shape(*)
1246            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1247            type(C_PTR) SHT_rv
1248        end function c_group_create_view_and_allocate_shape_bufferify
1249
1250        function c_group_create_view_scalar_int(self, path, value, &
1251                SHT_crv) &
1252                result(SHT_rv) &
1253                bind(C, name="SIDRE_Group_create_view_scalar_int")
1254            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1255            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1256            implicit none
1257            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1258            character(kind=C_CHAR), intent(IN) :: path(*)
1259            integer(C_INT), value, intent(IN) :: value
1260            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1261            type(C_PTR) SHT_rv
1262        end function c_group_create_view_scalar_int
1263
1264        function c_group_create_view_scalar_bufferify_int(self, path, &
1265                Lpath, value, SHT_crv) &
1266                result(SHT_rv) &
1267                bind(C, name="SIDRE_Group_create_view_scalar_bufferify_int")
1268            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1269            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1270            implicit none
1271            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1272            character(kind=C_CHAR), intent(IN) :: path(*)
1273            integer(C_INT), value, intent(IN) :: Lpath
1274            integer(C_INT), value, intent(IN) :: value
1275            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1276            type(C_PTR) SHT_rv
1277        end function c_group_create_view_scalar_bufferify_int
1278
1279        function c_group_create_view_scalar_long(self, path, value, &
1280                SHT_crv) &
1281                result(SHT_rv) &
1282                bind(C, name="SIDRE_Group_create_view_scalar_long")
1283            use iso_c_binding, only : C_CHAR, C_LONG, C_PTR
1284            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1285            implicit none
1286            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1287            character(kind=C_CHAR), intent(IN) :: path(*)
1288            integer(C_LONG), value, intent(IN) :: value
1289            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1290            type(C_PTR) SHT_rv
1291        end function c_group_create_view_scalar_long
1292
1293        function c_group_create_view_scalar_bufferify_long(self, path, &
1294                Lpath, value, SHT_crv) &
1295                result(SHT_rv) &
1296                bind(C, name="SIDRE_Group_create_view_scalar_bufferify_long")
1297            use iso_c_binding, only : C_CHAR, C_INT, C_LONG, C_PTR
1298            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1299            implicit none
1300            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1301            character(kind=C_CHAR), intent(IN) :: path(*)
1302            integer(C_INT), value, intent(IN) :: Lpath
1303            integer(C_LONG), value, intent(IN) :: value
1304            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1305            type(C_PTR) SHT_rv
1306        end function c_group_create_view_scalar_bufferify_long
1307
1308        function c_group_create_view_scalar_float(self, path, value, &
1309                SHT_crv) &
1310                result(SHT_rv) &
1311                bind(C, name="SIDRE_Group_create_view_scalar_float")
1312            use iso_c_binding, only : C_CHAR, C_FLOAT, C_PTR
1313            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1314            implicit none
1315            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1316            character(kind=C_CHAR), intent(IN) :: path(*)
1317            real(C_FLOAT), value, intent(IN) :: value
1318            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1319            type(C_PTR) SHT_rv
1320        end function c_group_create_view_scalar_float
1321
1322        function c_group_create_view_scalar_bufferify_float(self, path, &
1323                Lpath, value, SHT_crv) &
1324                result(SHT_rv) &
1325                bind(C, name="SIDRE_Group_create_view_scalar_bufferify_float")
1326            use iso_c_binding, only : C_CHAR, C_FLOAT, C_INT, C_PTR
1327            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1328            implicit none
1329            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1330            character(kind=C_CHAR), intent(IN) :: path(*)
1331            integer(C_INT), value, intent(IN) :: Lpath
1332            real(C_FLOAT), value, intent(IN) :: value
1333            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1334            type(C_PTR) SHT_rv
1335        end function c_group_create_view_scalar_bufferify_float
1336
1337        function c_group_create_view_scalar_double(self, path, value, &
1338                SHT_crv) &
1339                result(SHT_rv) &
1340                bind(C, name="SIDRE_Group_create_view_scalar_double")
1341            use iso_c_binding, only : C_CHAR, C_DOUBLE, C_PTR
1342            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1343            implicit none
1344            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1345            character(kind=C_CHAR), intent(IN) :: path(*)
1346            real(C_DOUBLE), value, intent(IN) :: value
1347            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1348            type(C_PTR) SHT_rv
1349        end function c_group_create_view_scalar_double
1350
1351        function c_group_create_view_scalar_bufferify_double(self, path, &
1352                Lpath, value, SHT_crv) &
1353                result(SHT_rv) &
1354                bind(C, name="SIDRE_Group_create_view_scalar_bufferify_double")
1355            use iso_c_binding, only : C_CHAR, C_DOUBLE, C_INT, C_PTR
1356            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1357            implicit none
1358            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1359            character(kind=C_CHAR), intent(IN) :: path(*)
1360            integer(C_INT), value, intent(IN) :: Lpath
1361            real(C_DOUBLE), value, intent(IN) :: value
1362            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1363            type(C_PTR) SHT_rv
1364        end function c_group_create_view_scalar_bufferify_double
1365
1366        function c_group_create_view_string(self, path, value, SHT_crv) &
1367                result(SHT_rv) &
1368                bind(C, name="SIDRE_Group_create_view_string")
1369            use iso_c_binding, only : C_CHAR, C_PTR
1370            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1371            implicit none
1372            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1373            character(kind=C_CHAR), intent(IN) :: path(*)
1374            character(kind=C_CHAR), intent(IN) :: value(*)
1375            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1376            type(C_PTR) SHT_rv
1377        end function c_group_create_view_string
1378
1379        function c_group_create_view_string_bufferify(self, path, Lpath, &
1380                value, Lvalue, SHT_crv) &
1381                result(SHT_rv) &
1382                bind(C, name="SIDRE_Group_create_view_string_bufferify")
1383            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1384            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1385            implicit none
1386            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1387            character(kind=C_CHAR), intent(IN) :: path(*)
1388            integer(C_INT), value, intent(IN) :: Lpath
1389            character(kind=C_CHAR), intent(IN) :: value(*)
1390            integer(C_INT), value, intent(IN) :: Lvalue
1391            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1392            type(C_PTR) SHT_rv
1393        end function c_group_create_view_string_bufferify
1394
1395        subroutine c_group_destroy_view(self, path) &
1396                bind(C, name="SIDRE_Group_destroy_view")
1397            use iso_c_binding, only : C_CHAR
1398            import :: SIDRE_SHROUD_group_capsule
1399            implicit none
1400            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1401            character(kind=C_CHAR), intent(IN) :: path(*)
1402        end subroutine c_group_destroy_view
1403
1404        subroutine c_group_destroy_view_bufferify(self, path, Lpath) &
1405                bind(C, name="SIDRE_Group_destroy_view_bufferify")
1406            use iso_c_binding, only : C_CHAR, C_INT
1407            import :: SIDRE_SHROUD_group_capsule
1408            implicit none
1409            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1410            character(kind=C_CHAR), intent(IN) :: path(*)
1411            integer(C_INT), value, intent(IN) :: Lpath
1412        end subroutine c_group_destroy_view_bufferify
1413
1414        subroutine c_group_destroy_view_and_data_name(self, path) &
1415                bind(C, name="SIDRE_Group_destroy_view_and_data_name")
1416            use iso_c_binding, only : C_CHAR
1417            import :: SIDRE_SHROUD_group_capsule
1418            implicit none
1419            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1420            character(kind=C_CHAR), intent(IN) :: path(*)
1421        end subroutine c_group_destroy_view_and_data_name
1422
1423        subroutine c_group_destroy_view_and_data_name_bufferify(self, &
1424                path, Lpath) &
1425                bind(C, name="SIDRE_Group_destroy_view_and_data_name_bufferify")
1426            use iso_c_binding, only : C_CHAR, C_INT
1427            import :: SIDRE_SHROUD_group_capsule
1428            implicit none
1429            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1430            character(kind=C_CHAR), intent(IN) :: path(*)
1431            integer(C_INT), value, intent(IN) :: Lpath
1432        end subroutine c_group_destroy_view_and_data_name_bufferify
1433
1434        subroutine c_group_destroy_view_and_data_index(self, idx) &
1435                bind(C, name="SIDRE_Group_destroy_view_and_data_index")
1436            use iso_c_binding, only : C_INT64_T
1437            import :: SIDRE_SHROUD_group_capsule
1438            implicit none
1439            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1440            integer(C_INT64_T), value, intent(IN) :: idx
1441        end subroutine c_group_destroy_view_and_data_index
1442
1443        function c_group_move_view(self, view, SHT_crv) &
1444                result(SHT_rv) &
1445                bind(C, name="SIDRE_Group_move_view")
1446            use iso_c_binding, only : C_PTR
1447            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1448            implicit none
1449            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1450            type(SIDRE_SHROUD_view_capsule), intent(INOUT) :: view
1451            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1452            type(C_PTR) SHT_rv
1453        end function c_group_move_view
1454
1455        function c_group_copy_view(self, view, SHT_crv) &
1456                result(SHT_rv) &
1457                bind(C, name="SIDRE_Group_copy_view")
1458            use iso_c_binding, only : C_PTR
1459            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1460            implicit none
1461            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1462            type(SIDRE_SHROUD_view_capsule), intent(INOUT) :: view
1463            type(SIDRE_SHROUD_view_capsule), intent(OUT) :: SHT_crv
1464            type(C_PTR) SHT_rv
1465        end function c_group_copy_view
1466
1467        function c_group_has_group(self, path) &
1468                result(SHT_rv) &
1469                bind(C, name="SIDRE_Group_has_group")
1470            use iso_c_binding, only : C_BOOL, C_CHAR
1471            import :: SIDRE_SHROUD_group_capsule
1472            implicit none
1473            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1474            character(kind=C_CHAR), intent(IN) :: path(*)
1475            logical(C_BOOL) :: SHT_rv
1476        end function c_group_has_group
1477
1478        function c_group_has_group_bufferify(self, path, Lpath) &
1479                result(SHT_rv) &
1480                bind(C, name="SIDRE_Group_has_group_bufferify")
1481            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
1482            import :: SIDRE_SHROUD_group_capsule
1483            implicit none
1484            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1485            character(kind=C_CHAR), intent(IN) :: path(*)
1486            integer(C_INT), value, intent(IN) :: Lpath
1487            logical(C_BOOL) :: SHT_rv
1488        end function c_group_has_group_bufferify
1489
1490        function c_group_has_child_group(self, name) &
1491                result(SHT_rv) &
1492                bind(C, name="SIDRE_Group_has_child_group")
1493            use iso_c_binding, only : C_BOOL, C_CHAR
1494            import :: SIDRE_SHROUD_group_capsule
1495            implicit none
1496            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1497            character(kind=C_CHAR), intent(IN) :: name(*)
1498            logical(C_BOOL) :: SHT_rv
1499        end function c_group_has_child_group
1500
1501        function c_group_has_child_group_bufferify(self, name, Lname) &
1502                result(SHT_rv) &
1503                bind(C, name="SIDRE_Group_has_child_group_bufferify")
1504            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
1505            import :: SIDRE_SHROUD_group_capsule
1506            implicit none
1507            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1508            character(kind=C_CHAR), intent(IN) :: name(*)
1509            integer(C_INT), value, intent(IN) :: Lname
1510            logical(C_BOOL) :: SHT_rv
1511        end function c_group_has_child_group_bufferify
1512
1513        pure function c_group_get_group_index(self, name) &
1514                result(SHT_rv) &
1515                bind(C, name="SIDRE_Group_get_group_index")
1516            use iso_c_binding, only : C_CHAR, C_INT64_T
1517            import :: SIDRE_SHROUD_group_capsule
1518            implicit none
1519            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1520            character(kind=C_CHAR), intent(IN) :: name(*)
1521            integer(C_INT64_T) :: SHT_rv
1522        end function c_group_get_group_index
1523
1524        pure function c_group_get_group_index_bufferify(self, name, &
1525                Lname) &
1526                result(SHT_rv) &
1527                bind(C, name="SIDRE_Group_get_group_index_bufferify")
1528            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T
1529            import :: SIDRE_SHROUD_group_capsule
1530            implicit none
1531            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1532            character(kind=C_CHAR), intent(IN) :: name(*)
1533            integer(C_INT), value, intent(IN) :: Lname
1534            integer(C_INT64_T) :: SHT_rv
1535        end function c_group_get_group_index_bufferify
1536
1537        pure function c_group_get_group_name(self, idx) &
1538                result(SHT_rv) &
1539                bind(C, name="SIDRE_Group_get_group_name")
1540            use iso_c_binding, only : C_INT64_T, C_PTR
1541            import :: SIDRE_SHROUD_group_capsule
1542            implicit none
1543            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1544            integer(C_INT64_T), value, intent(IN) :: idx
1545            type(C_PTR) SHT_rv
1546        end function c_group_get_group_name
1547
1548        subroutine c_group_get_group_name_bufferify(self, idx, SHF_rv, &
1549                NSHF_rv) &
1550                bind(C, name="SIDRE_Group_get_group_name_bufferify")
1551            use iso_c_binding, only : C_CHAR, C_INT, C_INT64_T
1552            import :: SIDRE_SHROUD_group_capsule
1553            implicit none
1554            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1555            integer(C_INT64_T), value, intent(IN) :: idx
1556            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
1557            integer(C_INT), value, intent(IN) :: NSHF_rv
1558        end subroutine c_group_get_group_name_bufferify
1559
1560        function c_group_get_group_from_name(self, path, SHT_crv) &
1561                result(SHT_rv) &
1562                bind(C, name="SIDRE_Group_get_group_from_name")
1563            use iso_c_binding, only : C_CHAR, C_PTR
1564            import :: SIDRE_SHROUD_group_capsule
1565            implicit none
1566            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1567            character(kind=C_CHAR), intent(IN) :: path(*)
1568            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1569            type(C_PTR) SHT_rv
1570        end function c_group_get_group_from_name
1571
1572        function c_group_get_group_from_name_bufferify(self, path, &
1573                Lpath, SHT_crv) &
1574                result(SHT_rv) &
1575                bind(C, name="SIDRE_Group_get_group_from_name_bufferify")
1576            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1577            import :: SIDRE_SHROUD_group_capsule
1578            implicit none
1579            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1580            character(kind=C_CHAR), intent(IN) :: path(*)
1581            integer(C_INT), value, intent(IN) :: Lpath
1582            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1583            type(C_PTR) SHT_rv
1584        end function c_group_get_group_from_name_bufferify
1585
1586        function c_group_get_group_from_index(self, idx, SHT_crv) &
1587                result(SHT_rv) &
1588                bind(C, name="SIDRE_Group_get_group_from_index")
1589            use iso_c_binding, only : C_INT64_T, C_PTR
1590            import :: SIDRE_SHROUD_group_capsule
1591            implicit none
1592            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1593            integer(C_INT64_T), value, intent(IN) :: idx
1594            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1595            type(C_PTR) SHT_rv
1596        end function c_group_get_group_from_index
1597
1598        pure function c_group_get_first_valid_group_index(self) &
1599                result(SHT_rv) &
1600                bind(C, name="SIDRE_Group_get_first_valid_group_index")
1601            use iso_c_binding, only : C_INT64_T
1602            import :: SIDRE_SHROUD_group_capsule
1603            implicit none
1604            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1605            integer(C_INT64_T) :: SHT_rv
1606        end function c_group_get_first_valid_group_index
1607
1608        pure function c_group_get_next_valid_group_index(self, idx) &
1609                result(SHT_rv) &
1610                bind(C, name="SIDRE_Group_get_next_valid_group_index")
1611            use iso_c_binding, only : C_INT64_T
1612            import :: SIDRE_SHROUD_group_capsule
1613            implicit none
1614            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1615            integer(C_INT64_T), value, intent(IN) :: idx
1616            integer(C_INT64_T) :: SHT_rv
1617        end function c_group_get_next_valid_group_index
1618
1619        function c_group_create_group(self, path, SHT_crv) &
1620                result(SHT_rv) &
1621                bind(C, name="SIDRE_Group_create_group")
1622            use iso_c_binding, only : C_CHAR, C_PTR
1623            import :: SIDRE_SHROUD_group_capsule
1624            implicit none
1625            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1626            character(kind=C_CHAR), intent(IN) :: path(*)
1627            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1628            type(C_PTR) SHT_rv
1629        end function c_group_create_group
1630
1631        function c_group_create_group_bufferify(self, path, Lpath, &
1632                SHT_crv) &
1633                result(SHT_rv) &
1634                bind(C, name="SIDRE_Group_create_group_bufferify")
1635            use iso_c_binding, only : C_CHAR, C_INT, C_PTR
1636            import :: SIDRE_SHROUD_group_capsule
1637            implicit none
1638            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1639            character(kind=C_CHAR), intent(IN) :: path(*)
1640            integer(C_INT), value, intent(IN) :: Lpath
1641            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1642            type(C_PTR) SHT_rv
1643        end function c_group_create_group_bufferify
1644
1645        subroutine c_group_destroy_group_name(self, path) &
1646                bind(C, name="SIDRE_Group_destroy_group_name")
1647            use iso_c_binding, only : C_CHAR
1648            import :: SIDRE_SHROUD_group_capsule
1649            implicit none
1650            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1651            character(kind=C_CHAR), intent(IN) :: path(*)
1652        end subroutine c_group_destroy_group_name
1653
1654        subroutine c_group_destroy_group_name_bufferify(self, path, &
1655                Lpath) &
1656                bind(C, name="SIDRE_Group_destroy_group_name_bufferify")
1657            use iso_c_binding, only : C_CHAR, C_INT
1658            import :: SIDRE_SHROUD_group_capsule
1659            implicit none
1660            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1661            character(kind=C_CHAR), intent(IN) :: path(*)
1662            integer(C_INT), value, intent(IN) :: Lpath
1663        end subroutine c_group_destroy_group_name_bufferify
1664
1665        subroutine c_group_destroy_group_index(self, idx) &
1666                bind(C, name="SIDRE_Group_destroy_group_index")
1667            use iso_c_binding, only : C_INT64_T
1668            import :: SIDRE_SHROUD_group_capsule
1669            implicit none
1670            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1671            integer(C_INT64_T), value, intent(IN) :: idx
1672        end subroutine c_group_destroy_group_index
1673
1674        function c_group_move_group(self, grp, SHT_crv) &
1675                result(SHT_rv) &
1676                bind(C, name="SIDRE_Group_move_group")
1677            use iso_c_binding, only : C_PTR
1678            import :: SIDRE_SHROUD_group_capsule
1679            implicit none
1680            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1681            type(SIDRE_SHROUD_group_capsule), intent(INOUT) :: grp
1682            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1683            type(C_PTR) SHT_rv
1684        end function c_group_move_group
1685
1686        subroutine c_group_print(self) &
1687                bind(C, name="SIDRE_Group_print")
1688            import :: SIDRE_SHROUD_group_capsule
1689            implicit none
1690            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1691        end subroutine c_group_print
1692
1693        pure function c_group_is_equivalent_to(self, other) &
1694                result(SHT_rv) &
1695                bind(C, name="SIDRE_Group_is_equivalent_to")
1696            use iso_c_binding, only : C_BOOL
1697            import :: SIDRE_SHROUD_group_capsule
1698            implicit none
1699            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1700            type(SIDRE_SHROUD_group_capsule), intent(IN) :: other
1701            logical(C_BOOL) :: SHT_rv
1702        end function c_group_is_equivalent_to
1703
1704        subroutine c_group_save(self, file_path, protocol) &
1705                bind(C, name="SIDRE_Group_save")
1706            use iso_c_binding, only : C_CHAR
1707            import :: SIDRE_SHROUD_group_capsule
1708            implicit none
1709            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1710            character(kind=C_CHAR), intent(IN) :: file_path(*)
1711            character(kind=C_CHAR), intent(IN) :: protocol(*)
1712        end subroutine c_group_save
1713
1714        subroutine c_group_save_bufferify(self, file_path, Lfile_path, &
1715                protocol, Lprotocol) &
1716                bind(C, name="SIDRE_Group_save_bufferify")
1717            use iso_c_binding, only : C_CHAR, C_INT
1718            import :: SIDRE_SHROUD_group_capsule
1719            implicit none
1720            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1721            character(kind=C_CHAR), intent(IN) :: file_path(*)
1722            integer(C_INT), value, intent(IN) :: Lfile_path
1723            character(kind=C_CHAR), intent(IN) :: protocol(*)
1724            integer(C_INT), value, intent(IN) :: Lprotocol
1725        end subroutine c_group_save_bufferify
1726
1727        subroutine c_group_load_0(self, file_path, protocol) &
1728                bind(C, name="SIDRE_Group_load_0")
1729            use iso_c_binding, only : C_CHAR
1730            import :: SIDRE_SHROUD_group_capsule
1731            implicit none
1732            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1733            character(kind=C_CHAR), intent(IN) :: file_path(*)
1734            character(kind=C_CHAR), intent(IN) :: protocol(*)
1735        end subroutine c_group_load_0
1736
1737        subroutine c_group_load_0_bufferify(self, file_path, Lfile_path, &
1738                protocol, Lprotocol) &
1739                bind(C, name="SIDRE_Group_load_0_bufferify")
1740            use iso_c_binding, only : C_CHAR, C_INT
1741            import :: SIDRE_SHROUD_group_capsule
1742            implicit none
1743            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1744            character(kind=C_CHAR), intent(IN) :: file_path(*)
1745            integer(C_INT), value, intent(IN) :: Lfile_path
1746            character(kind=C_CHAR), intent(IN) :: protocol(*)
1747            integer(C_INT), value, intent(IN) :: Lprotocol
1748        end subroutine c_group_load_0_bufferify
1749
1750        subroutine c_group_load_1(self, file_path, protocol, &
1751                preserve_contents) &
1752                bind(C, name="SIDRE_Group_load_1")
1753            use iso_c_binding, only : C_BOOL, C_CHAR
1754            import :: SIDRE_SHROUD_group_capsule
1755            implicit none
1756            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1757            character(kind=C_CHAR), intent(IN) :: file_path(*)
1758            character(kind=C_CHAR), intent(IN) :: protocol(*)
1759            logical(C_BOOL), value, intent(IN) :: preserve_contents
1760        end subroutine c_group_load_1
1761
1762        subroutine c_group_load_1_bufferify(self, file_path, Lfile_path, &
1763                protocol, Lprotocol, preserve_contents) &
1764                bind(C, name="SIDRE_Group_load_1_bufferify")
1765            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
1766            import :: SIDRE_SHROUD_group_capsule
1767            implicit none
1768            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1769            character(kind=C_CHAR), intent(IN) :: file_path(*)
1770            integer(C_INT), value, intent(IN) :: Lfile_path
1771            character(kind=C_CHAR), intent(IN) :: protocol(*)
1772            integer(C_INT), value, intent(IN) :: Lprotocol
1773            logical(C_BOOL), value, intent(IN) :: preserve_contents
1774        end subroutine c_group_load_1_bufferify
1775
1776        subroutine c_group_load_external_data(self, file_path) &
1777                bind(C, name="SIDRE_Group_load_external_data")
1778            use iso_c_binding, only : C_CHAR
1779            import :: SIDRE_SHROUD_group_capsule
1780            implicit none
1781            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1782            character(kind=C_CHAR), intent(IN) :: file_path(*)
1783        end subroutine c_group_load_external_data
1784
1785        subroutine c_group_load_external_data_bufferify(self, file_path, &
1786                Lfile_path) &
1787                bind(C, name="SIDRE_Group_load_external_data_bufferify")
1788            use iso_c_binding, only : C_CHAR, C_INT
1789            import :: SIDRE_SHROUD_group_capsule
1790            implicit none
1791            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1792            character(kind=C_CHAR), intent(IN) :: file_path(*)
1793            integer(C_INT), value, intent(IN) :: Lfile_path
1794        end subroutine c_group_load_external_data_bufferify
1795
1796        function c_group_rename(self, new_name) &
1797                result(SHT_rv) &
1798                bind(C, name="SIDRE_Group_rename")
1799            use iso_c_binding, only : C_BOOL, C_CHAR
1800            import :: SIDRE_SHROUD_group_capsule
1801            implicit none
1802            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1803            character(kind=C_CHAR), intent(IN) :: new_name(*)
1804            logical(C_BOOL) :: SHT_rv
1805        end function c_group_rename
1806
1807        function c_group_rename_bufferify(self, new_name, Lnew_name) &
1808                result(SHT_rv) &
1809                bind(C, name="SIDRE_Group_rename_bufferify")
1810            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
1811            import :: SIDRE_SHROUD_group_capsule
1812            implicit none
1813            type(SIDRE_SHROUD_group_capsule), intent(IN) :: self
1814            character(kind=C_CHAR), intent(IN) :: new_name(*)
1815            integer(C_INT), value, intent(IN) :: Lnew_name
1816            logical(C_BOOL) :: SHT_rv
1817        end function c_group_rename_bufferify
1818
1819        ! splicer begin class.Group.additional_interfaces
1820        ! splicer end class.Group.additional_interfaces
1821
1822        function c_view_get_index(self) &
1823                result(SHT_rv) &
1824                bind(C, name="SIDRE_View_get_index")
1825            use iso_c_binding, only : C_INT64_T
1826            import :: SIDRE_SHROUD_view_capsule
1827            implicit none
1828            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1829            integer(C_INT64_T) :: SHT_rv
1830        end function c_view_get_index
1831
1832        pure function c_view_get_name(self) &
1833                result(SHT_rv) &
1834                bind(C, name="SIDRE_View_get_name")
1835            use iso_c_binding, only : C_PTR
1836            import :: SIDRE_SHROUD_view_capsule
1837            implicit none
1838            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1839            type(C_PTR) SHT_rv
1840        end function c_view_get_name
1841
1842        subroutine c_view_get_name_bufferify(self, SHF_rv, NSHF_rv) &
1843                bind(C, name="SIDRE_View_get_name_bufferify")
1844            use iso_c_binding, only : C_CHAR, C_INT
1845            import :: SIDRE_SHROUD_view_capsule
1846            implicit none
1847            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1848            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
1849            integer(C_INT), value, intent(IN) :: NSHF_rv
1850        end subroutine c_view_get_name_bufferify
1851
1852        subroutine c_view_get_path_bufferify(self, SHF_rv, NSHF_rv) &
1853                bind(C, name="SIDRE_View_get_path_bufferify")
1854            use iso_c_binding, only : C_CHAR, C_INT
1855            import :: SIDRE_SHROUD_view_capsule
1856            implicit none
1857            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1858            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
1859            integer(C_INT), value, intent(IN) :: NSHF_rv
1860        end subroutine c_view_get_path_bufferify
1861
1862        subroutine c_view_get_path_name_bufferify(self, SHF_rv, NSHF_rv) &
1863                bind(C, name="SIDRE_View_get_path_name_bufferify")
1864            use iso_c_binding, only : C_CHAR, C_INT
1865            import :: SIDRE_SHROUD_view_capsule
1866            implicit none
1867            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1868            character(kind=C_CHAR), intent(OUT) :: SHF_rv(*)
1869            integer(C_INT), value, intent(IN) :: NSHF_rv
1870        end subroutine c_view_get_path_name_bufferify
1871
1872        function c_view_get_owning_group(self, SHT_crv) &
1873                result(SHT_rv) &
1874                bind(C, name="SIDRE_View_get_owning_group")
1875            use iso_c_binding, only : C_PTR
1876            import :: SIDRE_SHROUD_group_capsule, SIDRE_SHROUD_view_capsule
1877            implicit none
1878            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1879            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
1880            type(C_PTR) SHT_rv
1881        end function c_view_get_owning_group
1882
1883        pure function c_view_has_buffer(self) &
1884                result(SHT_rv) &
1885                bind(C, name="SIDRE_View_has_buffer")
1886            use iso_c_binding, only : C_BOOL
1887            import :: SIDRE_SHROUD_view_capsule
1888            implicit none
1889            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1890            logical(C_BOOL) :: SHT_rv
1891        end function c_view_has_buffer
1892
1893        function c_view_get_buffer(self, SHT_crv) &
1894                result(SHT_rv) &
1895                bind(C, name="SIDRE_View_get_buffer")
1896            use iso_c_binding, only : C_PTR
1897            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_view_capsule
1898            implicit none
1899            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1900            type(SIDRE_SHROUD_buffer_capsule), intent(OUT) :: SHT_crv
1901            type(C_PTR) SHT_rv
1902        end function c_view_get_buffer
1903
1904        pure function c_view_is_external(self) &
1905                result(SHT_rv) &
1906                bind(C, name="SIDRE_View_is_external")
1907            use iso_c_binding, only : C_BOOL
1908            import :: SIDRE_SHROUD_view_capsule
1909            implicit none
1910            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1911            logical(C_BOOL) :: SHT_rv
1912        end function c_view_is_external
1913
1914        function c_view_is_allocated(self) &
1915                result(SHT_rv) &
1916                bind(C, name="SIDRE_View_is_allocated")
1917            use iso_c_binding, only : C_BOOL
1918            import :: SIDRE_SHROUD_view_capsule
1919            implicit none
1920            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1921            logical(C_BOOL) :: SHT_rv
1922        end function c_view_is_allocated
1923
1924        pure function c_view_is_applied(self) &
1925                result(SHT_rv) &
1926                bind(C, name="SIDRE_View_is_applied")
1927            use iso_c_binding, only : C_BOOL
1928            import :: SIDRE_SHROUD_view_capsule
1929            implicit none
1930            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1931            logical(C_BOOL) :: SHT_rv
1932        end function c_view_is_applied
1933
1934        pure function c_view_is_described(self) &
1935                result(SHT_rv) &
1936                bind(C, name="SIDRE_View_is_described")
1937            use iso_c_binding, only : C_BOOL
1938            import :: SIDRE_SHROUD_view_capsule
1939            implicit none
1940            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1941            logical(C_BOOL) :: SHT_rv
1942        end function c_view_is_described
1943
1944        pure function c_view_is_empty(self) &
1945                result(SHT_rv) &
1946                bind(C, name="SIDRE_View_is_empty")
1947            use iso_c_binding, only : C_BOOL
1948            import :: SIDRE_SHROUD_view_capsule
1949            implicit none
1950            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1951            logical(C_BOOL) :: SHT_rv
1952        end function c_view_is_empty
1953
1954        pure function c_view_is_opaque(self) &
1955                result(SHT_rv) &
1956                bind(C, name="SIDRE_View_is_opaque")
1957            use iso_c_binding, only : C_BOOL
1958            import :: SIDRE_SHROUD_view_capsule
1959            implicit none
1960            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1961            logical(C_BOOL) :: SHT_rv
1962        end function c_view_is_opaque
1963
1964        pure function c_view_is_scalar(self) &
1965                result(SHT_rv) &
1966                bind(C, name="SIDRE_View_is_scalar")
1967            use iso_c_binding, only : C_BOOL
1968            import :: SIDRE_SHROUD_view_capsule
1969            implicit none
1970            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1971            logical(C_BOOL) :: SHT_rv
1972        end function c_view_is_scalar
1973
1974        pure function c_view_is_string(self) &
1975                result(SHT_rv) &
1976                bind(C, name="SIDRE_View_is_string")
1977            use iso_c_binding, only : C_BOOL
1978            import :: SIDRE_SHROUD_view_capsule
1979            implicit none
1980            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1981            logical(C_BOOL) :: SHT_rv
1982        end function c_view_is_string
1983
1984        pure function c_view_get_type_id(self) &
1985                result(SHT_rv) &
1986                bind(C, name="SIDRE_View_get_type_id")
1987            use iso_c_binding, only : C_INT
1988            import :: SIDRE_SHROUD_view_capsule
1989            implicit none
1990            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
1991            integer(C_INT) :: SHT_rv
1992        end function c_view_get_type_id
1993
1994        pure function c_view_get_total_bytes(self) &
1995                result(SHT_rv) &
1996                bind(C, name="SIDRE_View_get_total_bytes")
1997            use iso_c_binding, only : C_SIZE_T
1998            import :: SIDRE_SHROUD_view_capsule
1999            implicit none
2000            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2001            integer(C_SIZE_T) :: SHT_rv
2002        end function c_view_get_total_bytes
2003
2004        pure function c_view_get_num_elements(self) &
2005                result(SHT_rv) &
2006                bind(C, name="SIDRE_View_get_num_elements")
2007            use iso_c_binding, only : C_SIZE_T
2008            import :: SIDRE_SHROUD_view_capsule
2009            implicit none
2010            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2011            integer(C_SIZE_T) :: SHT_rv
2012        end function c_view_get_num_elements
2013
2014        pure function c_view_get_bytes_per_element(self) &
2015                result(SHT_rv) &
2016                bind(C, name="SIDRE_View_get_bytes_per_element")
2017            use iso_c_binding, only : C_SIZE_T
2018            import :: SIDRE_SHROUD_view_capsule
2019            implicit none
2020            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2021            integer(C_SIZE_T) :: SHT_rv
2022        end function c_view_get_bytes_per_element
2023
2024        pure function c_view_get_offset(self) &
2025                result(SHT_rv) &
2026                bind(C, name="SIDRE_View_get_offset")
2027            use iso_c_binding, only : C_SIZE_T
2028            import :: SIDRE_SHROUD_view_capsule
2029            implicit none
2030            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2031            integer(C_SIZE_T) :: SHT_rv
2032        end function c_view_get_offset
2033
2034        pure function c_view_get_stride(self) &
2035                result(SHT_rv) &
2036                bind(C, name="SIDRE_View_get_stride")
2037            use iso_c_binding, only : C_SIZE_T
2038            import :: SIDRE_SHROUD_view_capsule
2039            implicit none
2040            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2041            integer(C_SIZE_T) :: SHT_rv
2042        end function c_view_get_stride
2043
2044        pure function c_view_get_num_dimensions(self) &
2045                result(SHT_rv) &
2046                bind(C, name="SIDRE_View_get_num_dimensions")
2047            use iso_c_binding, only : C_INT
2048            import :: SIDRE_SHROUD_view_capsule
2049            implicit none
2050            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2051            integer(C_INT) :: SHT_rv
2052        end function c_view_get_num_dimensions
2053
2054        function c_view_get_shape(self, ndims, shape) &
2055                result(SHT_rv) &
2056                bind(C, name="SIDRE_View_get_shape")
2057            use iso_c_binding, only : C_INT, C_INT64_T
2058            import :: SIDRE_SHROUD_view_capsule
2059            implicit none
2060            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2061            integer(C_INT), value, intent(IN) :: ndims
2062            integer(C_INT64_T), intent(OUT) :: shape(*)
2063            integer(C_INT) :: SHT_rv
2064        end function c_view_get_shape
2065
2066        subroutine c_view_allocate_simple(self) &
2067                bind(C, name="SIDRE_View_allocate_simple")
2068            import :: SIDRE_SHROUD_view_capsule
2069            implicit none
2070            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2071        end subroutine c_view_allocate_simple
2072
2073        subroutine c_view_allocate_from_type(self, type, num_elems) &
2074                bind(C, name="SIDRE_View_allocate_from_type")
2075            use iso_c_binding, only : C_INT, C_INT64_T
2076            import :: SIDRE_SHROUD_view_capsule
2077            implicit none
2078            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2079            integer(C_INT), value, intent(IN) :: type
2080            integer(C_INT64_T), value, intent(IN) :: num_elems
2081        end subroutine c_view_allocate_from_type
2082
2083        subroutine c_view_reallocate(self, num_elems) &
2084                bind(C, name="SIDRE_View_reallocate")
2085            use iso_c_binding, only : C_INT64_T
2086            import :: SIDRE_SHROUD_view_capsule
2087            implicit none
2088            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2089            integer(C_INT64_T), value, intent(IN) :: num_elems
2090        end subroutine c_view_reallocate
2091
2092        subroutine c_view_attach_buffer_only(self, buff) &
2093                bind(C, name="SIDRE_View_attach_buffer_only")
2094            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_view_capsule
2095            implicit none
2096            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2097            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
2098        end subroutine c_view_attach_buffer_only
2099
2100        subroutine c_view_attach_buffer_type(self, type, num_elems, &
2101                buff) &
2102                bind(C, name="SIDRE_View_attach_buffer_type")
2103            use iso_c_binding, only : C_INT, C_INT64_T
2104            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_view_capsule
2105            implicit none
2106            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2107            integer(C_INT), value, intent(IN) :: type
2108            integer(C_INT64_T), value, intent(IN) :: num_elems
2109            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
2110        end subroutine c_view_attach_buffer_type
2111
2112        subroutine c_view_attach_buffer_shape(self, type, ndims, shape, &
2113                buff) &
2114                bind(C, name="SIDRE_View_attach_buffer_shape")
2115            use iso_c_binding, only : C_INT, C_INT64_T
2116            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_view_capsule
2117            implicit none
2118            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2119            integer(C_INT), value, intent(IN) :: type
2120            integer(C_INT), value, intent(IN) :: ndims
2121            integer(C_INT64_T), intent(IN) :: shape(*)
2122            type(SIDRE_SHROUD_buffer_capsule), intent(INOUT) :: buff
2123        end subroutine c_view_attach_buffer_shape
2124
2125        subroutine c_view_clear(self) &
2126                bind(C, name="SIDRE_View_clear")
2127            import :: SIDRE_SHROUD_view_capsule
2128            implicit none
2129            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2130        end subroutine c_view_clear
2131
2132        subroutine c_view_apply_0(self) &
2133                bind(C, name="SIDRE_View_apply_0")
2134            import :: SIDRE_SHROUD_view_capsule
2135            implicit none
2136            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2137        end subroutine c_view_apply_0
2138
2139        subroutine c_view_apply_nelems(self, num_elems) &
2140                bind(C, name="SIDRE_View_apply_nelems")
2141            use iso_c_binding, only : C_INT64_T
2142            import :: SIDRE_SHROUD_view_capsule
2143            implicit none
2144            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2145            integer(C_INT64_T), value, intent(IN) :: num_elems
2146        end subroutine c_view_apply_nelems
2147
2148        subroutine c_view_apply_nelems_offset(self, num_elems, offset) &
2149                bind(C, name="SIDRE_View_apply_nelems_offset")
2150            use iso_c_binding, only : C_INT64_T
2151            import :: SIDRE_SHROUD_view_capsule
2152            implicit none
2153            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2154            integer(C_INT64_T), value, intent(IN) :: num_elems
2155            integer(C_INT64_T), value, intent(IN) :: offset
2156        end subroutine c_view_apply_nelems_offset
2157
2158        subroutine c_view_apply_nelems_offset_stride(self, num_elems, &
2159                offset, stride) &
2160                bind(C, name="SIDRE_View_apply_nelems_offset_stride")
2161            use iso_c_binding, only : C_INT64_T
2162            import :: SIDRE_SHROUD_view_capsule
2163            implicit none
2164            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2165            integer(C_INT64_T), value, intent(IN) :: num_elems
2166            integer(C_INT64_T), value, intent(IN) :: offset
2167            integer(C_INT64_T), value, intent(IN) :: stride
2168        end subroutine c_view_apply_nelems_offset_stride
2169
2170        subroutine c_view_apply_type_nelems(self, type, num_elems) &
2171                bind(C, name="SIDRE_View_apply_type_nelems")
2172            use iso_c_binding, only : C_INT, C_INT64_T
2173            import :: SIDRE_SHROUD_view_capsule
2174            implicit none
2175            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2176            integer(C_INT), value, intent(IN) :: type
2177            integer(C_INT64_T), value, intent(IN) :: num_elems
2178        end subroutine c_view_apply_type_nelems
2179
2180        subroutine c_view_apply_type_nelems_offset(self, type, &
2181                num_elems, offset) &
2182                bind(C, name="SIDRE_View_apply_type_nelems_offset")
2183            use iso_c_binding, only : C_INT, C_INT64_T
2184            import :: SIDRE_SHROUD_view_capsule
2185            implicit none
2186            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2187            integer(C_INT), value, intent(IN) :: type
2188            integer(C_INT64_T), value, intent(IN) :: num_elems
2189            integer(C_INT64_T), value, intent(IN) :: offset
2190        end subroutine c_view_apply_type_nelems_offset
2191
2192        subroutine c_view_apply_type_nelems_offset_stride(self, type, &
2193                num_elems, offset, stride) &
2194                bind(C, name="SIDRE_View_apply_type_nelems_offset_stride")
2195            use iso_c_binding, only : C_INT, C_INT64_T
2196            import :: SIDRE_SHROUD_view_capsule
2197            implicit none
2198            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2199            integer(C_INT), value, intent(IN) :: type
2200            integer(C_INT64_T), value, intent(IN) :: num_elems
2201            integer(C_INT64_T), value, intent(IN) :: offset
2202            integer(C_INT64_T), value, intent(IN) :: stride
2203        end subroutine c_view_apply_type_nelems_offset_stride
2204
2205        subroutine c_view_apply_type_shape(self, type, ndims, shape) &
2206                bind(C, name="SIDRE_View_apply_type_shape")
2207            use iso_c_binding, only : C_INT, C_INT64_T
2208            import :: SIDRE_SHROUD_view_capsule
2209            implicit none
2210            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2211            integer(C_INT), value, intent(IN) :: type
2212            integer(C_INT), value, intent(IN) :: ndims
2213            integer(C_INT64_T), intent(IN) :: shape(*)
2214        end subroutine c_view_apply_type_shape
2215
2216        subroutine c_view_set_scalar_int(self, value) &
2217                bind(C, name="SIDRE_View_set_scalar_int")
2218            use iso_c_binding, only : C_INT
2219            import :: SIDRE_SHROUD_view_capsule
2220            implicit none
2221            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2222            integer(C_INT), value, intent(IN) :: value
2223        end subroutine c_view_set_scalar_int
2224
2225        subroutine c_view_set_scalar_long(self, value) &
2226                bind(C, name="SIDRE_View_set_scalar_long")
2227            use iso_c_binding, only : C_LONG
2228            import :: SIDRE_SHROUD_view_capsule
2229            implicit none
2230            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2231            integer(C_LONG), value, intent(IN) :: value
2232        end subroutine c_view_set_scalar_long
2233
2234        subroutine c_view_set_scalar_float(self, value) &
2235                bind(C, name="SIDRE_View_set_scalar_float")
2236            use iso_c_binding, only : C_FLOAT
2237            import :: SIDRE_SHROUD_view_capsule
2238            implicit none
2239            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2240            real(C_FLOAT), value, intent(IN) :: value
2241        end subroutine c_view_set_scalar_float
2242
2243        subroutine c_view_set_scalar_double(self, value) &
2244                bind(C, name="SIDRE_View_set_scalar_double")
2245            use iso_c_binding, only : C_DOUBLE
2246            import :: SIDRE_SHROUD_view_capsule
2247            implicit none
2248            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2249            real(C_DOUBLE), value, intent(IN) :: value
2250        end subroutine c_view_set_scalar_double
2251
2252        subroutine c_view_set_string(self, value) &
2253                bind(C, name="SIDRE_View_set_string")
2254            use iso_c_binding, only : C_CHAR
2255            import :: SIDRE_SHROUD_view_capsule
2256            implicit none
2257            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2258            character(kind=C_CHAR), intent(IN) :: value(*)
2259        end subroutine c_view_set_string
2260
2261        subroutine c_view_set_string_bufferify(self, value, Lvalue) &
2262                bind(C, name="SIDRE_View_set_string_bufferify")
2263            use iso_c_binding, only : C_CHAR, C_INT
2264            import :: SIDRE_SHROUD_view_capsule
2265            implicit none
2266            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2267            character(kind=C_CHAR), intent(IN) :: value(*)
2268            integer(C_INT), value, intent(IN) :: Lvalue
2269        end subroutine c_view_set_string_bufferify
2270
2271        subroutine c_view_set_external_data_ptr_only(self, external_ptr) &
2272                bind(C, name="SIDRE_View_set_external_data_ptr_only")
2273            use iso_c_binding, only : C_PTR
2274            import :: SIDRE_SHROUD_view_capsule
2275            implicit none
2276            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2277            type(C_PTR), value, intent(IN) :: external_ptr
2278        end subroutine c_view_set_external_data_ptr_only
2279
2280        subroutine c_view_set_external_data_ptr_type(self, type, &
2281                num_elems, external_ptr) &
2282                bind(C, name="SIDRE_View_set_external_data_ptr_type")
2283            use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
2284            import :: SIDRE_SHROUD_view_capsule
2285            implicit none
2286            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2287            integer(C_INT), value, intent(IN) :: type
2288            integer(C_INT64_T), value, intent(IN) :: num_elems
2289            type(C_PTR), value, intent(IN) :: external_ptr
2290        end subroutine c_view_set_external_data_ptr_type
2291
2292        subroutine c_view_set_external_data_ptr_shape(self, type, ndims, &
2293                shape, external_ptr) &
2294                bind(C, name="SIDRE_View_set_external_data_ptr_shape")
2295            use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
2296            import :: SIDRE_SHROUD_view_capsule
2297            implicit none
2298            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2299            integer(C_INT), value, intent(IN) :: type
2300            integer(C_INT), value, intent(IN) :: ndims
2301            integer(C_INT64_T), intent(IN) :: shape(*)
2302            type(C_PTR), value, intent(IN) :: external_ptr
2303        end subroutine c_view_set_external_data_ptr_shape
2304
2305        function c_view_get_string(self) &
2306                result(SHT_rv) &
2307                bind(C, name="SIDRE_View_get_string")
2308            use iso_c_binding, only : C_PTR
2309            import :: SIDRE_SHROUD_view_capsule
2310            implicit none
2311            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2312            type(C_PTR) SHT_rv
2313        end function c_view_get_string
2314
2315        subroutine c_view_get_string_bufferify(self, name, Nname) &
2316                bind(C, name="SIDRE_View_get_string_bufferify")
2317            use iso_c_binding, only : C_CHAR, C_INT
2318            import :: SIDRE_SHROUD_view_capsule
2319            implicit none
2320            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2321            character(kind=C_CHAR), intent(OUT) :: name(*)
2322            integer(C_INT), value, intent(IN) :: Nname
2323        end subroutine c_view_get_string_bufferify
2324
2325        function c_view_get_data_int(self) &
2326                result(SHT_rv) &
2327                bind(C, name="SIDRE_View_get_data_int")
2328            use iso_c_binding, only : C_INT
2329            import :: SIDRE_SHROUD_view_capsule
2330            implicit none
2331            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2332            integer(C_INT) :: SHT_rv
2333        end function c_view_get_data_int
2334
2335        function c_view_get_data_long(self) &
2336                result(SHT_rv) &
2337                bind(C, name="SIDRE_View_get_data_long")
2338            use iso_c_binding, only : C_LONG
2339            import :: SIDRE_SHROUD_view_capsule
2340            implicit none
2341            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2342            integer(C_LONG) :: SHT_rv
2343        end function c_view_get_data_long
2344
2345        function c_view_get_data_float(self) &
2346                result(SHT_rv) &
2347                bind(C, name="SIDRE_View_get_data_float")
2348            use iso_c_binding, only : C_FLOAT
2349            import :: SIDRE_SHROUD_view_capsule
2350            implicit none
2351            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2352            real(C_FLOAT) :: SHT_rv
2353        end function c_view_get_data_float
2354
2355        function c_view_get_data_double(self) &
2356                result(SHT_rv) &
2357                bind(C, name="SIDRE_View_get_data_double")
2358            use iso_c_binding, only : C_DOUBLE
2359            import :: SIDRE_SHROUD_view_capsule
2360            implicit none
2361            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2362            real(C_DOUBLE) :: SHT_rv
2363        end function c_view_get_data_double
2364
2365        pure function c_view_get_void_ptr(self) &
2366                result(SHT_rv) &
2367                bind(C, name="SIDRE_View_get_void_ptr")
2368            use iso_c_binding, only : C_PTR
2369            import :: SIDRE_SHROUD_view_capsule
2370            implicit none
2371            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2372            type(C_PTR) :: SHT_rv
2373        end function c_view_get_void_ptr
2374
2375        subroutine c_view_print(self) &
2376                bind(C, name="SIDRE_View_print")
2377            import :: SIDRE_SHROUD_view_capsule
2378            implicit none
2379            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2380        end subroutine c_view_print
2381
2382        function c_view_rename(self, new_name) &
2383                result(SHT_rv) &
2384                bind(C, name="SIDRE_View_rename")
2385            use iso_c_binding, only : C_BOOL, C_CHAR
2386            import :: SIDRE_SHROUD_view_capsule
2387            implicit none
2388            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2389            character(kind=C_CHAR), intent(IN) :: new_name(*)
2390            logical(C_BOOL) :: SHT_rv
2391        end function c_view_rename
2392
2393        function c_view_rename_bufferify(self, new_name, Lnew_name) &
2394                result(SHT_rv) &
2395                bind(C, name="SIDRE_View_rename_bufferify")
2396            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
2397            import :: SIDRE_SHROUD_view_capsule
2398            implicit none
2399            type(SIDRE_SHROUD_view_capsule), intent(IN) :: self
2400            character(kind=C_CHAR), intent(IN) :: new_name(*)
2401            integer(C_INT), value, intent(IN) :: Lnew_name
2402            logical(C_BOOL) :: SHT_rv
2403        end function c_view_rename_bufferify
2404
2405        ! splicer begin class.View.additional_interfaces
2406        ! splicer end class.View.additional_interfaces
2407
2408        function c_datastore_new(SHT_crv) &
2409                result(SHT_rv) &
2410                bind(C, name="SIDRE_DataStore_new")
2411            use iso_c_binding, only : C_PTR
2412            import :: SIDRE_SHROUD_datastore_capsule
2413            implicit none
2414            type(SIDRE_SHROUD_datastore_capsule), intent(OUT) :: SHT_crv
2415            type(C_PTR) SHT_rv
2416        end function c_datastore_new
2417
2418        subroutine c_datastore_delete(self) &
2419                bind(C, name="SIDRE_DataStore_delete")
2420            import :: SIDRE_SHROUD_datastore_capsule
2421            implicit none
2422            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2423        end subroutine c_datastore_delete
2424
2425        function c_datastore_get_root(self, SHT_crv) &
2426                result(SHT_rv) &
2427                bind(C, name="SIDRE_DataStore_get_root")
2428            use iso_c_binding, only : C_PTR
2429            import :: SIDRE_SHROUD_datastore_capsule, SIDRE_SHROUD_group_capsule
2430            implicit none
2431            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2432            type(SIDRE_SHROUD_group_capsule), intent(OUT) :: SHT_crv
2433            type(C_PTR) SHT_rv
2434        end function c_datastore_get_root
2435
2436        pure function c_datastore_get_num_buffers(self) &
2437                result(SHT_rv) &
2438                bind(C, name="SIDRE_DataStore_get_num_buffers")
2439            use iso_c_binding, only : C_SIZE_T
2440            import :: SIDRE_SHROUD_datastore_capsule
2441            implicit none
2442            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2443            integer(C_SIZE_T) :: SHT_rv
2444        end function c_datastore_get_num_buffers
2445
2446        function c_datastore_get_buffer(self, idx, SHT_crv) &
2447                result(SHT_rv) &
2448                bind(C, name="SIDRE_DataStore_get_buffer")
2449            use iso_c_binding, only : C_INT64_T, C_PTR
2450            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_datastore_capsule
2451            implicit none
2452            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2453            integer(C_INT64_T), value, intent(IN) :: idx
2454            type(SIDRE_SHROUD_buffer_capsule), intent(OUT) :: SHT_crv
2455            type(C_PTR) SHT_rv
2456        end function c_datastore_get_buffer
2457
2458        function c_datastore_create_buffer_empty(self, SHT_crv) &
2459                result(SHT_rv) &
2460                bind(C, name="SIDRE_DataStore_create_buffer_empty")
2461            use iso_c_binding, only : C_PTR
2462            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_datastore_capsule
2463            implicit none
2464            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2465            type(SIDRE_SHROUD_buffer_capsule), intent(OUT) :: SHT_crv
2466            type(C_PTR) SHT_rv
2467        end function c_datastore_create_buffer_empty
2468
2469        function c_datastore_create_buffer_from_type(self, type, &
2470                num_elems, SHT_crv) &
2471                result(SHT_rv) &
2472                bind(C, name="SIDRE_DataStore_create_buffer_from_type")
2473            use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
2474            import :: SIDRE_SHROUD_buffer_capsule, SIDRE_SHROUD_datastore_capsule
2475            implicit none
2476            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2477            integer(C_INT), value, intent(IN) :: type
2478            integer(C_INT64_T), value, intent(IN) :: num_elems
2479            type(SIDRE_SHROUD_buffer_capsule), intent(OUT) :: SHT_crv
2480            type(C_PTR) SHT_rv
2481        end function c_datastore_create_buffer_from_type
2482
2483        subroutine c_datastore_destroy_buffer(self, id) &
2484                bind(C, name="SIDRE_DataStore_destroy_buffer")
2485            use iso_c_binding, only : C_INT64_T
2486            import :: SIDRE_SHROUD_datastore_capsule
2487            implicit none
2488            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2489            integer(C_INT64_T), value, intent(IN) :: id
2490        end subroutine c_datastore_destroy_buffer
2491
2492        function c_datastore_generate_blueprint_index_0(self, &
2493                domain_path, mesh_name, index_path, num_domains) &
2494                result(SHT_rv) &
2495                bind(C, name="SIDRE_DataStore_generate_blueprint_index_0")
2496            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
2497            import :: SIDRE_SHROUD_datastore_capsule
2498            implicit none
2499            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2500            character(kind=C_CHAR), intent(IN) :: domain_path(*)
2501            character(kind=C_CHAR), intent(IN) :: mesh_name(*)
2502            character(kind=C_CHAR), intent(IN) :: index_path(*)
2503            integer(C_INT), value, intent(IN) :: num_domains
2504            logical(C_BOOL) :: SHT_rv
2505        end function c_datastore_generate_blueprint_index_0
2506
2507        function c_datastore_generate_blueprint_index_0_bufferify(self, &
2508                domain_path, Ldomain_path, mesh_name, Lmesh_name, &
2509                index_path, Lindex_path, num_domains) &
2510                result(SHT_rv) &
2511                bind(C, name="SIDRE_DataStore_generate_blueprint_index_0_bufferify")
2512            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
2513            import :: SIDRE_SHROUD_datastore_capsule
2514            implicit none
2515            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2516            character(kind=C_CHAR), intent(IN) :: domain_path(*)
2517            integer(C_INT), value, intent(IN) :: Ldomain_path
2518            character(kind=C_CHAR), intent(IN) :: mesh_name(*)
2519            integer(C_INT), value, intent(IN) :: Lmesh_name
2520            character(kind=C_CHAR), intent(IN) :: index_path(*)
2521            integer(C_INT), value, intent(IN) :: Lindex_path
2522            integer(C_INT), value, intent(IN) :: num_domains
2523            logical(C_BOOL) :: SHT_rv
2524        end function c_datastore_generate_blueprint_index_0_bufferify
2525
2526#ifdef AXOM_USE_MPI
2527        function c_datastore_generate_blueprint_index_1(self, comm, &
2528                domain_path, mesh_name, index_path) &
2529                result(SHT_rv) &
2530                bind(C, name="SIDRE_DataStore_generate_blueprint_index_1")
2531            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
2532            import :: SIDRE_SHROUD_datastore_capsule
2533            implicit none
2534            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2535            integer(C_INT), value, intent(IN) :: comm
2536            character(kind=C_CHAR), intent(IN) :: domain_path(*)
2537            character(kind=C_CHAR), intent(IN) :: mesh_name(*)
2538            character(kind=C_CHAR), intent(IN) :: index_path(*)
2539            logical(C_BOOL) :: SHT_rv
2540        end function c_datastore_generate_blueprint_index_1
2541#endif
2542
2543#ifdef AXOM_USE_MPI
2544        function c_datastore_generate_blueprint_index_1_bufferify(self, &
2545                comm, domain_path, Ldomain_path, mesh_name, Lmesh_name, &
2546                index_path, Lindex_path) &
2547                result(SHT_rv) &
2548                bind(C, name="SIDRE_DataStore_generate_blueprint_index_1_bufferify")
2549            use iso_c_binding, only : C_BOOL, C_CHAR, C_INT
2550            import :: SIDRE_SHROUD_datastore_capsule
2551            implicit none
2552            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2553            integer(C_INT), value, intent(IN) :: comm
2554            character(kind=C_CHAR), intent(IN) :: domain_path(*)
2555            integer(C_INT), value, intent(IN) :: Ldomain_path
2556            character(kind=C_CHAR), intent(IN) :: mesh_name(*)
2557            integer(C_INT), value, intent(IN) :: Lmesh_name
2558            character(kind=C_CHAR), intent(IN) :: index_path(*)
2559            integer(C_INT), value, intent(IN) :: Lindex_path
2560            logical(C_BOOL) :: SHT_rv
2561        end function c_datastore_generate_blueprint_index_1_bufferify
2562#endif
2563
2564        subroutine c_datastore_print(self) &
2565                bind(C, name="SIDRE_DataStore_print")
2566            import :: SIDRE_SHROUD_datastore_capsule
2567            implicit none
2568            type(SIDRE_SHROUD_datastore_capsule), intent(IN) :: self
2569        end subroutine c_datastore_print
2570
2571        ! splicer begin class.DataStore.additional_interfaces
2572        ! splicer end class.DataStore.additional_interfaces
2573
2574        function c_name_is_valid(name) &
2575                result(SHT_rv) &
2576                bind(C, name="SIDRE_name_is_valid")
2577            use iso_c_binding, only : C_BOOL, C_CHAR
2578            implicit none
2579            character(kind=C_CHAR), intent(IN) :: name(*)
2580            logical(C_BOOL) :: SHT_rv
2581        end function c_name_is_valid
2582
2583        ! splicer begin additional_interfaces
2584        function SIDRE_create_array_view(group, name, lname, addr, type, rank, extents) &
2585              result(rv) bind(C,name="SIDRE_create_array_view")
2586            use iso_c_binding
2587            import SIDRE_IndexType
2588            type(C_PTR), value, intent(IN)     :: group
2589            character(kind=C_CHAR), intent(IN) :: name(*)
2590            integer(C_INT), value, intent(IN)  :: lname
2591            type(C_PTR), value,     intent(IN) :: addr
2592            integer(C_INT), value, intent(IN)  :: type
2593            integer(C_INT), value, intent(IN)  :: rank
2594            integer(SIDRE_IndexType), intent(IN)  :: extents(*)
2595            type(C_PTR) rv
2596        end function SIDRE_create_array_view
2597        ! splicer end additional_interfaces
2598    end interface
2599
2600    interface SidreDataStore
2601        module procedure datastore_new
2602    end interface SidreDataStore
2603
2604contains
2605
2606    function buffer_get_index(obj) &
2607            result(SHT_rv)
2608        use iso_c_binding, only : C_INT64_T
2609        class(SidreBuffer) :: obj
2610        integer(C_INT64_T) :: SHT_rv
2611        ! splicer begin class.Buffer.method.get_index
2612        SHT_rv = c_buffer_get_index(obj%cxxmem)
2613        ! splicer end class.Buffer.method.get_index
2614    end function buffer_get_index
2615
2616    function buffer_get_num_views(obj) &
2617            result(SHT_rv)
2618        use iso_c_binding, only : C_SIZE_T
2619        class(SidreBuffer) :: obj
2620        integer(C_SIZE_T) :: SHT_rv
2621        ! splicer begin class.Buffer.method.get_num_views
2622        SHT_rv = c_buffer_get_num_views(obj%cxxmem)
2623        ! splicer end class.Buffer.method.get_num_views
2624    end function buffer_get_num_views
2625
2626    function buffer_get_void_ptr(obj) &
2627            result(SHT_rv)
2628        use iso_c_binding, only : C_PTR
2629        class(SidreBuffer) :: obj
2630        type(C_PTR) :: SHT_rv
2631        ! splicer begin class.Buffer.method.get_void_ptr
2632        SHT_rv = c_buffer_get_void_ptr(obj%cxxmem)
2633        ! splicer end class.Buffer.method.get_void_ptr
2634    end function buffer_get_void_ptr
2635
2636    function buffer_get_type_id(obj) &
2637            result(SHT_rv)
2638        use iso_c_binding, only : C_INT
2639        class(SidreBuffer) :: obj
2640        integer(C_INT) :: SHT_rv
2641        ! splicer begin class.Buffer.method.get_type_id
2642        SHT_rv = c_buffer_get_type_id(obj%cxxmem)
2643        ! splicer end class.Buffer.method.get_type_id
2644    end function buffer_get_type_id
2645
2646    function buffer_get_num_elements(obj) &
2647            result(SHT_rv)
2648        use iso_c_binding, only : C_SIZE_T
2649        class(SidreBuffer) :: obj
2650        integer(C_SIZE_T) :: SHT_rv
2651        ! splicer begin class.Buffer.method.get_num_elements
2652        SHT_rv = c_buffer_get_num_elements(obj%cxxmem)
2653        ! splicer end class.Buffer.method.get_num_elements
2654    end function buffer_get_num_elements
2655
2656    function buffer_get_total_bytes(obj) &
2657            result(SHT_rv)
2658        use iso_c_binding, only : C_SIZE_T
2659        class(SidreBuffer) :: obj
2660        integer(C_SIZE_T) :: SHT_rv
2661        ! splicer begin class.Buffer.method.get_total_bytes
2662        SHT_rv = c_buffer_get_total_bytes(obj%cxxmem)
2663        ! splicer end class.Buffer.method.get_total_bytes
2664    end function buffer_get_total_bytes
2665
2666    function buffer_get_bytes_per_element(obj) &
2667            result(SHT_rv)
2668        use iso_c_binding, only : C_SIZE_T
2669        class(SidreBuffer) :: obj
2670        integer(C_SIZE_T) :: SHT_rv
2671        ! splicer begin class.Buffer.method.get_bytes_per_element
2672        SHT_rv = c_buffer_get_bytes_per_element(obj%cxxmem)
2673        ! splicer end class.Buffer.method.get_bytes_per_element
2674    end function buffer_get_bytes_per_element
2675
2676    subroutine buffer_describe_int32_t(obj, type, num_elems)
2677        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T
2678        class(SidreBuffer) :: obj
2679        integer(C_INT), value, intent(IN) :: type
2680        integer(C_INT32_T), value, intent(IN) :: num_elems
2681        ! splicer begin class.Buffer.method.describe_int32_t
2682        call c_buffer_describe(obj%cxxmem, type, &
2683            int(num_elems, C_INT64_t))
2684        ! splicer end class.Buffer.method.describe_int32_t
2685    end subroutine buffer_describe_int32_t
2686
2687    subroutine buffer_describe_int64_t(obj, type, num_elems)
2688        use iso_c_binding, only : C_INT, C_INT64_T
2689        class(SidreBuffer) :: obj
2690        integer(C_INT), value, intent(IN) :: type
2691        integer(C_INT64_T), value, intent(IN) :: num_elems
2692        ! splicer begin class.Buffer.method.describe_int64_t
2693        call c_buffer_describe(obj%cxxmem, type, &
2694            int(num_elems, C_INT64_t))
2695        ! splicer end class.Buffer.method.describe_int64_t
2696    end subroutine buffer_describe_int64_t
2697
2698    subroutine buffer_allocate_existing(obj)
2699        class(SidreBuffer) :: obj
2700        ! splicer begin class.Buffer.method.allocate_existing
2701        call c_buffer_allocate_existing(obj%cxxmem)
2702        ! splicer end class.Buffer.method.allocate_existing
2703    end subroutine buffer_allocate_existing
2704
2705    subroutine buffer_allocate_from_type_int32_t(obj, type, num_elems)
2706        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T
2707        class(SidreBuffer) :: obj
2708        integer(C_INT), value, intent(IN) :: type
2709        integer(C_INT32_T), value, intent(IN) :: num_elems
2710        ! splicer begin class.Buffer.method.allocate_from_type_int32_t
2711        call c_buffer_allocate_from_type(obj%cxxmem, type, &
2712            int(num_elems, C_INT64_t))
2713        ! splicer end class.Buffer.method.allocate_from_type_int32_t
2714    end subroutine buffer_allocate_from_type_int32_t
2715
2716    subroutine buffer_allocate_from_type_int64_t(obj, type, num_elems)
2717        use iso_c_binding, only : C_INT, C_INT64_T
2718        class(SidreBuffer) :: obj
2719        integer(C_INT), value, intent(IN) :: type
2720        integer(C_INT64_T), value, intent(IN) :: num_elems
2721        ! splicer begin class.Buffer.method.allocate_from_type_int64_t
2722        call c_buffer_allocate_from_type(obj%cxxmem, type, &
2723            int(num_elems, C_INT64_t))
2724        ! splicer end class.Buffer.method.allocate_from_type_int64_t
2725    end subroutine buffer_allocate_from_type_int64_t
2726
2727    subroutine buffer_reallocate_int32_t(obj, num_elems)
2728        use iso_c_binding, only : C_INT32_T, C_INT64_T
2729        class(SidreBuffer) :: obj
2730        integer(C_INT32_T), value, intent(IN) :: num_elems
2731        ! splicer begin class.Buffer.method.reallocate_int32_t
2732        call c_buffer_reallocate(obj%cxxmem, int(num_elems, C_INT64_t))
2733        ! splicer end class.Buffer.method.reallocate_int32_t
2734    end subroutine buffer_reallocate_int32_t
2735
2736    subroutine buffer_reallocate_int64_t(obj, num_elems)
2737        use iso_c_binding, only : C_INT64_T
2738        class(SidreBuffer) :: obj
2739        integer(C_INT64_T), value, intent(IN) :: num_elems
2740        ! splicer begin class.Buffer.method.reallocate_int64_t
2741        call c_buffer_reallocate(obj%cxxmem, int(num_elems, C_INT64_t))
2742        ! splicer end class.Buffer.method.reallocate_int64_t
2743    end subroutine buffer_reallocate_int64_t
2744
2745    subroutine buffer_print(obj)
2746        class(SidreBuffer) :: obj
2747        ! splicer begin class.Buffer.method.print
2748        call c_buffer_print(obj%cxxmem)
2749        ! splicer end class.Buffer.method.print
2750    end subroutine buffer_print
2751
2752    ! Return pointer to C++ memory.
2753    function buffer_get_instance(obj) result (cxxptr)
2754        use iso_c_binding, only: C_PTR
2755        class(SidreBuffer), intent(IN) :: obj
2756        type(C_PTR) :: cxxptr
2757        cxxptr = obj%cxxmem%addr
2758    end function buffer_get_instance
2759
2760    subroutine buffer_set_instance(obj, cxxmem)
2761        use iso_c_binding, only: C_PTR
2762        class(SidreBuffer), intent(INOUT) :: obj
2763        type(C_PTR), intent(IN) :: cxxmem
2764        obj%cxxmem%addr = cxxmem
2765        obj%cxxmem%idtor = 0
2766    end subroutine buffer_set_instance
2767
2768    function buffer_associated(obj) result (rv)
2769        use iso_c_binding, only: c_associated
2770        class(SidreBuffer), intent(IN) :: obj
2771        logical rv
2772        rv = c_associated(obj%cxxmem%addr)
2773    end function buffer_associated
2774
2775    ! splicer begin class.Buffer.additional_functions
2776    ! splicer end class.Buffer.additional_functions
2777
2778    function group_get_index(obj) &
2779            result(SHT_rv)
2780        use iso_c_binding, only : C_INT64_T
2781        class(SidreGroup) :: obj
2782        integer(C_INT64_T) :: SHT_rv
2783        ! splicer begin class.Group.method.get_index
2784        SHT_rv = c_group_get_index(obj%cxxmem)
2785        ! splicer end class.Group.method.get_index
2786    end function group_get_index
2787
2788    function group_get_name(obj) &
2789            result(SHT_rv)
2790        use iso_c_binding, only : C_INT
2791        class(SidreGroup) :: obj
2792        character(len=MAXNAMESIZE) :: SHT_rv
2793        ! splicer begin class.Group.method.get_name
2794        call c_group_get_name_bufferify(obj%cxxmem, SHT_rv, &
2795            len(SHT_rv, kind=C_INT))
2796        ! splicer end class.Group.method.get_name
2797    end function group_get_name
2798
2799    function group_get_path(obj) &
2800            result(SHT_rv)
2801        use iso_c_binding, only : C_INT
2802        class(SidreGroup) :: obj
2803        character(len=MAXNAMESIZE) :: SHT_rv
2804        ! splicer begin class.Group.method.get_path
2805        call c_group_get_path_bufferify(obj%cxxmem, SHT_rv, &
2806            len(SHT_rv, kind=C_INT))
2807        ! splicer end class.Group.method.get_path
2808    end function group_get_path
2809
2810    function group_get_path_name(obj) &
2811            result(SHT_rv)
2812        use iso_c_binding, only : C_INT
2813        class(SidreGroup) :: obj
2814        character(len=MAXNAMESIZE) :: SHT_rv
2815        ! splicer begin class.Group.method.get_path_name
2816        call c_group_get_path_name_bufferify(obj%cxxmem, SHT_rv, &
2817            len(SHT_rv, kind=C_INT))
2818        ! splicer end class.Group.method.get_path_name
2819    end function group_get_path_name
2820
2821    function group_get_parent(obj) &
2822            result(SHT_rv)
2823        use iso_c_binding, only : C_PTR
2824        class(SidreGroup) :: obj
2825        type(SidreGroup) :: SHT_rv
2826        ! splicer begin class.Group.method.get_parent
2827        type(C_PTR) :: SHT_prv
2828        SHT_prv = c_group_get_parent(obj%cxxmem, SHT_rv%cxxmem)
2829        ! splicer end class.Group.method.get_parent
2830    end function group_get_parent
2831
2832    function group_get_num_groups(obj) &
2833            result(SHT_rv)
2834        use iso_c_binding, only : C_SIZE_T
2835        class(SidreGroup) :: obj
2836        integer(C_SIZE_T) :: SHT_rv
2837        ! splicer begin class.Group.method.get_num_groups
2838        SHT_rv = c_group_get_num_groups(obj%cxxmem)
2839        ! splicer end class.Group.method.get_num_groups
2840    end function group_get_num_groups
2841
2842    function group_get_num_views(obj) &
2843            result(SHT_rv)
2844        use iso_c_binding, only : C_SIZE_T
2845        class(SidreGroup) :: obj
2846        integer(C_SIZE_T) :: SHT_rv
2847        ! splicer begin class.Group.method.get_num_views
2848        SHT_rv = c_group_get_num_views(obj%cxxmem)
2849        ! splicer end class.Group.method.get_num_views
2850    end function group_get_num_views
2851
2852    function group_get_data_store(obj) &
2853            result(SHT_rv)
2854        use iso_c_binding, only : C_PTR
2855        class(SidreGroup) :: obj
2856        type(SidreDataStore) :: SHT_rv
2857        ! splicer begin class.Group.method.get_data_store
2858        type(C_PTR) :: SHT_prv
2859        SHT_prv = c_group_get_data_store(obj%cxxmem, SHT_rv%cxxmem)
2860        ! splicer end class.Group.method.get_data_store
2861    end function group_get_data_store
2862
2863    function group_has_view(obj, path) &
2864            result(SHT_rv)
2865        use iso_c_binding, only : C_BOOL, C_INT
2866        class(SidreGroup) :: obj
2867        character(len=*), intent(IN) :: path
2868        logical :: SHT_rv
2869        ! splicer begin class.Group.method.has_view
2870        SHT_rv = c_group_has_view_bufferify(obj%cxxmem, path, &
2871            len_trim(path, kind=C_INT))
2872        ! splicer end class.Group.method.has_view
2873    end function group_has_view
2874
2875    function group_has_child_view(obj, name) &
2876            result(SHT_rv)
2877        use iso_c_binding, only : C_BOOL, C_INT
2878        class(SidreGroup) :: obj
2879        character(len=*), intent(IN) :: name
2880        logical :: SHT_rv
2881        ! splicer begin class.Group.method.has_child_view
2882        SHT_rv = c_group_has_child_view_bufferify(obj%cxxmem, name, &
2883            len_trim(name, kind=C_INT))
2884        ! splicer end class.Group.method.has_child_view
2885    end function group_has_child_view
2886
2887    function group_get_view_index(obj, name) &
2888            result(SHT_rv)
2889        use iso_c_binding, only : C_INT, C_INT64_T
2890        class(SidreGroup) :: obj
2891        character(len=*), intent(IN) :: name
2892        integer(C_INT64_T) :: SHT_rv
2893        ! splicer begin class.Group.method.get_view_index
2894        SHT_rv = c_group_get_view_index_bufferify(obj%cxxmem, name, &
2895            len_trim(name, kind=C_INT))
2896        ! splicer end class.Group.method.get_view_index
2897    end function group_get_view_index
2898
2899    function group_get_view_name_int32_t(obj, idx) &
2900            result(SHT_rv)
2901        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T
2902        class(SidreGroup) :: obj
2903        integer(C_INT32_T), value, intent(IN) :: idx
2904        character(len=MAXNAMESIZE) :: SHT_rv
2905        ! splicer begin class.Group.method.get_view_name_int32_t
2906        call c_group_get_view_name_bufferify(obj%cxxmem, &
2907            int(idx, C_INT64_t), SHT_rv, len(SHT_rv, kind=C_INT))
2908        ! splicer end class.Group.method.get_view_name_int32_t
2909    end function group_get_view_name_int32_t
2910
2911    function group_get_view_name_int64_t(obj, idx) &
2912            result(SHT_rv)
2913        use iso_c_binding, only : C_INT, C_INT64_T
2914        class(SidreGroup) :: obj
2915        integer(C_INT64_T), value, intent(IN) :: idx
2916        character(len=MAXNAMESIZE) :: SHT_rv
2917        ! splicer begin class.Group.method.get_view_name_int64_t
2918        call c_group_get_view_name_bufferify(obj%cxxmem, &
2919            int(idx, C_INT64_t), SHT_rv, len(SHT_rv, kind=C_INT))
2920        ! splicer end class.Group.method.get_view_name_int64_t
2921    end function group_get_view_name_int64_t
2922
2923    function group_get_view_from_name(obj, path) &
2924            result(SHT_rv)
2925        use iso_c_binding, only : C_INT, C_PTR
2926        class(SidreGroup) :: obj
2927        character(len=*), intent(IN) :: path
2928        type(SidreView) :: SHT_rv
2929        ! splicer begin class.Group.method.get_view_from_name
2930        type(C_PTR) :: SHT_prv
2931        SHT_prv = c_group_get_view_from_name_bufferify(obj%cxxmem, path, &
2932            len_trim(path, kind=C_INT), SHT_rv%cxxmem)
2933        ! splicer end class.Group.method.get_view_from_name
2934    end function group_get_view_from_name
2935
2936    function group_get_view_from_index_int32_t(obj, idx) &
2937            result(SHT_rv)
2938        use iso_c_binding, only : C_INT32_T, C_INT64_T, C_PTR
2939        class(SidreGroup) :: obj
2940        integer(C_INT32_T), value, intent(IN) :: idx
2941        type(SidreView) :: SHT_rv
2942        ! splicer begin class.Group.method.get_view_from_index_int32_t
2943        type(C_PTR) :: SHT_prv
2944        SHT_prv = c_group_get_view_from_index(obj%cxxmem, &
2945            int(idx, C_INT64_t), SHT_rv%cxxmem)
2946        ! splicer end class.Group.method.get_view_from_index_int32_t
2947    end function group_get_view_from_index_int32_t
2948
2949    function group_get_view_from_index_int64_t(obj, idx) &
2950            result(SHT_rv)
2951        use iso_c_binding, only : C_INT64_T, C_PTR
2952        class(SidreGroup) :: obj
2953        integer(C_INT64_T), value, intent(IN) :: idx
2954        type(SidreView) :: SHT_rv
2955        ! splicer begin class.Group.method.get_view_from_index_int64_t
2956        type(C_PTR) :: SHT_prv
2957        SHT_prv = c_group_get_view_from_index(obj%cxxmem, &
2958            int(idx, C_INT64_t), SHT_rv%cxxmem)
2959        ! splicer end class.Group.method.get_view_from_index_int64_t
2960    end function group_get_view_from_index_int64_t
2961
2962    function group_get_first_valid_view_index(obj) &
2963            result(SHT_rv)
2964        use iso_c_binding, only : C_INT64_T
2965        class(SidreGroup) :: obj
2966        integer(C_INT64_T) :: SHT_rv
2967        ! splicer begin class.Group.method.get_first_valid_view_index
2968        SHT_rv = c_group_get_first_valid_view_index(obj%cxxmem)
2969        ! splicer end class.Group.method.get_first_valid_view_index
2970    end function group_get_first_valid_view_index
2971
2972    function group_get_next_valid_view_index_int32_t(obj, idx) &
2973            result(SHT_rv)
2974        use iso_c_binding, only : C_INT32_T, C_INT64_T
2975        class(SidreGroup) :: obj
2976        integer(C_INT32_T), value, intent(IN) :: idx
2977        integer(C_INT64_T) :: SHT_rv
2978        ! splicer begin class.Group.method.get_next_valid_view_index_int32_t
2979        SHT_rv = c_group_get_next_valid_view_index(obj%cxxmem, &
2980            int(idx, C_INT64_t))
2981        ! splicer end class.Group.method.get_next_valid_view_index_int32_t
2982    end function group_get_next_valid_view_index_int32_t
2983
2984    function group_get_next_valid_view_index_int64_t(obj, idx) &
2985            result(SHT_rv)
2986        use iso_c_binding, only : C_INT64_T
2987        class(SidreGroup) :: obj
2988        integer(C_INT64_T), value, intent(IN) :: idx
2989        integer(C_INT64_T) :: SHT_rv
2990        ! splicer begin class.Group.method.get_next_valid_view_index_int64_t
2991        SHT_rv = c_group_get_next_valid_view_index(obj%cxxmem, &
2992            int(idx, C_INT64_t))
2993        ! splicer end class.Group.method.get_next_valid_view_index_int64_t
2994    end function group_get_next_valid_view_index_int64_t
2995
2996    function group_create_view_empty(obj, path) &
2997            result(SHT_rv)
2998        use iso_c_binding, only : C_INT, C_PTR
2999        class(SidreGroup) :: obj
3000        character(len=*), intent(IN) :: path
3001        type(SidreView) :: SHT_rv
3002        ! splicer begin class.Group.method.create_view_empty
3003        type(C_PTR) :: SHT_prv
3004        SHT_prv = c_group_create_view_empty_bufferify(obj%cxxmem, path, &
3005            len_trim(path, kind=C_INT), SHT_rv%cxxmem)
3006        ! splicer end class.Group.method.create_view_empty
3007    end function group_create_view_empty
3008
3009    function group_create_view_from_type_int32_t(obj, path, type, &
3010            num_elems) &
3011            result(SHT_rv)
3012        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T, C_PTR
3013        class(SidreGroup) :: obj
3014        character(len=*), intent(IN) :: path
3015        integer(C_INT), value, intent(IN) :: type
3016        integer(C_INT32_T), value, intent(IN) :: num_elems
3017        type(SidreView) :: SHT_rv
3018        ! splicer begin class.Group.method.create_view_from_type_int32_t
3019        type(C_PTR) :: SHT_prv
3020        SHT_prv = c_group_create_view_from_type_bufferify(obj%cxxmem, &
3021            path, len_trim(path, kind=C_INT), type, &
3022            int(num_elems, C_INT64_t), SHT_rv%cxxmem)
3023        ! splicer end class.Group.method.create_view_from_type_int32_t
3024    end function group_create_view_from_type_int32_t
3025
3026    function group_create_view_from_type_int64_t(obj, path, type, &
3027            num_elems) &
3028            result(SHT_rv)
3029        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3030        class(SidreGroup) :: obj
3031        character(len=*), intent(IN) :: path
3032        integer(C_INT), value, intent(IN) :: type
3033        integer(C_INT64_T), value, intent(IN) :: num_elems
3034        type(SidreView) :: SHT_rv
3035        ! splicer begin class.Group.method.create_view_from_type_int64_t
3036        type(C_PTR) :: SHT_prv
3037        SHT_prv = c_group_create_view_from_type_bufferify(obj%cxxmem, &
3038            path, len_trim(path, kind=C_INT), type, &
3039            int(num_elems, C_INT64_t), SHT_rv%cxxmem)
3040        ! splicer end class.Group.method.create_view_from_type_int64_t
3041    end function group_create_view_from_type_int64_t
3042
3043    function group_create_view_from_shape(obj, path, type, ndims, shape) &
3044            result(SHT_rv)
3045        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3046        class(SidreGroup) :: obj
3047        character(len=*), intent(IN) :: path
3048        integer(C_INT), value, intent(IN) :: type
3049        integer(C_INT), value, intent(IN) :: ndims
3050        integer(C_INT64_T), intent(IN) :: shape(:)
3051        type(SidreView) :: SHT_rv
3052        ! splicer begin class.Group.method.create_view_from_shape
3053        type(C_PTR) :: SHT_prv
3054        SHT_prv = c_group_create_view_from_shape_bufferify(obj%cxxmem, &
3055            path, len_trim(path, kind=C_INT), type, ndims, shape, &
3056            SHT_rv%cxxmem)
3057        ! splicer end class.Group.method.create_view_from_shape
3058    end function group_create_view_from_shape
3059
3060    function group_create_view_into_buffer(obj, path, buff) &
3061            result(SHT_rv)
3062        use iso_c_binding, only : C_INT, C_PTR
3063        class(SidreGroup) :: obj
3064        character(len=*), intent(IN) :: path
3065        type(SidreBuffer), intent(INOUT) :: buff
3066        type(SidreView) :: SHT_rv
3067        ! splicer begin class.Group.method.create_view_into_buffer
3068        type(C_PTR) :: SHT_prv
3069        SHT_prv = c_group_create_view_into_buffer_bufferify(obj%cxxmem, &
3070            path, len_trim(path, kind=C_INT), buff%cxxmem, &
3071            SHT_rv%cxxmem)
3072        ! splicer end class.Group.method.create_view_into_buffer
3073    end function group_create_view_into_buffer
3074
3075    function group_create_view_from_type_and_buffer_int32_t(obj, path, &
3076            type, num_elems, buff) &
3077            result(SHT_rv)
3078        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T, C_PTR
3079        class(SidreGroup) :: obj
3080        character(len=*), intent(IN) :: path
3081        integer(C_INT), value, intent(IN) :: type
3082        integer(C_INT32_T), value, intent(IN) :: num_elems
3083        type(SidreBuffer), intent(INOUT) :: buff
3084        type(SidreView) :: SHT_rv
3085        ! splicer begin class.Group.method.create_view_from_type_and_buffer_int32_t
3086        type(C_PTR) :: SHT_prv
3087        SHT_prv = c_group_create_view_from_type_and_buffer_bufferify(obj%cxxmem, &
3088            path, len_trim(path, kind=C_INT), type, &
3089            int(num_elems, C_INT64_t), buff%cxxmem, SHT_rv%cxxmem)
3090        ! splicer end class.Group.method.create_view_from_type_and_buffer_int32_t
3091    end function group_create_view_from_type_and_buffer_int32_t
3092
3093    function group_create_view_from_type_and_buffer_int64_t(obj, path, &
3094            type, num_elems, buff) &
3095            result(SHT_rv)
3096        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3097        class(SidreGroup) :: obj
3098        character(len=*), intent(IN) :: path
3099        integer(C_INT), value, intent(IN) :: type
3100        integer(C_INT64_T), value, intent(IN) :: num_elems
3101        type(SidreBuffer), intent(INOUT) :: buff
3102        type(SidreView) :: SHT_rv
3103        ! splicer begin class.Group.method.create_view_from_type_and_buffer_int64_t
3104        type(C_PTR) :: SHT_prv
3105        SHT_prv = c_group_create_view_from_type_and_buffer_bufferify(obj%cxxmem, &
3106            path, len_trim(path, kind=C_INT), type, &
3107            int(num_elems, C_INT64_t), buff%cxxmem, SHT_rv%cxxmem)
3108        ! splicer end class.Group.method.create_view_from_type_and_buffer_int64_t
3109    end function group_create_view_from_type_and_buffer_int64_t
3110
3111    function group_create_view_from_shape_and_buffer(obj, path, type, &
3112            ndims, shape, buff) &
3113            result(SHT_rv)
3114        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3115        class(SidreGroup) :: obj
3116        character(len=*), intent(IN) :: path
3117        integer(C_INT), value, intent(IN) :: type
3118        integer(C_INT), value, intent(IN) :: ndims
3119        integer(C_INT64_T), intent(IN) :: shape(:)
3120        type(SidreBuffer), intent(INOUT) :: buff
3121        type(SidreView) :: SHT_rv
3122        ! splicer begin class.Group.method.create_view_from_shape_and_buffer
3123        type(C_PTR) :: SHT_prv
3124        SHT_prv = c_group_create_view_from_shape_and_buffer_bufferify(obj%cxxmem, &
3125            path, len_trim(path, kind=C_INT), type, ndims, shape, &
3126            buff%cxxmem, SHT_rv%cxxmem)
3127        ! splicer end class.Group.method.create_view_from_shape_and_buffer
3128    end function group_create_view_from_shape_and_buffer
3129
3130    function group_create_view_external(obj, path, external_ptr) &
3131            result(SHT_rv)
3132        use iso_c_binding, only : C_INT, C_PTR
3133        class(SidreGroup) :: obj
3134        character(len=*), intent(IN) :: path
3135        type(C_PTR), intent(IN) :: external_ptr
3136        type(SidreView) :: SHT_rv
3137        ! splicer begin class.Group.method.create_view_external
3138        type(C_PTR) :: SHT_prv
3139        SHT_prv = c_group_create_view_external_bufferify(obj%cxxmem, &
3140            path, len_trim(path, kind=C_INT), external_ptr, &
3141            SHT_rv%cxxmem)
3142        ! splicer end class.Group.method.create_view_external
3143    end function group_create_view_external
3144
3145    function group_create_view_from_type_external_int32_t(obj, path, &
3146            type, num_elems, external_ptr) &
3147            result(SHT_rv)
3148        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T, C_PTR
3149        class(SidreGroup) :: obj
3150        character(len=*), intent(IN) :: path
3151        integer(C_INT), value, intent(IN) :: type
3152        integer(C_INT32_T), value, intent(IN) :: num_elems
3153        type(C_PTR), intent(IN) :: external_ptr
3154        type(SidreView) :: SHT_rv
3155        ! splicer begin class.Group.method.create_view_from_type_external_int32_t
3156        type(C_PTR) :: SHT_prv
3157        SHT_prv = c_group_create_view_from_type_external_bufferify(obj%cxxmem, &
3158            path, len_trim(path, kind=C_INT), type, &
3159            int(num_elems, C_INT64_t), external_ptr, SHT_rv%cxxmem)
3160        ! splicer end class.Group.method.create_view_from_type_external_int32_t
3161    end function group_create_view_from_type_external_int32_t
3162
3163    function group_create_view_from_type_external_int64_t(obj, path, &
3164            type, num_elems, external_ptr) &
3165            result(SHT_rv)
3166        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3167        class(SidreGroup) :: obj
3168        character(len=*), intent(IN) :: path
3169        integer(C_INT), value, intent(IN) :: type
3170        integer(C_INT64_T), value, intent(IN) :: num_elems
3171        type(C_PTR), intent(IN) :: external_ptr
3172        type(SidreView) :: SHT_rv
3173        ! splicer begin class.Group.method.create_view_from_type_external_int64_t
3174        type(C_PTR) :: SHT_prv
3175        SHT_prv = c_group_create_view_from_type_external_bufferify(obj%cxxmem, &
3176            path, len_trim(path, kind=C_INT), type, &
3177            int(num_elems, C_INT64_t), external_ptr, SHT_rv%cxxmem)
3178        ! splicer end class.Group.method.create_view_from_type_external_int64_t
3179    end function group_create_view_from_type_external_int64_t
3180
3181    function group_create_view_from_shape_external(obj, path, type, &
3182            ndims, shape, external_ptr) &
3183            result(SHT_rv)
3184        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3185        class(SidreGroup) :: obj
3186        character(len=*), intent(IN) :: path
3187        integer(C_INT), value, intent(IN) :: type
3188        integer(C_INT), value, intent(IN) :: ndims
3189        integer(C_INT64_T), intent(IN) :: shape(:)
3190        type(C_PTR), intent(IN) :: external_ptr
3191        type(SidreView) :: SHT_rv
3192        ! splicer begin class.Group.method.create_view_from_shape_external
3193        type(C_PTR) :: SHT_prv
3194        SHT_prv = c_group_create_view_from_shape_external_bufferify(obj%cxxmem, &
3195            path, len_trim(path, kind=C_INT), type, ndims, shape, &
3196            external_ptr, SHT_rv%cxxmem)
3197        ! splicer end class.Group.method.create_view_from_shape_external
3198    end function group_create_view_from_shape_external
3199
3200    function group_create_view_and_allocate_nelems_int32_t(obj, path, &
3201            type, num_elems) &
3202            result(SHT_rv)
3203        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T, C_PTR
3204        class(SidreGroup) :: obj
3205        character(len=*), intent(IN) :: path
3206        integer(C_INT), value, intent(IN) :: type
3207        integer(C_INT32_T), value, intent(IN) :: num_elems
3208        type(SidreView) :: SHT_rv
3209        ! splicer begin class.Group.method.create_view_and_allocate_nelems_int32_t
3210        type(C_PTR) :: SHT_prv
3211        SHT_prv = c_group_create_view_and_allocate_nelems_bufferify(obj%cxxmem, &
3212            path, len_trim(path, kind=C_INT), type, &
3213            int(num_elems, C_INT64_t), SHT_rv%cxxmem)
3214        ! splicer end class.Group.method.create_view_and_allocate_nelems_int32_t
3215    end function group_create_view_and_allocate_nelems_int32_t
3216
3217    function group_create_view_and_allocate_nelems_int64_t(obj, path, &
3218            type, num_elems) &
3219            result(SHT_rv)
3220        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3221        class(SidreGroup) :: obj
3222        character(len=*), intent(IN) :: path
3223        integer(C_INT), value, intent(IN) :: type
3224        integer(C_INT64_T), value, intent(IN) :: num_elems
3225        type(SidreView) :: SHT_rv
3226        ! splicer begin class.Group.method.create_view_and_allocate_nelems_int64_t
3227        type(C_PTR) :: SHT_prv
3228        SHT_prv = c_group_create_view_and_allocate_nelems_bufferify(obj%cxxmem, &
3229            path, len_trim(path, kind=C_INT), type, &
3230            int(num_elems, C_INT64_t), SHT_rv%cxxmem)
3231        ! splicer end class.Group.method.create_view_and_allocate_nelems_int64_t
3232    end function group_create_view_and_allocate_nelems_int64_t
3233
3234    function group_create_view_and_allocate_shape(obj, path, type, &
3235            ndims, shape) &
3236            result(SHT_rv)
3237        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
3238        class(SidreGroup) :: obj
3239        character(len=*), intent(IN) :: path
3240        integer(C_INT), value, intent(IN) :: type
3241        integer(C_INT), value, intent(IN) :: ndims
3242        integer(C_INT64_T), intent(IN) :: shape(:)
3243        type(SidreView) :: SHT_rv
3244        ! splicer begin class.Group.method.create_view_and_allocate_shape
3245        type(C_PTR) :: SHT_prv
3246        SHT_prv = c_group_create_view_and_allocate_shape_bufferify(obj%cxxmem, &
3247            path, len_trim(path, kind=C_INT), type, ndims, shape, &
3248            SHT_rv%cxxmem)
3249        ! splicer end class.Group.method.create_view_and_allocate_shape
3250    end function group_create_view_and_allocate_shape
3251
3252    function group_create_view_scalar_int(obj, path, value) &
3253            result(SHT_rv)
3254        use iso_c_binding, only : C_INT, C_PTR
3255        class(SidreGroup) :: obj
3256        character(len=*), intent(IN) :: path
3257        integer(C_INT), value, intent(IN) :: value
3258        type(SidreView) :: SHT_rv
3259        ! splicer begin class.Group.method.create_view_scalar_int
3260        type(C_PTR) :: SHT_prv
3261        SHT_prv = c_group_create_view_scalar_bufferify_int(obj%cxxmem, &
3262            path, len_trim(path, kind=C_INT), value, SHT_rv%cxxmem)
3263        ! splicer end class.Group.method.create_view_scalar_int
3264    end function group_create_view_scalar_int
3265
3266    function group_create_view_scalar_long(obj, path, value) &
3267            result(SHT_rv)
3268        use iso_c_binding, only : C_INT, C_LONG, C_PTR
3269        class(SidreGroup) :: obj
3270        character(len=*), intent(IN) :: path
3271        integer(C_LONG), value, intent(IN) :: value
3272        type(SidreView) :: SHT_rv
3273        ! splicer begin class.Group.method.create_view_scalar_long
3274        type(C_PTR) :: SHT_prv
3275        SHT_prv = c_group_create_view_scalar_bufferify_long(obj%cxxmem, &
3276            path, len_trim(path, kind=C_INT), value, SHT_rv%cxxmem)
3277        ! splicer end class.Group.method.create_view_scalar_long
3278    end function group_create_view_scalar_long
3279
3280    function group_create_view_scalar_float(obj, path, value) &
3281            result(SHT_rv)
3282        use iso_c_binding, only : C_FLOAT, C_INT, C_PTR
3283        class(SidreGroup) :: obj
3284        character(len=*), intent(IN) :: path
3285        real(C_FLOAT), value, intent(IN) :: value
3286        type(SidreView) :: SHT_rv
3287        ! splicer begin class.Group.method.create_view_scalar_float
3288        type(C_PTR) :: SHT_prv
3289        SHT_prv = c_group_create_view_scalar_bufferify_float(obj%cxxmem, &
3290            path, len_trim(path, kind=C_INT), value, SHT_rv%cxxmem)
3291        ! splicer end class.Group.method.create_view_scalar_float
3292    end function group_create_view_scalar_float
3293
3294    function group_create_view_scalar_double(obj, path, value) &
3295            result(SHT_rv)
3296        use iso_c_binding, only : C_DOUBLE, C_INT, C_PTR
3297        class(SidreGroup) :: obj
3298        character(len=*), intent(IN) :: path
3299        real(C_DOUBLE), value, intent(IN) :: value
3300        type(SidreView) :: SHT_rv
3301        ! splicer begin class.Group.method.create_view_scalar_double
3302        type(C_PTR) :: SHT_prv
3303        SHT_prv = c_group_create_view_scalar_bufferify_double(obj%cxxmem, &
3304            path, len_trim(path, kind=C_INT), value, SHT_rv%cxxmem)
3305        ! splicer end class.Group.method.create_view_scalar_double
3306    end function group_create_view_scalar_double
3307
3308    function group_create_view_string(obj, path, value) &
3309            result(SHT_rv)
3310        use iso_c_binding, only : C_INT, C_PTR
3311        class(SidreGroup) :: obj
3312        character(len=*), intent(IN) :: path
3313        character(len=*), intent(IN) :: value
3314        type(SidreView) :: SHT_rv
3315        ! splicer begin class.Group.method.create_view_string
3316        type(C_PTR) :: SHT_prv
3317        SHT_prv = c_group_create_view_string_bufferify(obj%cxxmem, path, &
3318            len_trim(path, kind=C_INT), value, &
3319            len_trim(value, kind=C_INT), SHT_rv%cxxmem)
3320        ! splicer end class.Group.method.create_view_string
3321    end function group_create_view_string
3322
3323    subroutine group_destroy_view(obj, path)
3324        use iso_c_binding, only : C_INT
3325        class(SidreGroup) :: obj
3326        character(len=*), intent(IN) :: path
3327        ! splicer begin class.Group.method.destroy_view
3328        call c_group_destroy_view_bufferify(obj%cxxmem, path, &
3329            len_trim(path, kind=C_INT))
3330        ! splicer end class.Group.method.destroy_view
3331    end subroutine group_destroy_view
3332
3333    subroutine group_destroy_view_and_data_name(obj, path)
3334        use iso_c_binding, only : C_INT
3335        class(SidreGroup) :: obj
3336        character(len=*), intent(IN) :: path
3337        ! splicer begin class.Group.method.destroy_view_and_data_name
3338        call c_group_destroy_view_and_data_name_bufferify(obj%cxxmem, &
3339            path, len_trim(path, kind=C_INT))
3340        ! splicer end class.Group.method.destroy_view_and_data_name
3341    end subroutine group_destroy_view_and_data_name
3342
3343    subroutine group_destroy_view_and_data_index_int32_t(obj, idx)
3344        use iso_c_binding, only : C_INT32_T, C_INT64_T
3345        class(SidreGroup) :: obj
3346        integer(C_INT32_T), value, intent(IN) :: idx
3347        ! splicer begin class.Group.method.destroy_view_and_data_index_int32_t
3348        call c_group_destroy_view_and_data_index(obj%cxxmem, &
3349            int(idx, C_INT64_t))
3350        ! splicer end class.Group.method.destroy_view_and_data_index_int32_t
3351    end subroutine group_destroy_view_and_data_index_int32_t
3352
3353    subroutine group_destroy_view_and_data_index_int64_t(obj, idx)
3354        use iso_c_binding, only : C_INT64_T
3355        class(SidreGroup) :: obj
3356        integer(C_INT64_T), value, intent(IN) :: idx
3357        ! splicer begin class.Group.method.destroy_view_and_data_index_int64_t
3358        call c_group_destroy_view_and_data_index(obj%cxxmem, &
3359            int(idx, C_INT64_t))
3360        ! splicer end class.Group.method.destroy_view_and_data_index_int64_t
3361    end subroutine group_destroy_view_and_data_index_int64_t
3362
3363    function group_move_view(obj, view) &
3364            result(SHT_rv)
3365        use iso_c_binding, only : C_PTR
3366        class(SidreGroup) :: obj
3367        type(SidreView), intent(INOUT) :: view
3368        type(SidreView) :: SHT_rv
3369        ! splicer begin class.Group.method.move_view
3370        type(C_PTR) :: SHT_prv
3371        SHT_prv = c_group_move_view(obj%cxxmem, view%cxxmem, &
3372            SHT_rv%cxxmem)
3373        ! splicer end class.Group.method.move_view
3374    end function group_move_view
3375
3376    function group_copy_view(obj, view) &
3377            result(SHT_rv)
3378        use iso_c_binding, only : C_PTR
3379        class(SidreGroup) :: obj
3380        type(SidreView), intent(INOUT) :: view
3381        type(SidreView) :: SHT_rv
3382        ! splicer begin class.Group.method.copy_view
3383        type(C_PTR) :: SHT_prv
3384        SHT_prv = c_group_copy_view(obj%cxxmem, view%cxxmem, &
3385            SHT_rv%cxxmem)
3386        ! splicer end class.Group.method.copy_view
3387    end function group_copy_view
3388
3389    function group_has_group(obj, path) &
3390            result(SHT_rv)
3391        use iso_c_binding, only : C_BOOL, C_INT
3392        class(SidreGroup) :: obj
3393        character(len=*), intent(IN) :: path
3394        logical :: SHT_rv
3395        ! splicer begin class.Group.method.has_group
3396        SHT_rv = c_group_has_group_bufferify(obj%cxxmem, path, &
3397            len_trim(path, kind=C_INT))
3398        ! splicer end class.Group.method.has_group
3399    end function group_has_group
3400
3401    function group_has_child_group(obj, name) &
3402            result(SHT_rv)
3403        use iso_c_binding, only : C_BOOL, C_INT
3404        class(SidreGroup) :: obj
3405        character(len=*), intent(IN) :: name
3406        logical :: SHT_rv
3407        ! splicer begin class.Group.method.has_child_group
3408        SHT_rv = c_group_has_child_group_bufferify(obj%cxxmem, name, &
3409            len_trim(name, kind=C_INT))
3410        ! splicer end class.Group.method.has_child_group
3411    end function group_has_child_group
3412
3413    function group_get_group_index(obj, name) &
3414            result(SHT_rv)
3415        use iso_c_binding, only : C_INT, C_INT64_T
3416        class(SidreGroup) :: obj
3417        character(len=*), intent(IN) :: name
3418        integer(C_INT64_T) :: SHT_rv
3419        ! splicer begin class.Group.method.get_group_index
3420        SHT_rv = c_group_get_group_index_bufferify(obj%cxxmem, name, &
3421            len_trim(name, kind=C_INT))
3422        ! splicer end class.Group.method.get_group_index
3423    end function group_get_group_index
3424
3425    function group_get_group_name_int32_t(obj, idx) &
3426            result(SHT_rv)
3427        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T
3428        class(SidreGroup) :: obj
3429        integer(C_INT32_T), value, intent(IN) :: idx
3430        character(len=MAXNAMESIZE) :: SHT_rv
3431        ! splicer begin class.Group.method.get_group_name_int32_t
3432        call c_group_get_group_name_bufferify(obj%cxxmem, &
3433            int(idx, C_INT64_t), SHT_rv, len(SHT_rv, kind=C_INT))
3434        ! splicer end class.Group.method.get_group_name_int32_t
3435    end function group_get_group_name_int32_t
3436
3437    function group_get_group_name_int64_t(obj, idx) &
3438            result(SHT_rv)
3439        use iso_c_binding, only : C_INT, C_INT64_T
3440        class(SidreGroup) :: obj
3441        integer(C_INT64_T), value, intent(IN) :: idx
3442        character(len=MAXNAMESIZE) :: SHT_rv
3443        ! splicer begin class.Group.method.get_group_name_int64_t
3444        call c_group_get_group_name_bufferify(obj%cxxmem, &
3445            int(idx, C_INT64_t), SHT_rv, len(SHT_rv, kind=C_INT))
3446        ! splicer end class.Group.method.get_group_name_int64_t
3447    end function group_get_group_name_int64_t
3448
3449    function group_get_group_from_name(obj, path) &
3450            result(SHT_rv)
3451        use iso_c_binding, only : C_INT, C_PTR
3452        class(SidreGroup) :: obj
3453        character(len=*), intent(IN) :: path
3454        type(SidreGroup) :: SHT_rv
3455        ! splicer begin class.Group.method.get_group_from_name
3456        type(C_PTR) :: SHT_prv
3457        SHT_prv = c_group_get_group_from_name_bufferify(obj%cxxmem, &
3458            path, len_trim(path, kind=C_INT), SHT_rv%cxxmem)
3459        ! splicer end class.Group.method.get_group_from_name
3460    end function group_get_group_from_name
3461
3462    function group_get_group_from_index_int32_t(obj, idx) &
3463            result(SHT_rv)
3464        use iso_c_binding, only : C_INT32_T, C_INT64_T, C_PTR
3465        class(SidreGroup) :: obj
3466        integer(C_INT32_T), value, intent(IN) :: idx
3467        type(SidreGroup) :: SHT_rv
3468        ! splicer begin class.Group.method.get_group_from_index_int32_t
3469        type(C_PTR) :: SHT_prv
3470        SHT_prv = c_group_get_group_from_index(obj%cxxmem, &
3471            int(idx, C_INT64_t), SHT_rv%cxxmem)
3472        ! splicer end class.Group.method.get_group_from_index_int32_t
3473    end function group_get_group_from_index_int32_t
3474
3475    function group_get_group_from_index_int64_t(obj, idx) &
3476            result(SHT_rv)
3477        use iso_c_binding, only : C_INT64_T, C_PTR
3478        class(SidreGroup) :: obj
3479        integer(C_INT64_T), value, intent(IN) :: idx
3480        type(SidreGroup) :: SHT_rv
3481        ! splicer begin class.Group.method.get_group_from_index_int64_t
3482        type(C_PTR) :: SHT_prv
3483        SHT_prv = c_group_get_group_from_index(obj%cxxmem, &
3484            int(idx, C_INT64_t), SHT_rv%cxxmem)
3485        ! splicer end class.Group.method.get_group_from_index_int64_t
3486    end function group_get_group_from_index_int64_t
3487
3488    function group_get_first_valid_group_index(obj) &
3489            result(SHT_rv)
3490        use iso_c_binding, only : C_INT64_T
3491        class(SidreGroup) :: obj
3492        integer(C_INT64_T) :: SHT_rv
3493        ! splicer begin class.Group.method.get_first_valid_group_index
3494        SHT_rv = c_group_get_first_valid_group_index(obj%cxxmem)
3495        ! splicer end class.Group.method.get_first_valid_group_index
3496    end function group_get_first_valid_group_index
3497
3498    function group_get_next_valid_group_index_int32_t(obj, idx) &
3499            result(SHT_rv)
3500        use iso_c_binding, only : C_INT32_T, C_INT64_T
3501        class(SidreGroup) :: obj
3502        integer(C_INT32_T), value, intent(IN) :: idx
3503        integer(C_INT64_T) :: SHT_rv
3504        ! splicer begin class.Group.method.get_next_valid_group_index_int32_t
3505        SHT_rv = c_group_get_next_valid_group_index(obj%cxxmem, &
3506            int(idx, C_INT64_t))
3507        ! splicer end class.Group.method.get_next_valid_group_index_int32_t
3508    end function group_get_next_valid_group_index_int32_t
3509
3510    function group_get_next_valid_group_index_int64_t(obj, idx) &
3511            result(SHT_rv)
3512        use iso_c_binding, only : C_INT64_T
3513        class(SidreGroup) :: obj
3514        integer(C_INT64_T), value, intent(IN) :: idx
3515        integer(C_INT64_T) :: SHT_rv
3516        ! splicer begin class.Group.method.get_next_valid_group_index_int64_t
3517        SHT_rv = c_group_get_next_valid_group_index(obj%cxxmem, &
3518            int(idx, C_INT64_t))
3519        ! splicer end class.Group.method.get_next_valid_group_index_int64_t
3520    end function group_get_next_valid_group_index_int64_t
3521
3522    function group_create_group(obj, path) &
3523            result(SHT_rv)
3524        use iso_c_binding, only : C_INT, C_PTR
3525        class(SidreGroup) :: obj
3526        character(len=*), intent(IN) :: path
3527        type(SidreGroup) :: SHT_rv
3528        ! splicer begin class.Group.method.create_group
3529        type(C_PTR) :: SHT_prv
3530        SHT_prv = c_group_create_group_bufferify(obj%cxxmem, path, &
3531            len_trim(path, kind=C_INT), SHT_rv%cxxmem)
3532        ! splicer end class.Group.method.create_group
3533    end function group_create_group
3534
3535    subroutine group_destroy_group_name(obj, path)
3536        use iso_c_binding, only : C_INT
3537        class(SidreGroup) :: obj
3538        character(len=*), intent(IN) :: path
3539        ! splicer begin class.Group.method.destroy_group_name
3540        call c_group_destroy_group_name_bufferify(obj%cxxmem, path, &
3541            len_trim(path, kind=C_INT))
3542        ! splicer end class.Group.method.destroy_group_name
3543    end subroutine group_destroy_group_name
3544
3545    subroutine group_destroy_group_index_int32_t(obj, idx)
3546        use iso_c_binding, only : C_INT32_T, C_INT64_T
3547        class(SidreGroup) :: obj
3548        integer(C_INT32_T), value, intent(IN) :: idx
3549        ! splicer begin class.Group.method.destroy_group_index_int32_t
3550        call c_group_destroy_group_index(obj%cxxmem, &
3551            int(idx, C_INT64_t))
3552        ! splicer end class.Group.method.destroy_group_index_int32_t
3553    end subroutine group_destroy_group_index_int32_t
3554
3555    subroutine group_destroy_group_index_int64_t(obj, idx)
3556        use iso_c_binding, only : C_INT64_T
3557        class(SidreGroup) :: obj
3558        integer(C_INT64_T), value, intent(IN) :: idx
3559        ! splicer begin class.Group.method.destroy_group_index_int64_t
3560        call c_group_destroy_group_index(obj%cxxmem, &
3561            int(idx, C_INT64_t))
3562        ! splicer end class.Group.method.destroy_group_index_int64_t
3563    end subroutine group_destroy_group_index_int64_t
3564
3565    function group_move_group(obj, grp) &
3566            result(SHT_rv)
3567        use iso_c_binding, only : C_PTR
3568        class(SidreGroup) :: obj
3569        type(SidreGroup), intent(INOUT) :: grp
3570        type(SidreGroup) :: SHT_rv
3571        ! splicer begin class.Group.method.move_group
3572        type(C_PTR) :: SHT_prv
3573        SHT_prv = c_group_move_group(obj%cxxmem, grp%cxxmem, &
3574            SHT_rv%cxxmem)
3575        ! splicer end class.Group.method.move_group
3576    end function group_move_group
3577
3578    subroutine group_print(obj)
3579        class(SidreGroup) :: obj
3580        ! splicer begin class.Group.method.print
3581        call c_group_print(obj%cxxmem)
3582        ! splicer end class.Group.method.print
3583    end subroutine group_print
3584
3585    function group_is_equivalent_to(obj, other) &
3586            result(SHT_rv)
3587        use iso_c_binding, only : C_BOOL
3588        class(SidreGroup) :: obj
3589        type(SidreGroup), intent(IN) :: other
3590        logical :: SHT_rv
3591        ! splicer begin class.Group.method.is_equivalent_to
3592        SHT_rv = c_group_is_equivalent_to(obj%cxxmem, other%cxxmem)
3593        ! splicer end class.Group.method.is_equivalent_to
3594    end function group_is_equivalent_to
3595
3596    subroutine group_save(obj, file_path, protocol)
3597        use iso_c_binding, only : C_INT
3598        class(SidreGroup) :: obj
3599        character(len=*), intent(IN) :: file_path
3600        character(len=*), intent(IN) :: protocol
3601        ! splicer begin class.Group.method.save
3602        call c_group_save_bufferify(obj%cxxmem, file_path, &
3603            len_trim(file_path, kind=C_INT), protocol, &
3604            len_trim(protocol, kind=C_INT))
3605        ! splicer end class.Group.method.save
3606    end subroutine group_save
3607
3608    subroutine group_load_0(obj, file_path, protocol)
3609        use iso_c_binding, only : C_INT
3610        class(SidreGroup) :: obj
3611        character(len=*), intent(IN) :: file_path
3612        character(len=*), intent(IN) :: protocol
3613        ! splicer begin class.Group.method.load_0
3614        call c_group_load_0_bufferify(obj%cxxmem, file_path, &
3615            len_trim(file_path, kind=C_INT), protocol, &
3616            len_trim(protocol, kind=C_INT))
3617        ! splicer end class.Group.method.load_0
3618    end subroutine group_load_0
3619
3620    subroutine group_load_1(obj, file_path, protocol, preserve_contents)
3621        use iso_c_binding, only : C_BOOL, C_INT
3622        class(SidreGroup) :: obj
3623        character(len=*), intent(IN) :: file_path
3624        character(len=*), intent(IN) :: protocol
3625        logical, value, intent(IN) :: preserve_contents
3626        ! splicer begin class.Group.method.load_1
3627        logical(C_BOOL) SH_preserve_contents
3628        SH_preserve_contents = preserve_contents  ! coerce to C_BOOL
3629        call c_group_load_1_bufferify(obj%cxxmem, file_path, &
3630            len_trim(file_path, kind=C_INT), protocol, &
3631            len_trim(protocol, kind=C_INT), SH_preserve_contents)
3632        ! splicer end class.Group.method.load_1
3633    end subroutine group_load_1
3634
3635    subroutine group_load_external_data(obj, file_path)
3636        use iso_c_binding, only : C_INT
3637        class(SidreGroup) :: obj
3638        character(len=*), intent(IN) :: file_path
3639        ! splicer begin class.Group.method.load_external_data
3640        call c_group_load_external_data_bufferify(obj%cxxmem, file_path, &
3641            len_trim(file_path, kind=C_INT))
3642        ! splicer end class.Group.method.load_external_data
3643    end subroutine group_load_external_data
3644
3645    function group_rename(obj, new_name) &
3646            result(SHT_rv)
3647        use iso_c_binding, only : C_BOOL, C_INT
3648        class(SidreGroup) :: obj
3649        character(len=*), intent(IN) :: new_name
3650        logical :: SHT_rv
3651        ! splicer begin class.Group.method.rename
3652        SHT_rv = c_group_rename_bufferify(obj%cxxmem, new_name, &
3653            len_trim(new_name, kind=C_INT))
3654        ! splicer end class.Group.method.rename
3655    end function group_rename
3656
3657    ! Return pointer to C++ memory.
3658    function group_get_instance(obj) result (cxxptr)
3659        use iso_c_binding, only: C_PTR
3660        class(SidreGroup), intent(IN) :: obj
3661        type(C_PTR) :: cxxptr
3662        cxxptr = obj%cxxmem%addr
3663    end function group_get_instance
3664
3665    subroutine group_set_instance(obj, cxxmem)
3666        use iso_c_binding, only: C_PTR
3667        class(SidreGroup), intent(INOUT) :: obj
3668        type(C_PTR), intent(IN) :: cxxmem
3669        obj%cxxmem%addr = cxxmem
3670        obj%cxxmem%idtor = 0
3671    end subroutine group_set_instance
3672
3673    function group_associated(obj) result (rv)
3674        use iso_c_binding, only: c_associated
3675        class(SidreGroup), intent(IN) :: obj
3676        logical rv
3677        rv = c_associated(obj%cxxmem%addr)
3678    end function group_associated
3679
3680    ! splicer begin class.Group.additional_functions
3681
3682    ! Generated by genfsidresplicer.py
3683    subroutine group_get_scalar_int(grp, name, value)
3684        use iso_c_binding
3685        class(SidreGroup), intent(IN) :: grp
3686        character(*), intent(IN) :: name
3687        integer(C_INT), intent(OUT) :: value
3688        integer(C_INT) :: lname
3689        type(SIDRE_SHROUD_view_capsule) view
3690        type(C_PTR) viewptr
3691
3692        lname = len_trim(name)
3693        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3694        value = c_view_get_data_int(view)
3695    end subroutine group_get_scalar_int
3696
3697    ! Generated by genfsidresplicer.py
3698    subroutine group_get_scalar_long(grp, name, value)
3699        use iso_c_binding
3700        class(SidreGroup), intent(IN) :: grp
3701        character(*), intent(IN) :: name
3702        integer(C_LONG), intent(OUT) :: value
3703        integer(C_INT) :: lname
3704        type(SIDRE_SHROUD_view_capsule) view
3705        type(C_PTR) viewptr
3706
3707        lname = len_trim(name)
3708        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3709        value = c_view_get_data_long(view)
3710    end subroutine group_get_scalar_long
3711
3712    ! Generated by genfsidresplicer.py
3713    subroutine group_get_scalar_float(grp, name, value)
3714        use iso_c_binding
3715        class(SidreGroup), intent(IN) :: grp
3716        character(*), intent(IN) :: name
3717        real(C_FLOAT), intent(OUT) :: value
3718        integer(C_INT) :: lname
3719        type(SIDRE_SHROUD_view_capsule) view
3720        type(C_PTR) viewptr
3721
3722        lname = len_trim(name)
3723        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3724        value = c_view_get_data_float(view)
3725    end subroutine group_get_scalar_float
3726
3727    ! Generated by genfsidresplicer.py
3728    subroutine group_get_scalar_double(grp, name, value)
3729        use iso_c_binding
3730        class(SidreGroup), intent(IN) :: grp
3731        character(*), intent(IN) :: name
3732        real(C_DOUBLE), intent(OUT) :: value
3733        integer(C_INT) :: lname
3734        type(SIDRE_SHROUD_view_capsule) view
3735        type(C_PTR) viewptr
3736
3737        lname = len_trim(name)
3738        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3739        value = c_view_get_data_double(view)
3740    end subroutine group_get_scalar_double
3741
3742    ! Generated by genfsidresplicer.py
3743    subroutine group_set_scalar_int(grp, name, value)
3744        use iso_c_binding
3745        class(SidreGroup), intent(IN) :: grp
3746        character(*), intent(IN) :: name
3747        integer(C_INT), intent(IN) :: value
3748        integer(C_INT) :: lname
3749        type(SIDRE_SHROUD_view_capsule) view
3750        type(C_PTR) viewptr
3751
3752        lname = len_trim(name)
3753        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3754        call c_view_set_scalar_int(view, value)
3755    end subroutine group_set_scalar_int
3756
3757    ! Generated by genfsidresplicer.py
3758    subroutine group_set_scalar_long(grp, name, value)
3759        use iso_c_binding
3760        class(SidreGroup), intent(IN) :: grp
3761        character(*), intent(IN) :: name
3762        integer(C_LONG), intent(IN) :: value
3763        integer(C_INT) :: lname
3764        type(SIDRE_SHROUD_view_capsule) view
3765        type(C_PTR) viewptr
3766
3767        lname = len_trim(name)
3768        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3769        call c_view_set_scalar_long(view, value)
3770    end subroutine group_set_scalar_long
3771
3772    ! Generated by genfsidresplicer.py
3773    subroutine group_set_scalar_float(grp, name, value)
3774        use iso_c_binding
3775        class(SidreGroup), intent(IN) :: grp
3776        character(*), intent(IN) :: name
3777        real(C_FLOAT), intent(IN) :: value
3778        integer(C_INT) :: lname
3779        type(SIDRE_SHROUD_view_capsule) view
3780        type(C_PTR) viewptr
3781
3782        lname = len_trim(name)
3783        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3784        call c_view_set_scalar_float(view, value)
3785    end subroutine group_set_scalar_float
3786
3787    ! Generated by genfsidresplicer.py
3788    subroutine group_set_scalar_double(grp, name, value)
3789        use iso_c_binding
3790        class(SidreGroup), intent(IN) :: grp
3791        character(*), intent(IN) :: name
3792        real(C_DOUBLE), intent(IN) :: value
3793        integer(C_INT) :: lname
3794        type(SIDRE_SHROUD_view_capsule) view
3795        type(C_PTR) viewptr
3796
3797        lname = len_trim(name)
3798        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
3799        call c_view_set_scalar_double(view, value)
3800    end subroutine group_set_scalar_double
3801
3802    ! Generated by genfsidresplicer.py
3803    function group_create_array_view_int_scalar(grp, name, value) result(rv)
3804        use iso_c_binding
3805        implicit none
3806
3807        class(SidreGroup), intent(IN) :: grp
3808        character(*), intent(IN) :: name
3809        integer(C_INT), target, intent(IN) :: value
3810        integer(C_INT) :: lname
3811        type(SidreView) :: rv
3812        integer(SIDRE_IndexType) :: extents(1)
3813        integer(C_INT), parameter :: type = SIDRE_INT_ID
3814        type(C_PTR) addr, viewptr
3815
3816        lname = len_trim(name)
3817#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3818        addr = c_loc(value)
3819#else
3820        call SIDRE_C_LOC(value, addr)
3821#endif
3822        extents(1) = 1_SIDRE_IndexType
3823        viewptr = c_group_create_view_external_bufferify( &
3824            grp%cxxmem, name, lname, addr, rv%cxxmem)
3825        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
3826    end function group_create_array_view_int_scalar
3827
3828    ! Generated by genfsidresplicer.py
3829    function group_create_array_view_int_1d(grp, name, value) result(rv)
3830        use iso_c_binding
3831        implicit none
3832
3833        class(SidreGroup), intent(IN) :: grp
3834        character(*), intent(IN) :: name
3835        integer(C_INT), target, intent(IN) :: value(:)
3836        integer(C_INT) :: lname
3837        type(SidreView) :: rv
3838        integer(SIDRE_IndexType) :: extents(1)
3839        integer(C_INT), parameter :: type = SIDRE_INT_ID
3840        type(C_PTR) addr, viewptr
3841
3842        lname = len_trim(name)
3843#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3844        addr = c_loc(value)
3845#else
3846        call SIDRE_C_LOC(value(lbound(value,1)), addr)
3847#endif
3848        extents = shape(value, kind=SIDRE_IndexType)
3849        viewptr = c_group_create_view_external_bufferify( &
3850            grp%cxxmem, name, lname, addr, rv%cxxmem)
3851        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
3852    end function group_create_array_view_int_1d
3853
3854    ! Generated by genfsidresplicer.py
3855    function group_create_array_view_int_2d(grp, name, value) result(rv)
3856        use iso_c_binding
3857        implicit none
3858
3859        class(SidreGroup), intent(IN) :: grp
3860        character(*), intent(IN) :: name
3861        integer(C_INT), target, intent(IN) :: value(:,:)
3862        integer(C_INT) :: lname
3863        type(SidreView) :: rv
3864        integer(SIDRE_IndexType) :: extents(2)
3865        integer(C_INT), parameter :: type = SIDRE_INT_ID
3866        type(C_PTR) addr, viewptr
3867
3868        lname = len_trim(name)
3869#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3870        addr = c_loc(value)
3871#else
3872        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
3873#endif
3874        extents = shape(value, kind=SIDRE_IndexType)
3875        viewptr = c_group_create_view_external_bufferify( &
3876            grp%cxxmem, name, lname, addr, rv%cxxmem)
3877        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
3878    end function group_create_array_view_int_2d
3879
3880    ! Generated by genfsidresplicer.py
3881    function group_create_array_view_int_3d(grp, name, value) result(rv)
3882        use iso_c_binding
3883        implicit none
3884
3885        class(SidreGroup), intent(IN) :: grp
3886        character(*), intent(IN) :: name
3887        integer(C_INT), target, intent(IN) :: value(:,:,:)
3888        integer(C_INT) :: lname
3889        type(SidreView) :: rv
3890        integer(SIDRE_IndexType) :: extents(3)
3891        integer(C_INT), parameter :: type = SIDRE_INT_ID
3892        type(C_PTR) addr, viewptr
3893
3894        lname = len_trim(name)
3895#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3896        addr = c_loc(value)
3897#else
3898        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
3899#endif
3900        extents = shape(value, kind=SIDRE_IndexType)
3901        viewptr = c_group_create_view_external_bufferify( &
3902            grp%cxxmem, name, lname, addr, rv%cxxmem)
3903        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
3904    end function group_create_array_view_int_3d
3905
3906    ! Generated by genfsidresplicer.py
3907    function group_create_array_view_int_4d(grp, name, value) result(rv)
3908        use iso_c_binding
3909        implicit none
3910
3911        class(SidreGroup), intent(IN) :: grp
3912        character(*), intent(IN) :: name
3913        integer(C_INT), target, intent(IN) :: value(:,:,:,:)
3914        integer(C_INT) :: lname
3915        type(SidreView) :: rv
3916        integer(SIDRE_IndexType) :: extents(4)
3917        integer(C_INT), parameter :: type = SIDRE_INT_ID
3918        type(C_PTR) addr, viewptr
3919
3920        lname = len_trim(name)
3921#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3922        addr = c_loc(value)
3923#else
3924        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
3925#endif
3926        extents = shape(value, kind=SIDRE_IndexType)
3927        viewptr = c_group_create_view_external_bufferify( &
3928            grp%cxxmem, name, lname, addr, rv%cxxmem)
3929        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
3930    end function group_create_array_view_int_4d
3931
3932    ! Generated by genfsidresplicer.py
3933    function group_create_array_view_long_scalar(grp, name, value) result(rv)
3934        use iso_c_binding
3935        implicit none
3936
3937        class(SidreGroup), intent(IN) :: grp
3938        character(*), intent(IN) :: name
3939        integer(C_LONG), target, intent(IN) :: value
3940        integer(C_INT) :: lname
3941        type(SidreView) :: rv
3942        integer(SIDRE_IndexType) :: extents(1)
3943        integer(C_INT), parameter :: type = SIDRE_LONG_ID
3944        type(C_PTR) addr, viewptr
3945
3946        lname = len_trim(name)
3947#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3948        addr = c_loc(value)
3949#else
3950        call SIDRE_C_LOC(value, addr)
3951#endif
3952        extents(1) = 1_SIDRE_IndexType
3953        viewptr = c_group_create_view_external_bufferify( &
3954            grp%cxxmem, name, lname, addr, rv%cxxmem)
3955        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
3956    end function group_create_array_view_long_scalar
3957
3958    ! Generated by genfsidresplicer.py
3959    function group_create_array_view_long_1d(grp, name, value) result(rv)
3960        use iso_c_binding
3961        implicit none
3962
3963        class(SidreGroup), intent(IN) :: grp
3964        character(*), intent(IN) :: name
3965        integer(C_LONG), target, intent(IN) :: value(:)
3966        integer(C_INT) :: lname
3967        type(SidreView) :: rv
3968        integer(SIDRE_IndexType) :: extents(1)
3969        integer(C_INT), parameter :: type = SIDRE_LONG_ID
3970        type(C_PTR) addr, viewptr
3971
3972        lname = len_trim(name)
3973#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
3974        addr = c_loc(value)
3975#else
3976        call SIDRE_C_LOC(value(lbound(value,1)), addr)
3977#endif
3978        extents = shape(value, kind=SIDRE_IndexType)
3979        viewptr = c_group_create_view_external_bufferify( &
3980            grp%cxxmem, name, lname, addr, rv%cxxmem)
3981        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
3982    end function group_create_array_view_long_1d
3983
3984    ! Generated by genfsidresplicer.py
3985    function group_create_array_view_long_2d(grp, name, value) result(rv)
3986        use iso_c_binding
3987        implicit none
3988
3989        class(SidreGroup), intent(IN) :: grp
3990        character(*), intent(IN) :: name
3991        integer(C_LONG), target, intent(IN) :: value(:,:)
3992        integer(C_INT) :: lname
3993        type(SidreView) :: rv
3994        integer(SIDRE_IndexType) :: extents(2)
3995        integer(C_INT), parameter :: type = SIDRE_LONG_ID
3996        type(C_PTR) addr, viewptr
3997
3998        lname = len_trim(name)
3999#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4000        addr = c_loc(value)
4001#else
4002        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4003#endif
4004        extents = shape(value, kind=SIDRE_IndexType)
4005        viewptr = c_group_create_view_external_bufferify( &
4006            grp%cxxmem, name, lname, addr, rv%cxxmem)
4007        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4008    end function group_create_array_view_long_2d
4009
4010    ! Generated by genfsidresplicer.py
4011    function group_create_array_view_long_3d(grp, name, value) result(rv)
4012        use iso_c_binding
4013        implicit none
4014
4015        class(SidreGroup), intent(IN) :: grp
4016        character(*), intent(IN) :: name
4017        integer(C_LONG), target, intent(IN) :: value(:,:,:)
4018        integer(C_INT) :: lname
4019        type(SidreView) :: rv
4020        integer(SIDRE_IndexType) :: extents(3)
4021        integer(C_INT), parameter :: type = SIDRE_LONG_ID
4022        type(C_PTR) addr, viewptr
4023
4024        lname = len_trim(name)
4025#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4026        addr = c_loc(value)
4027#else
4028        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4029#endif
4030        extents = shape(value, kind=SIDRE_IndexType)
4031        viewptr = c_group_create_view_external_bufferify( &
4032            grp%cxxmem, name, lname, addr, rv%cxxmem)
4033        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4034    end function group_create_array_view_long_3d
4035
4036    ! Generated by genfsidresplicer.py
4037    function group_create_array_view_long_4d(grp, name, value) result(rv)
4038        use iso_c_binding
4039        implicit none
4040
4041        class(SidreGroup), intent(IN) :: grp
4042        character(*), intent(IN) :: name
4043        integer(C_LONG), target, intent(IN) :: value(:,:,:,:)
4044        integer(C_INT) :: lname
4045        type(SidreView) :: rv
4046        integer(SIDRE_IndexType) :: extents(4)
4047        integer(C_INT), parameter :: type = SIDRE_LONG_ID
4048        type(C_PTR) addr, viewptr
4049
4050        lname = len_trim(name)
4051#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4052        addr = c_loc(value)
4053#else
4054        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4055#endif
4056        extents = shape(value, kind=SIDRE_IndexType)
4057        viewptr = c_group_create_view_external_bufferify( &
4058            grp%cxxmem, name, lname, addr, rv%cxxmem)
4059        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4060    end function group_create_array_view_long_4d
4061
4062    ! Generated by genfsidresplicer.py
4063    function group_create_array_view_float_scalar(grp, name, value) result(rv)
4064        use iso_c_binding
4065        implicit none
4066
4067        class(SidreGroup), intent(IN) :: grp
4068        character(*), intent(IN) :: name
4069        real(C_FLOAT), target, intent(IN) :: value
4070        integer(C_INT) :: lname
4071        type(SidreView) :: rv
4072        integer(SIDRE_IndexType) :: extents(1)
4073        integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4074        type(C_PTR) addr, viewptr
4075
4076        lname = len_trim(name)
4077#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4078        addr = c_loc(value)
4079#else
4080        call SIDRE_C_LOC(value, addr)
4081#endif
4082        extents(1) = 1_SIDRE_IndexType
4083        viewptr = c_group_create_view_external_bufferify( &
4084            grp%cxxmem, name, lname, addr, rv%cxxmem)
4085        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
4086    end function group_create_array_view_float_scalar
4087
4088    ! Generated by genfsidresplicer.py
4089    function group_create_array_view_float_1d(grp, name, value) result(rv)
4090        use iso_c_binding
4091        implicit none
4092
4093        class(SidreGroup), intent(IN) :: grp
4094        character(*), intent(IN) :: name
4095        real(C_FLOAT), target, intent(IN) :: value(:)
4096        integer(C_INT) :: lname
4097        type(SidreView) :: rv
4098        integer(SIDRE_IndexType) :: extents(1)
4099        integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4100        type(C_PTR) addr, viewptr
4101
4102        lname = len_trim(name)
4103#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4104        addr = c_loc(value)
4105#else
4106        call SIDRE_C_LOC(value(lbound(value,1)), addr)
4107#endif
4108        extents = shape(value, kind=SIDRE_IndexType)
4109        viewptr = c_group_create_view_external_bufferify( &
4110            grp%cxxmem, name, lname, addr, rv%cxxmem)
4111        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
4112    end function group_create_array_view_float_1d
4113
4114    ! Generated by genfsidresplicer.py
4115    function group_create_array_view_float_2d(grp, name, value) result(rv)
4116        use iso_c_binding
4117        implicit none
4118
4119        class(SidreGroup), intent(IN) :: grp
4120        character(*), intent(IN) :: name
4121        real(C_FLOAT), target, intent(IN) :: value(:,:)
4122        integer(C_INT) :: lname
4123        type(SidreView) :: rv
4124        integer(SIDRE_IndexType) :: extents(2)
4125        integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4126        type(C_PTR) addr, viewptr
4127
4128        lname = len_trim(name)
4129#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4130        addr = c_loc(value)
4131#else
4132        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4133#endif
4134        extents = shape(value, kind=SIDRE_IndexType)
4135        viewptr = c_group_create_view_external_bufferify( &
4136            grp%cxxmem, name, lname, addr, rv%cxxmem)
4137        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4138    end function group_create_array_view_float_2d
4139
4140    ! Generated by genfsidresplicer.py
4141    function group_create_array_view_float_3d(grp, name, value) result(rv)
4142        use iso_c_binding
4143        implicit none
4144
4145        class(SidreGroup), intent(IN) :: grp
4146        character(*), intent(IN) :: name
4147        real(C_FLOAT), target, intent(IN) :: value(:,:,:)
4148        integer(C_INT) :: lname
4149        type(SidreView) :: rv
4150        integer(SIDRE_IndexType) :: extents(3)
4151        integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4152        type(C_PTR) addr, viewptr
4153
4154        lname = len_trim(name)
4155#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4156        addr = c_loc(value)
4157#else
4158        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4159#endif
4160        extents = shape(value, kind=SIDRE_IndexType)
4161        viewptr = c_group_create_view_external_bufferify( &
4162            grp%cxxmem, name, lname, addr, rv%cxxmem)
4163        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4164    end function group_create_array_view_float_3d
4165
4166    ! Generated by genfsidresplicer.py
4167    function group_create_array_view_float_4d(grp, name, value) result(rv)
4168        use iso_c_binding
4169        implicit none
4170
4171        class(SidreGroup), intent(IN) :: grp
4172        character(*), intent(IN) :: name
4173        real(C_FLOAT), target, intent(IN) :: value(:,:,:,:)
4174        integer(C_INT) :: lname
4175        type(SidreView) :: rv
4176        integer(SIDRE_IndexType) :: extents(4)
4177        integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4178        type(C_PTR) addr, viewptr
4179
4180        lname = len_trim(name)
4181#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4182        addr = c_loc(value)
4183#else
4184        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4185#endif
4186        extents = shape(value, kind=SIDRE_IndexType)
4187        viewptr = c_group_create_view_external_bufferify( &
4188            grp%cxxmem, name, lname, addr, rv%cxxmem)
4189        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4190    end function group_create_array_view_float_4d
4191
4192    ! Generated by genfsidresplicer.py
4193    function group_create_array_view_double_scalar(grp, name, value) result(rv)
4194        use iso_c_binding
4195        implicit none
4196
4197        class(SidreGroup), intent(IN) :: grp
4198        character(*), intent(IN) :: name
4199        real(C_DOUBLE), target, intent(IN) :: value
4200        integer(C_INT) :: lname
4201        type(SidreView) :: rv
4202        integer(SIDRE_IndexType) :: extents(1)
4203        integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4204        type(C_PTR) addr, viewptr
4205
4206        lname = len_trim(name)
4207#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4208        addr = c_loc(value)
4209#else
4210        call SIDRE_C_LOC(value, addr)
4211#endif
4212        extents(1) = 1_SIDRE_IndexType
4213        viewptr = c_group_create_view_external_bufferify( &
4214            grp%cxxmem, name, lname, addr, rv%cxxmem)
4215        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
4216    end function group_create_array_view_double_scalar
4217
4218    ! Generated by genfsidresplicer.py
4219    function group_create_array_view_double_1d(grp, name, value) result(rv)
4220        use iso_c_binding
4221        implicit none
4222
4223        class(SidreGroup), intent(IN) :: grp
4224        character(*), intent(IN) :: name
4225        real(C_DOUBLE), target, intent(IN) :: value(:)
4226        integer(C_INT) :: lname
4227        type(SidreView) :: rv
4228        integer(SIDRE_IndexType) :: extents(1)
4229        integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4230        type(C_PTR) addr, viewptr
4231
4232        lname = len_trim(name)
4233#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4234        addr = c_loc(value)
4235#else
4236        call SIDRE_C_LOC(value(lbound(value,1)), addr)
4237#endif
4238        extents = shape(value, kind=SIDRE_IndexType)
4239        viewptr = c_group_create_view_external_bufferify( &
4240            grp%cxxmem, name, lname, addr, rv%cxxmem)
4241        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
4242    end function group_create_array_view_double_1d
4243
4244    ! Generated by genfsidresplicer.py
4245    function group_create_array_view_double_2d(grp, name, value) result(rv)
4246        use iso_c_binding
4247        implicit none
4248
4249        class(SidreGroup), intent(IN) :: grp
4250        character(*), intent(IN) :: name
4251        real(C_DOUBLE), target, intent(IN) :: value(:,:)
4252        integer(C_INT) :: lname
4253        type(SidreView) :: rv
4254        integer(SIDRE_IndexType) :: extents(2)
4255        integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4256        type(C_PTR) addr, viewptr
4257
4258        lname = len_trim(name)
4259#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4260        addr = c_loc(value)
4261#else
4262        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4263#endif
4264        extents = shape(value, kind=SIDRE_IndexType)
4265        viewptr = c_group_create_view_external_bufferify( &
4266            grp%cxxmem, name, lname, addr, rv%cxxmem)
4267        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4268    end function group_create_array_view_double_2d
4269
4270    ! Generated by genfsidresplicer.py
4271    function group_create_array_view_double_3d(grp, name, value) result(rv)
4272        use iso_c_binding
4273        implicit none
4274
4275        class(SidreGroup), intent(IN) :: grp
4276        character(*), intent(IN) :: name
4277        real(C_DOUBLE), target, intent(IN) :: value(:,:,:)
4278        integer(C_INT) :: lname
4279        type(SidreView) :: rv
4280        integer(SIDRE_IndexType) :: extents(3)
4281        integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4282        type(C_PTR) addr, viewptr
4283
4284        lname = len_trim(name)
4285#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4286        addr = c_loc(value)
4287#else
4288        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4289#endif
4290        extents = shape(value, kind=SIDRE_IndexType)
4291        viewptr = c_group_create_view_external_bufferify( &
4292            grp%cxxmem, name, lname, addr, rv%cxxmem)
4293        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4294    end function group_create_array_view_double_3d
4295
4296    ! Generated by genfsidresplicer.py
4297    function group_create_array_view_double_4d(grp, name, value) result(rv)
4298        use iso_c_binding
4299        implicit none
4300
4301        class(SidreGroup), intent(IN) :: grp
4302        character(*), intent(IN) :: name
4303        real(C_DOUBLE), target, intent(IN) :: value(:,:,:,:)
4304        integer(C_INT) :: lname
4305        type(SidreView) :: rv
4306        integer(SIDRE_IndexType) :: extents(4)
4307        integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4308        type(C_PTR) addr, viewptr
4309
4310        lname = len_trim(name)
4311#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4312        addr = c_loc(value)
4313#else
4314        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4315#endif
4316        extents = shape(value, kind=SIDRE_IndexType)
4317        viewptr = c_group_create_view_external_bufferify( &
4318            grp%cxxmem, name, lname, addr, rv%cxxmem)
4319        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4320    end function group_create_array_view_double_4d
4321
4322    ! Generated by genfsidresplicer.py
4323    ! This function does nothing if view name does not exist in group.
4324    subroutine group_set_array_data_ptr_int_scalar(grp, name, value)
4325        use iso_c_binding
4326        implicit none
4327
4328        class(SidreGroup), intent(IN) :: grp
4329        character(len=*), intent(IN) :: name
4330        integer(C_INT), target, intent(IN) :: value
4331        integer(C_INT) :: lname
4332        type(SIDRE_SHROUD_view_capsule) view
4333    !    integer(SIDRE_IndexType) :: extents(1)
4334    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
4335        type(C_PTR) addr, viewptr
4336
4337        lname = len_trim(name)
4338    !    extents(1) = 1_SIDRE_IndexType
4339        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4340        if (c_associated(view%addr)) then
4341#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4342            addr = c_loc(value)
4343#else
4344            call SIDRE_C_LOC(value, addr)
4345#endif
4346            call c_view_set_external_data_ptr_only(view, addr)
4347    !        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
4348        endif
4349    end subroutine group_set_array_data_ptr_int_scalar
4350
4351    ! Generated by genfsidresplicer.py
4352    ! This function does nothing if view name does not exist in group.
4353    subroutine group_set_array_data_ptr_int_1d(grp, name, value)
4354        use iso_c_binding
4355        implicit none
4356
4357        class(SidreGroup), intent(IN) :: grp
4358        character(len=*), intent(IN) :: name
4359        integer(C_INT), target, intent(IN) :: value(:)
4360        integer(C_INT) :: lname
4361        type(SIDRE_SHROUD_view_capsule) view
4362    !    integer(SIDRE_IndexType) :: extents(1)
4363    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
4364        type(C_PTR) addr, viewptr
4365
4366        lname = len_trim(name)
4367    !    extents = shape(value, kind=SIDRE_IndexType)
4368        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4369        if (c_associated(view%addr)) then
4370#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4371            addr = c_loc(value)
4372#else
4373            call SIDRE_C_LOC(value(lbound(value,1)), addr)
4374#endif
4375            call c_view_set_external_data_ptr_only(view, addr)
4376    !        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
4377        endif
4378    end subroutine group_set_array_data_ptr_int_1d
4379
4380    ! Generated by genfsidresplicer.py
4381    ! This function does nothing if view name does not exist in group.
4382    subroutine group_set_array_data_ptr_int_2d(grp, name, value)
4383        use iso_c_binding
4384        implicit none
4385
4386        class(SidreGroup), intent(IN) :: grp
4387        character(len=*), intent(IN) :: name
4388        integer(C_INT), target, intent(IN) :: value(:,:)
4389        integer(C_INT) :: lname
4390        type(SIDRE_SHROUD_view_capsule) view
4391    !    integer(SIDRE_IndexType) :: extents(2)
4392    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
4393        type(C_PTR) addr, viewptr
4394
4395        lname = len_trim(name)
4396    !    extents = shape(value, kind=SIDRE_IndexType)
4397        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4398        if (c_associated(view%addr)) then
4399#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4400            addr = c_loc(value)
4401#else
4402            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4403#endif
4404            call c_view_set_external_data_ptr_only(view, addr)
4405    !        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4406        endif
4407    end subroutine group_set_array_data_ptr_int_2d
4408
4409    ! Generated by genfsidresplicer.py
4410    ! This function does nothing if view name does not exist in group.
4411    subroutine group_set_array_data_ptr_int_3d(grp, name, value)
4412        use iso_c_binding
4413        implicit none
4414
4415        class(SidreGroup), intent(IN) :: grp
4416        character(len=*), intent(IN) :: name
4417        integer(C_INT), target, intent(IN) :: value(:,:,:)
4418        integer(C_INT) :: lname
4419        type(SIDRE_SHROUD_view_capsule) view
4420    !    integer(SIDRE_IndexType) :: extents(3)
4421    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
4422        type(C_PTR) addr, viewptr
4423
4424        lname = len_trim(name)
4425    !    extents = shape(value, kind=SIDRE_IndexType)
4426        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4427        if (c_associated(view%addr)) then
4428#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4429            addr = c_loc(value)
4430#else
4431            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4432#endif
4433            call c_view_set_external_data_ptr_only(view, addr)
4434    !        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4435        endif
4436    end subroutine group_set_array_data_ptr_int_3d
4437
4438    ! Generated by genfsidresplicer.py
4439    ! This function does nothing if view name does not exist in group.
4440    subroutine group_set_array_data_ptr_int_4d(grp, name, value)
4441        use iso_c_binding
4442        implicit none
4443
4444        class(SidreGroup), intent(IN) :: grp
4445        character(len=*), intent(IN) :: name
4446        integer(C_INT), target, intent(IN) :: value(:,:,:,:)
4447        integer(C_INT) :: lname
4448        type(SIDRE_SHROUD_view_capsule) view
4449    !    integer(SIDRE_IndexType) :: extents(4)
4450    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
4451        type(C_PTR) addr, viewptr
4452
4453        lname = len_trim(name)
4454    !    extents = shape(value, kind=SIDRE_IndexType)
4455        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4456        if (c_associated(view%addr)) then
4457#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4458            addr = c_loc(value)
4459#else
4460            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4461#endif
4462            call c_view_set_external_data_ptr_only(view, addr)
4463    !        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4464        endif
4465    end subroutine group_set_array_data_ptr_int_4d
4466
4467    ! Generated by genfsidresplicer.py
4468    ! This function does nothing if view name does not exist in group.
4469    subroutine group_set_array_data_ptr_long_scalar(grp, name, value)
4470        use iso_c_binding
4471        implicit none
4472
4473        class(SidreGroup), intent(IN) :: grp
4474        character(len=*), intent(IN) :: name
4475        integer(C_LONG), target, intent(IN) :: value
4476        integer(C_INT) :: lname
4477        type(SIDRE_SHROUD_view_capsule) view
4478    !    integer(SIDRE_IndexType) :: extents(1)
4479    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
4480        type(C_PTR) addr, viewptr
4481
4482        lname = len_trim(name)
4483    !    extents(1) = 1_SIDRE_IndexType
4484        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4485        if (c_associated(view%addr)) then
4486#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4487            addr = c_loc(value)
4488#else
4489            call SIDRE_C_LOC(value, addr)
4490#endif
4491            call c_view_set_external_data_ptr_only(view, addr)
4492    !        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
4493        endif
4494    end subroutine group_set_array_data_ptr_long_scalar
4495
4496    ! Generated by genfsidresplicer.py
4497    ! This function does nothing if view name does not exist in group.
4498    subroutine group_set_array_data_ptr_long_1d(grp, name, value)
4499        use iso_c_binding
4500        implicit none
4501
4502        class(SidreGroup), intent(IN) :: grp
4503        character(len=*), intent(IN) :: name
4504        integer(C_LONG), target, intent(IN) :: value(:)
4505        integer(C_INT) :: lname
4506        type(SIDRE_SHROUD_view_capsule) view
4507    !    integer(SIDRE_IndexType) :: extents(1)
4508    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
4509        type(C_PTR) addr, viewptr
4510
4511        lname = len_trim(name)
4512    !    extents = shape(value, kind=SIDRE_IndexType)
4513        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4514        if (c_associated(view%addr)) then
4515#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4516            addr = c_loc(value)
4517#else
4518            call SIDRE_C_LOC(value(lbound(value,1)), addr)
4519#endif
4520            call c_view_set_external_data_ptr_only(view, addr)
4521    !        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
4522        endif
4523    end subroutine group_set_array_data_ptr_long_1d
4524
4525    ! Generated by genfsidresplicer.py
4526    ! This function does nothing if view name does not exist in group.
4527    subroutine group_set_array_data_ptr_long_2d(grp, name, value)
4528        use iso_c_binding
4529        implicit none
4530
4531        class(SidreGroup), intent(IN) :: grp
4532        character(len=*), intent(IN) :: name
4533        integer(C_LONG), target, intent(IN) :: value(:,:)
4534        integer(C_INT) :: lname
4535        type(SIDRE_SHROUD_view_capsule) view
4536    !    integer(SIDRE_IndexType) :: extents(2)
4537    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
4538        type(C_PTR) addr, viewptr
4539
4540        lname = len_trim(name)
4541    !    extents = shape(value, kind=SIDRE_IndexType)
4542        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4543        if (c_associated(view%addr)) then
4544#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4545            addr = c_loc(value)
4546#else
4547            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4548#endif
4549            call c_view_set_external_data_ptr_only(view, addr)
4550    !        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4551        endif
4552    end subroutine group_set_array_data_ptr_long_2d
4553
4554    ! Generated by genfsidresplicer.py
4555    ! This function does nothing if view name does not exist in group.
4556    subroutine group_set_array_data_ptr_long_3d(grp, name, value)
4557        use iso_c_binding
4558        implicit none
4559
4560        class(SidreGroup), intent(IN) :: grp
4561        character(len=*), intent(IN) :: name
4562        integer(C_LONG), target, intent(IN) :: value(:,:,:)
4563        integer(C_INT) :: lname
4564        type(SIDRE_SHROUD_view_capsule) view
4565    !    integer(SIDRE_IndexType) :: extents(3)
4566    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
4567        type(C_PTR) addr, viewptr
4568
4569        lname = len_trim(name)
4570    !    extents = shape(value, kind=SIDRE_IndexType)
4571        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4572        if (c_associated(view%addr)) then
4573#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4574            addr = c_loc(value)
4575#else
4576            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4577#endif
4578            call c_view_set_external_data_ptr_only(view, addr)
4579    !        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4580        endif
4581    end subroutine group_set_array_data_ptr_long_3d
4582
4583    ! Generated by genfsidresplicer.py
4584    ! This function does nothing if view name does not exist in group.
4585    subroutine group_set_array_data_ptr_long_4d(grp, name, value)
4586        use iso_c_binding
4587        implicit none
4588
4589        class(SidreGroup), intent(IN) :: grp
4590        character(len=*), intent(IN) :: name
4591        integer(C_LONG), target, intent(IN) :: value(:,:,:,:)
4592        integer(C_INT) :: lname
4593        type(SIDRE_SHROUD_view_capsule) view
4594    !    integer(SIDRE_IndexType) :: extents(4)
4595    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
4596        type(C_PTR) addr, viewptr
4597
4598        lname = len_trim(name)
4599    !    extents = shape(value, kind=SIDRE_IndexType)
4600        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4601        if (c_associated(view%addr)) then
4602#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4603            addr = c_loc(value)
4604#else
4605            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4606#endif
4607            call c_view_set_external_data_ptr_only(view, addr)
4608    !        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4609        endif
4610    end subroutine group_set_array_data_ptr_long_4d
4611
4612    ! Generated by genfsidresplicer.py
4613    ! This function does nothing if view name does not exist in group.
4614    subroutine group_set_array_data_ptr_float_scalar(grp, name, value)
4615        use iso_c_binding
4616        implicit none
4617
4618        class(SidreGroup), intent(IN) :: grp
4619        character(len=*), intent(IN) :: name
4620        real(C_FLOAT), target, intent(IN) :: value
4621        integer(C_INT) :: lname
4622        type(SIDRE_SHROUD_view_capsule) view
4623    !    integer(SIDRE_IndexType) :: extents(1)
4624    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4625        type(C_PTR) addr, viewptr
4626
4627        lname = len_trim(name)
4628    !    extents(1) = 1_SIDRE_IndexType
4629        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4630        if (c_associated(view%addr)) then
4631#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4632            addr = c_loc(value)
4633#else
4634            call SIDRE_C_LOC(value, addr)
4635#endif
4636            call c_view_set_external_data_ptr_only(view, addr)
4637    !        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
4638        endif
4639    end subroutine group_set_array_data_ptr_float_scalar
4640
4641    ! Generated by genfsidresplicer.py
4642    ! This function does nothing if view name does not exist in group.
4643    subroutine group_set_array_data_ptr_float_1d(grp, name, value)
4644        use iso_c_binding
4645        implicit none
4646
4647        class(SidreGroup), intent(IN) :: grp
4648        character(len=*), intent(IN) :: name
4649        real(C_FLOAT), target, intent(IN) :: value(:)
4650        integer(C_INT) :: lname
4651        type(SIDRE_SHROUD_view_capsule) view
4652    !    integer(SIDRE_IndexType) :: extents(1)
4653    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4654        type(C_PTR) addr, viewptr
4655
4656        lname = len_trim(name)
4657    !    extents = shape(value, kind=SIDRE_IndexType)
4658        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4659        if (c_associated(view%addr)) then
4660#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4661            addr = c_loc(value)
4662#else
4663            call SIDRE_C_LOC(value(lbound(value,1)), addr)
4664#endif
4665            call c_view_set_external_data_ptr_only(view, addr)
4666    !        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
4667        endif
4668    end subroutine group_set_array_data_ptr_float_1d
4669
4670    ! Generated by genfsidresplicer.py
4671    ! This function does nothing if view name does not exist in group.
4672    subroutine group_set_array_data_ptr_float_2d(grp, name, value)
4673        use iso_c_binding
4674        implicit none
4675
4676        class(SidreGroup), intent(IN) :: grp
4677        character(len=*), intent(IN) :: name
4678        real(C_FLOAT), target, intent(IN) :: value(:,:)
4679        integer(C_INT) :: lname
4680        type(SIDRE_SHROUD_view_capsule) view
4681    !    integer(SIDRE_IndexType) :: extents(2)
4682    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4683        type(C_PTR) addr, viewptr
4684
4685        lname = len_trim(name)
4686    !    extents = shape(value, kind=SIDRE_IndexType)
4687        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4688        if (c_associated(view%addr)) then
4689#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4690            addr = c_loc(value)
4691#else
4692            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4693#endif
4694            call c_view_set_external_data_ptr_only(view, addr)
4695    !        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4696        endif
4697    end subroutine group_set_array_data_ptr_float_2d
4698
4699    ! Generated by genfsidresplicer.py
4700    ! This function does nothing if view name does not exist in group.
4701    subroutine group_set_array_data_ptr_float_3d(grp, name, value)
4702        use iso_c_binding
4703        implicit none
4704
4705        class(SidreGroup), intent(IN) :: grp
4706        character(len=*), intent(IN) :: name
4707        real(C_FLOAT), target, intent(IN) :: value(:,:,:)
4708        integer(C_INT) :: lname
4709        type(SIDRE_SHROUD_view_capsule) view
4710    !    integer(SIDRE_IndexType) :: extents(3)
4711    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4712        type(C_PTR) addr, viewptr
4713
4714        lname = len_trim(name)
4715    !    extents = shape(value, kind=SIDRE_IndexType)
4716        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4717        if (c_associated(view%addr)) then
4718#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4719            addr = c_loc(value)
4720#else
4721            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4722#endif
4723            call c_view_set_external_data_ptr_only(view, addr)
4724    !        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4725        endif
4726    end subroutine group_set_array_data_ptr_float_3d
4727
4728    ! Generated by genfsidresplicer.py
4729    ! This function does nothing if view name does not exist in group.
4730    subroutine group_set_array_data_ptr_float_4d(grp, name, value)
4731        use iso_c_binding
4732        implicit none
4733
4734        class(SidreGroup), intent(IN) :: grp
4735        character(len=*), intent(IN) :: name
4736        real(C_FLOAT), target, intent(IN) :: value(:,:,:,:)
4737        integer(C_INT) :: lname
4738        type(SIDRE_SHROUD_view_capsule) view
4739    !    integer(SIDRE_IndexType) :: extents(4)
4740    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
4741        type(C_PTR) addr, viewptr
4742
4743        lname = len_trim(name)
4744    !    extents = shape(value, kind=SIDRE_IndexType)
4745        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4746        if (c_associated(view%addr)) then
4747#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4748            addr = c_loc(value)
4749#else
4750            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4751#endif
4752            call c_view_set_external_data_ptr_only(view, addr)
4753    !        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4754        endif
4755    end subroutine group_set_array_data_ptr_float_4d
4756
4757    ! Generated by genfsidresplicer.py
4758    ! This function does nothing if view name does not exist in group.
4759    subroutine group_set_array_data_ptr_double_scalar(grp, name, value)
4760        use iso_c_binding
4761        implicit none
4762
4763        class(SidreGroup), intent(IN) :: grp
4764        character(len=*), intent(IN) :: name
4765        real(C_DOUBLE), target, intent(IN) :: value
4766        integer(C_INT) :: lname
4767        type(SIDRE_SHROUD_view_capsule) view
4768    !    integer(SIDRE_IndexType) :: extents(1)
4769    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4770        type(C_PTR) addr, viewptr
4771
4772        lname = len_trim(name)
4773    !    extents(1) = 1_SIDRE_IndexType
4774        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4775        if (c_associated(view%addr)) then
4776#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4777            addr = c_loc(value)
4778#else
4779            call SIDRE_C_LOC(value, addr)
4780#endif
4781            call c_view_set_external_data_ptr_only(view, addr)
4782    !        call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
4783        endif
4784    end subroutine group_set_array_data_ptr_double_scalar
4785
4786    ! Generated by genfsidresplicer.py
4787    ! This function does nothing if view name does not exist in group.
4788    subroutine group_set_array_data_ptr_double_1d(grp, name, value)
4789        use iso_c_binding
4790        implicit none
4791
4792        class(SidreGroup), intent(IN) :: grp
4793        character(len=*), intent(IN) :: name
4794        real(C_DOUBLE), target, intent(IN) :: value(:)
4795        integer(C_INT) :: lname
4796        type(SIDRE_SHROUD_view_capsule) view
4797    !    integer(SIDRE_IndexType) :: extents(1)
4798    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4799        type(C_PTR) addr, viewptr
4800
4801        lname = len_trim(name)
4802    !    extents = shape(value, kind=SIDRE_IndexType)
4803        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4804        if (c_associated(view%addr)) then
4805#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4806            addr = c_loc(value)
4807#else
4808            call SIDRE_C_LOC(value(lbound(value,1)), addr)
4809#endif
4810            call c_view_set_external_data_ptr_only(view, addr)
4811    !        call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
4812        endif
4813    end subroutine group_set_array_data_ptr_double_1d
4814
4815    ! Generated by genfsidresplicer.py
4816    ! This function does nothing if view name does not exist in group.
4817    subroutine group_set_array_data_ptr_double_2d(grp, name, value)
4818        use iso_c_binding
4819        implicit none
4820
4821        class(SidreGroup), intent(IN) :: grp
4822        character(len=*), intent(IN) :: name
4823        real(C_DOUBLE), target, intent(IN) :: value(:,:)
4824        integer(C_INT) :: lname
4825        type(SIDRE_SHROUD_view_capsule) view
4826    !    integer(SIDRE_IndexType) :: extents(2)
4827    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4828        type(C_PTR) addr, viewptr
4829
4830        lname = len_trim(name)
4831    !    extents = shape(value, kind=SIDRE_IndexType)
4832        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4833        if (c_associated(view%addr)) then
4834#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4835            addr = c_loc(value)
4836#else
4837            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
4838#endif
4839            call c_view_set_external_data_ptr_only(view, addr)
4840    !        call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
4841        endif
4842    end subroutine group_set_array_data_ptr_double_2d
4843
4844    ! Generated by genfsidresplicer.py
4845    ! This function does nothing if view name does not exist in group.
4846    subroutine group_set_array_data_ptr_double_3d(grp, name, value)
4847        use iso_c_binding
4848        implicit none
4849
4850        class(SidreGroup), intent(IN) :: grp
4851        character(len=*), intent(IN) :: name
4852        real(C_DOUBLE), target, intent(IN) :: value(:,:,:)
4853        integer(C_INT) :: lname
4854        type(SIDRE_SHROUD_view_capsule) view
4855    !    integer(SIDRE_IndexType) :: extents(3)
4856    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4857        type(C_PTR) addr, viewptr
4858
4859        lname = len_trim(name)
4860    !    extents = shape(value, kind=SIDRE_IndexType)
4861        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4862        if (c_associated(view%addr)) then
4863#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4864            addr = c_loc(value)
4865#else
4866            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
4867#endif
4868            call c_view_set_external_data_ptr_only(view, addr)
4869    !        call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
4870        endif
4871    end subroutine group_set_array_data_ptr_double_3d
4872
4873    ! Generated by genfsidresplicer.py
4874    ! This function does nothing if view name does not exist in group.
4875    subroutine group_set_array_data_ptr_double_4d(grp, name, value)
4876        use iso_c_binding
4877        implicit none
4878
4879        class(SidreGroup), intent(IN) :: grp
4880        character(len=*), intent(IN) :: name
4881        real(C_DOUBLE), target, intent(IN) :: value(:,:,:,:)
4882        integer(C_INT) :: lname
4883        type(SIDRE_SHROUD_view_capsule) view
4884    !    integer(SIDRE_IndexType) :: extents(4)
4885    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
4886        type(C_PTR) addr, viewptr
4887
4888        lname = len_trim(name)
4889    !    extents = shape(value, kind=SIDRE_IndexType)
4890        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4891        if (c_associated(view%addr)) then
4892#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
4893            addr = c_loc(value)
4894#else
4895            call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
4896#endif
4897            call c_view_set_external_data_ptr_only(view, addr)
4898    !        call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
4899        endif
4900    end subroutine group_set_array_data_ptr_double_4d
4901
4902    subroutine group_get_string(grp, name, value)
4903        use iso_c_binding
4904        class(SidreGroup), intent(IN) :: grp
4905        character(*), intent(IN) :: name
4906        character(*), intent(OUT) :: value
4907        integer(C_INT) :: lname
4908        type(SIDRE_SHROUD_view_capsule) view
4909        type(C_PTR) viewptr
4910
4911        lname = len_trim(name)
4912        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4913        call c_view_get_string_bufferify(view, value, len(value, kind=C_INT))
4914    end subroutine group_get_string
4915
4916    subroutine group_set_string(grp, name, value)
4917        use iso_c_binding
4918        class(SidreGroup), intent(IN) :: grp
4919        character(*), intent(IN) :: name
4920        character(*), intent(IN) :: value
4921        integer(C_INT) :: lname
4922        type(SIDRE_SHROUD_view_capsule) view
4923        type(C_PTR) viewptr
4924
4925        lname = len_trim(name)
4926        viewptr = c_group_get_view_from_name_bufferify(grp%cxxmem, name, lname, view)
4927        call c_view_set_string_bufferify(view, value, len_trim(value, kind=C_INT))
4928    end subroutine group_set_string
4929
4930    ! splicer end class.Group.additional_functions
4931
4932    function view_get_index(obj) &
4933            result(SHT_rv)
4934        use iso_c_binding, only : C_INT64_T
4935        class(SidreView) :: obj
4936        integer(C_INT64_T) :: SHT_rv
4937        ! splicer begin class.View.method.get_index
4938        SHT_rv = c_view_get_index(obj%cxxmem)
4939        ! splicer end class.View.method.get_index
4940    end function view_get_index
4941
4942    function view_get_name(obj) &
4943            result(SHT_rv)
4944        use iso_c_binding, only : C_INT
4945        class(SidreView) :: obj
4946        character(len=MAXNAMESIZE) :: SHT_rv
4947        ! splicer begin class.View.method.get_name
4948        call c_view_get_name_bufferify(obj%cxxmem, SHT_rv, &
4949            len(SHT_rv, kind=C_INT))
4950        ! splicer end class.View.method.get_name
4951    end function view_get_name
4952
4953    function view_get_path(obj) &
4954            result(SHT_rv)
4955        use iso_c_binding, only : C_INT
4956        class(SidreView) :: obj
4957        character(len=MAXNAMESIZE) :: SHT_rv
4958        ! splicer begin class.View.method.get_path
4959        call c_view_get_path_bufferify(obj%cxxmem, SHT_rv, &
4960            len(SHT_rv, kind=C_INT))
4961        ! splicer end class.View.method.get_path
4962    end function view_get_path
4963
4964    function view_get_path_name(obj) &
4965            result(SHT_rv)
4966        use iso_c_binding, only : C_INT
4967        class(SidreView) :: obj
4968        character(len=MAXNAMESIZE) :: SHT_rv
4969        ! splicer begin class.View.method.get_path_name
4970        call c_view_get_path_name_bufferify(obj%cxxmem, SHT_rv, &
4971            len(SHT_rv, kind=C_INT))
4972        ! splicer end class.View.method.get_path_name
4973    end function view_get_path_name
4974
4975    function view_get_owning_group(obj) &
4976            result(SHT_rv)
4977        use iso_c_binding, only : C_PTR
4978        class(SidreView) :: obj
4979        type(SidreGroup) :: SHT_rv
4980        ! splicer begin class.View.method.get_owning_group
4981        type(C_PTR) :: SHT_prv
4982        SHT_prv = c_view_get_owning_group(obj%cxxmem, SHT_rv%cxxmem)
4983        ! splicer end class.View.method.get_owning_group
4984    end function view_get_owning_group
4985
4986    function view_has_buffer(obj) &
4987            result(SHT_rv)
4988        use iso_c_binding, only : C_BOOL
4989        class(SidreView) :: obj
4990        logical :: SHT_rv
4991        ! splicer begin class.View.method.has_buffer
4992        SHT_rv = c_view_has_buffer(obj%cxxmem)
4993        ! splicer end class.View.method.has_buffer
4994    end function view_has_buffer
4995
4996    function view_get_buffer(obj) &
4997            result(SHT_rv)
4998        use iso_c_binding, only : C_PTR
4999        class(SidreView) :: obj
5000        type(SidreBuffer) :: SHT_rv
5001        ! splicer begin class.View.method.get_buffer
5002        type(C_PTR) :: SHT_prv
5003        SHT_prv = c_view_get_buffer(obj%cxxmem, SHT_rv%cxxmem)
5004        ! splicer end class.View.method.get_buffer
5005    end function view_get_buffer
5006
5007    function view_is_external(obj) &
5008            result(SHT_rv)
5009        use iso_c_binding, only : C_BOOL
5010        class(SidreView) :: obj
5011        logical :: SHT_rv
5012        ! splicer begin class.View.method.is_external
5013        SHT_rv = c_view_is_external(obj%cxxmem)
5014        ! splicer end class.View.method.is_external
5015    end function view_is_external
5016
5017    function view_is_allocated(obj) &
5018            result(SHT_rv)
5019        use iso_c_binding, only : C_BOOL
5020        class(SidreView) :: obj
5021        logical :: SHT_rv
5022        ! splicer begin class.View.method.is_allocated
5023        SHT_rv = c_view_is_allocated(obj%cxxmem)
5024        ! splicer end class.View.method.is_allocated
5025    end function view_is_allocated
5026
5027    function view_is_applied(obj) &
5028            result(SHT_rv)
5029        use iso_c_binding, only : C_BOOL
5030        class(SidreView) :: obj
5031        logical :: SHT_rv
5032        ! splicer begin class.View.method.is_applied
5033        SHT_rv = c_view_is_applied(obj%cxxmem)
5034        ! splicer end class.View.method.is_applied
5035    end function view_is_applied
5036
5037    function view_is_described(obj) &
5038            result(SHT_rv)
5039        use iso_c_binding, only : C_BOOL
5040        class(SidreView) :: obj
5041        logical :: SHT_rv
5042        ! splicer begin class.View.method.is_described
5043        SHT_rv = c_view_is_described(obj%cxxmem)
5044        ! splicer end class.View.method.is_described
5045    end function view_is_described
5046
5047    function view_is_empty(obj) &
5048            result(SHT_rv)
5049        use iso_c_binding, only : C_BOOL
5050        class(SidreView) :: obj
5051        logical :: SHT_rv
5052        ! splicer begin class.View.method.is_empty
5053        SHT_rv = c_view_is_empty(obj%cxxmem)
5054        ! splicer end class.View.method.is_empty
5055    end function view_is_empty
5056
5057    function view_is_opaque(obj) &
5058            result(SHT_rv)
5059        use iso_c_binding, only : C_BOOL
5060        class(SidreView) :: obj
5061        logical :: SHT_rv
5062        ! splicer begin class.View.method.is_opaque
5063        SHT_rv = c_view_is_opaque(obj%cxxmem)
5064        ! splicer end class.View.method.is_opaque
5065    end function view_is_opaque
5066
5067    function view_is_scalar(obj) &
5068            result(SHT_rv)
5069        use iso_c_binding, only : C_BOOL
5070        class(SidreView) :: obj
5071        logical :: SHT_rv
5072        ! splicer begin class.View.method.is_scalar
5073        SHT_rv = c_view_is_scalar(obj%cxxmem)
5074        ! splicer end class.View.method.is_scalar
5075    end function view_is_scalar
5076
5077    function view_is_string(obj) &
5078            result(SHT_rv)
5079        use iso_c_binding, only : C_BOOL
5080        class(SidreView) :: obj
5081        logical :: SHT_rv
5082        ! splicer begin class.View.method.is_string
5083        SHT_rv = c_view_is_string(obj%cxxmem)
5084        ! splicer end class.View.method.is_string
5085    end function view_is_string
5086
5087    function view_get_type_id(obj) &
5088            result(SHT_rv)
5089        use iso_c_binding, only : C_INT
5090        class(SidreView) :: obj
5091        integer(C_INT) :: SHT_rv
5092        ! splicer begin class.View.method.get_type_id
5093        SHT_rv = c_view_get_type_id(obj%cxxmem)
5094        ! splicer end class.View.method.get_type_id
5095    end function view_get_type_id
5096
5097    function view_get_total_bytes(obj) &
5098            result(SHT_rv)
5099        use iso_c_binding, only : C_SIZE_T
5100        class(SidreView) :: obj
5101        integer(C_SIZE_T) :: SHT_rv
5102        ! splicer begin class.View.method.get_total_bytes
5103        SHT_rv = c_view_get_total_bytes(obj%cxxmem)
5104        ! splicer end class.View.method.get_total_bytes
5105    end function view_get_total_bytes
5106
5107    function view_get_num_elements(obj) &
5108            result(SHT_rv)
5109        use iso_c_binding, only : C_SIZE_T
5110        class(SidreView) :: obj
5111        integer(C_SIZE_T) :: SHT_rv
5112        ! splicer begin class.View.method.get_num_elements
5113        SHT_rv = c_view_get_num_elements(obj%cxxmem)
5114        ! splicer end class.View.method.get_num_elements
5115    end function view_get_num_elements
5116
5117    function view_get_bytes_per_element(obj) &
5118            result(SHT_rv)
5119        use iso_c_binding, only : C_SIZE_T
5120        class(SidreView) :: obj
5121        integer(C_SIZE_T) :: SHT_rv
5122        ! splicer begin class.View.method.get_bytes_per_element
5123        SHT_rv = c_view_get_bytes_per_element(obj%cxxmem)
5124        ! splicer end class.View.method.get_bytes_per_element
5125    end function view_get_bytes_per_element
5126
5127    function view_get_offset(obj) &
5128            result(SHT_rv)
5129        use iso_c_binding, only : C_SIZE_T
5130        class(SidreView) :: obj
5131        integer(C_SIZE_T) :: SHT_rv
5132        ! splicer begin class.View.method.get_offset
5133        SHT_rv = c_view_get_offset(obj%cxxmem)
5134        ! splicer end class.View.method.get_offset
5135    end function view_get_offset
5136
5137    function view_get_stride(obj) &
5138            result(SHT_rv)
5139        use iso_c_binding, only : C_SIZE_T
5140        class(SidreView) :: obj
5141        integer(C_SIZE_T) :: SHT_rv
5142        ! splicer begin class.View.method.get_stride
5143        SHT_rv = c_view_get_stride(obj%cxxmem)
5144        ! splicer end class.View.method.get_stride
5145    end function view_get_stride
5146
5147    function view_get_num_dimensions(obj) &
5148            result(SHT_rv)
5149        use iso_c_binding, only : C_INT
5150        class(SidreView) :: obj
5151        integer(C_INT) :: SHT_rv
5152        ! splicer begin class.View.method.get_num_dimensions
5153        SHT_rv = c_view_get_num_dimensions(obj%cxxmem)
5154        ! splicer end class.View.method.get_num_dimensions
5155    end function view_get_num_dimensions
5156
5157    function view_get_shape(obj, ndims, shape) &
5158            result(SHT_rv)
5159        use iso_c_binding, only : C_INT, C_INT64_T
5160        class(SidreView) :: obj
5161        integer(C_INT), value, intent(IN) :: ndims
5162        integer(C_INT64_T), intent(OUT) :: shape(:)
5163        integer(C_INT) :: SHT_rv
5164        ! splicer begin class.View.method.get_shape
5165        SHT_rv = c_view_get_shape(obj%cxxmem, ndims, shape)
5166        ! splicer end class.View.method.get_shape
5167    end function view_get_shape
5168
5169    subroutine view_allocate_simple(obj)
5170        class(SidreView) :: obj
5171        ! splicer begin class.View.method.allocate_simple
5172        call c_view_allocate_simple(obj%cxxmem)
5173        ! splicer end class.View.method.allocate_simple
5174    end subroutine view_allocate_simple
5175
5176    subroutine view_allocate_from_type_int32_t(obj, type, num_elems)
5177        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T
5178        class(SidreView) :: obj
5179        integer(C_INT), value, intent(IN) :: type
5180        integer(C_INT32_T), value, intent(IN) :: num_elems
5181        ! splicer begin class.View.method.allocate_from_type_int32_t
5182        call c_view_allocate_from_type(obj%cxxmem, type, &
5183            int(num_elems, C_INT64_t))
5184        ! splicer end class.View.method.allocate_from_type_int32_t
5185    end subroutine view_allocate_from_type_int32_t
5186
5187    subroutine view_allocate_from_type_int64_t(obj, type, num_elems)
5188        use iso_c_binding, only : C_INT, C_INT64_T
5189        class(SidreView) :: obj
5190        integer(C_INT), value, intent(IN) :: type
5191        integer(C_INT64_T), value, intent(IN) :: num_elems
5192        ! splicer begin class.View.method.allocate_from_type_int64_t
5193        call c_view_allocate_from_type(obj%cxxmem, type, &
5194            int(num_elems, C_INT64_t))
5195        ! splicer end class.View.method.allocate_from_type_int64_t
5196    end subroutine view_allocate_from_type_int64_t
5197
5198    subroutine view_reallocate_int32_t(obj, num_elems)
5199        use iso_c_binding, only : C_INT32_T, C_INT64_T
5200        class(SidreView) :: obj
5201        integer(C_INT32_T), value, intent(IN) :: num_elems
5202        ! splicer begin class.View.method.reallocate_int32_t
5203        call c_view_reallocate(obj%cxxmem, int(num_elems, C_INT64_t))
5204        ! splicer end class.View.method.reallocate_int32_t
5205    end subroutine view_reallocate_int32_t
5206
5207    subroutine view_reallocate_int64_t(obj, num_elems)
5208        use iso_c_binding, only : C_INT64_T
5209        class(SidreView) :: obj
5210        integer(C_INT64_T), value, intent(IN) :: num_elems
5211        ! splicer begin class.View.method.reallocate_int64_t
5212        call c_view_reallocate(obj%cxxmem, int(num_elems, C_INT64_t))
5213        ! splicer end class.View.method.reallocate_int64_t
5214    end subroutine view_reallocate_int64_t
5215
5216    subroutine view_attach_buffer_only(obj, buff)
5217        class(SidreView) :: obj
5218        type(SidreBuffer), intent(INOUT) :: buff
5219        ! splicer begin class.View.method.attach_buffer_only
5220        call c_view_attach_buffer_only(obj%cxxmem, buff%cxxmem)
5221        ! splicer end class.View.method.attach_buffer_only
5222    end subroutine view_attach_buffer_only
5223
5224    subroutine view_attach_buffer_type_int32_t(obj, type, num_elems, &
5225            buff)
5226        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T
5227        class(SidreView) :: obj
5228        integer(C_INT), value, intent(IN) :: type
5229        integer(C_INT32_T), value, intent(IN) :: num_elems
5230        type(SidreBuffer), intent(INOUT) :: buff
5231        ! splicer begin class.View.method.attach_buffer_type_int32_t
5232        call c_view_attach_buffer_type(obj%cxxmem, type, &
5233            int(num_elems, C_INT64_t), buff%cxxmem)
5234        ! splicer end class.View.method.attach_buffer_type_int32_t
5235    end subroutine view_attach_buffer_type_int32_t
5236
5237    subroutine view_attach_buffer_type_int64_t(obj, type, num_elems, &
5238            buff)
5239        use iso_c_binding, only : C_INT, C_INT64_T
5240        class(SidreView) :: obj
5241        integer(C_INT), value, intent(IN) :: type
5242        integer(C_INT64_T), value, intent(IN) :: num_elems
5243        type(SidreBuffer), intent(INOUT) :: buff
5244        ! splicer begin class.View.method.attach_buffer_type_int64_t
5245        call c_view_attach_buffer_type(obj%cxxmem, type, &
5246            int(num_elems, C_INT64_t), buff%cxxmem)
5247        ! splicer end class.View.method.attach_buffer_type_int64_t
5248    end subroutine view_attach_buffer_type_int64_t
5249
5250    subroutine view_attach_buffer_shape(obj, type, ndims, shape, buff)
5251        use iso_c_binding, only : C_INT, C_INT64_T
5252        class(SidreView) :: obj
5253        integer(C_INT), value, intent(IN) :: type
5254        integer(C_INT), value, intent(IN) :: ndims
5255        integer(C_INT64_T), intent(IN) :: shape(:)
5256        type(SidreBuffer), intent(INOUT) :: buff
5257        ! splicer begin class.View.method.attach_buffer_shape
5258        call c_view_attach_buffer_shape(obj%cxxmem, type, ndims, shape, &
5259            buff%cxxmem)
5260        ! splicer end class.View.method.attach_buffer_shape
5261    end subroutine view_attach_buffer_shape
5262
5263    subroutine view_clear(obj)
5264        class(SidreView) :: obj
5265        ! splicer begin class.View.method.clear
5266        call c_view_clear(obj%cxxmem)
5267        ! splicer end class.View.method.clear
5268    end subroutine view_clear
5269
5270    subroutine view_apply_0(obj)
5271        class(SidreView) :: obj
5272        ! splicer begin class.View.method.apply_0
5273        call c_view_apply_0(obj%cxxmem)
5274        ! splicer end class.View.method.apply_0
5275    end subroutine view_apply_0
5276
5277    subroutine view_apply_nelems(obj, num_elems)
5278        use iso_c_binding, only : C_INT64_T
5279        class(SidreView) :: obj
5280        integer(C_INT64_T), value, intent(IN) :: num_elems
5281        ! splicer begin class.View.method.apply_nelems
5282        call c_view_apply_nelems(obj%cxxmem, num_elems)
5283        ! splicer end class.View.method.apply_nelems
5284    end subroutine view_apply_nelems
5285
5286    subroutine view_apply_nelems_offset(obj, num_elems, offset)
5287        use iso_c_binding, only : C_INT64_T
5288        class(SidreView) :: obj
5289        integer(C_INT64_T), value, intent(IN) :: num_elems
5290        integer(C_INT64_T), value, intent(IN) :: offset
5291        ! splicer begin class.View.method.apply_nelems_offset
5292        call c_view_apply_nelems_offset(obj%cxxmem, num_elems, offset)
5293        ! splicer end class.View.method.apply_nelems_offset
5294    end subroutine view_apply_nelems_offset
5295
5296    subroutine view_apply_nelems_offset_stride(obj, num_elems, offset, &
5297            stride)
5298        use iso_c_binding, only : C_INT64_T
5299        class(SidreView) :: obj
5300        integer(C_INT64_T), value, intent(IN) :: num_elems
5301        integer(C_INT64_T), value, intent(IN) :: offset
5302        integer(C_INT64_T), value, intent(IN) :: stride
5303        ! splicer begin class.View.method.apply_nelems_offset_stride
5304        call c_view_apply_nelems_offset_stride(obj%cxxmem, num_elems, &
5305            offset, stride)
5306        ! splicer end class.View.method.apply_nelems_offset_stride
5307    end subroutine view_apply_nelems_offset_stride
5308
5309    subroutine view_apply_type_nelems(obj, type, num_elems)
5310        use iso_c_binding, only : C_INT, C_INT64_T
5311        class(SidreView) :: obj
5312        integer(C_INT), value, intent(IN) :: type
5313        integer(C_INT64_T), value, intent(IN) :: num_elems
5314        ! splicer begin class.View.method.apply_type_nelems
5315        call c_view_apply_type_nelems(obj%cxxmem, type, num_elems)
5316        ! splicer end class.View.method.apply_type_nelems
5317    end subroutine view_apply_type_nelems
5318
5319    subroutine view_apply_type_nelems_offset(obj, type, num_elems, &
5320            offset)
5321        use iso_c_binding, only : C_INT, C_INT64_T
5322        class(SidreView) :: obj
5323        integer(C_INT), value, intent(IN) :: type
5324        integer(C_INT64_T), value, intent(IN) :: num_elems
5325        integer(C_INT64_T), value, intent(IN) :: offset
5326        ! splicer begin class.View.method.apply_type_nelems_offset
5327        call c_view_apply_type_nelems_offset(obj%cxxmem, type, &
5328            num_elems, offset)
5329        ! splicer end class.View.method.apply_type_nelems_offset
5330    end subroutine view_apply_type_nelems_offset
5331
5332    subroutine view_apply_type_nelems_offset_stride(obj, type, &
5333            num_elems, offset, stride)
5334        use iso_c_binding, only : C_INT, C_INT64_T
5335        class(SidreView) :: obj
5336        integer(C_INT), value, intent(IN) :: type
5337        integer(C_INT64_T), value, intent(IN) :: num_elems
5338        integer(C_INT64_T), value, intent(IN) :: offset
5339        integer(C_INT64_T), value, intent(IN) :: stride
5340        ! splicer begin class.View.method.apply_type_nelems_offset_stride
5341        call c_view_apply_type_nelems_offset_stride(obj%cxxmem, type, &
5342            num_elems, offset, stride)
5343        ! splicer end class.View.method.apply_type_nelems_offset_stride
5344    end subroutine view_apply_type_nelems_offset_stride
5345
5346    subroutine view_apply_type_shape(obj, type, ndims, shape)
5347        use iso_c_binding, only : C_INT, C_INT64_T
5348        class(SidreView) :: obj
5349        integer(C_INT), value, intent(IN) :: type
5350        integer(C_INT), value, intent(IN) :: ndims
5351        integer(C_INT64_T), intent(IN) :: shape(:)
5352        ! splicer begin class.View.method.apply_type_shape
5353        call c_view_apply_type_shape(obj%cxxmem, type, ndims, shape)
5354        ! splicer end class.View.method.apply_type_shape
5355    end subroutine view_apply_type_shape
5356
5357    subroutine view_set_scalar_int(obj, value)
5358        use iso_c_binding, only : C_INT
5359        class(SidreView) :: obj
5360        integer(C_INT), value, intent(IN) :: value
5361        ! splicer begin class.View.method.set_scalar_int
5362        call c_view_set_scalar_int(obj%cxxmem, value)
5363        ! splicer end class.View.method.set_scalar_int
5364    end subroutine view_set_scalar_int
5365
5366    subroutine view_set_scalar_long(obj, value)
5367        use iso_c_binding, only : C_LONG
5368        class(SidreView) :: obj
5369        integer(C_LONG), value, intent(IN) :: value
5370        ! splicer begin class.View.method.set_scalar_long
5371        call c_view_set_scalar_long(obj%cxxmem, value)
5372        ! splicer end class.View.method.set_scalar_long
5373    end subroutine view_set_scalar_long
5374
5375    subroutine view_set_scalar_float(obj, value)
5376        use iso_c_binding, only : C_FLOAT
5377        class(SidreView) :: obj
5378        real(C_FLOAT), value, intent(IN) :: value
5379        ! splicer begin class.View.method.set_scalar_float
5380        call c_view_set_scalar_float(obj%cxxmem, value)
5381        ! splicer end class.View.method.set_scalar_float
5382    end subroutine view_set_scalar_float
5383
5384    subroutine view_set_scalar_double(obj, value)
5385        use iso_c_binding, only : C_DOUBLE
5386        class(SidreView) :: obj
5387        real(C_DOUBLE), value, intent(IN) :: value
5388        ! splicer begin class.View.method.set_scalar_double
5389        call c_view_set_scalar_double(obj%cxxmem, value)
5390        ! splicer end class.View.method.set_scalar_double
5391    end subroutine view_set_scalar_double
5392
5393    subroutine view_set_string(obj, value)
5394        use iso_c_binding, only : C_INT
5395        class(SidreView) :: obj
5396        character(len=*), intent(IN) :: value
5397        ! splicer begin class.View.method.set_string
5398        call c_view_set_string_bufferify(obj%cxxmem, value, &
5399            len_trim(value, kind=C_INT))
5400        ! splicer end class.View.method.set_string
5401    end subroutine view_set_string
5402
5403    subroutine view_set_external_data_ptr_only(obj, external_ptr)
5404        use iso_c_binding, only : C_PTR
5405        class(SidreView) :: obj
5406        type(C_PTR), intent(IN) :: external_ptr
5407        ! splicer begin class.View.method.set_external_data_ptr_only
5408        call c_view_set_external_data_ptr_only(obj%cxxmem, external_ptr)
5409        ! splicer end class.View.method.set_external_data_ptr_only
5410    end subroutine view_set_external_data_ptr_only
5411
5412    subroutine view_set_external_data_ptr_type_int32_t(obj, type, &
5413            num_elems, external_ptr)
5414        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T, C_PTR
5415        class(SidreView) :: obj
5416        integer(C_INT), value, intent(IN) :: type
5417        integer(C_INT32_T), value, intent(IN) :: num_elems
5418        type(C_PTR), intent(IN) :: external_ptr
5419        ! splicer begin class.View.method.set_external_data_ptr_type_int32_t
5420        call c_view_set_external_data_ptr_type(obj%cxxmem, type, &
5421            int(num_elems, C_INT64_t), external_ptr)
5422        ! splicer end class.View.method.set_external_data_ptr_type_int32_t
5423    end subroutine view_set_external_data_ptr_type_int32_t
5424
5425    subroutine view_set_external_data_ptr_type_int64_t(obj, type, &
5426            num_elems, external_ptr)
5427        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
5428        class(SidreView) :: obj
5429        integer(C_INT), value, intent(IN) :: type
5430        integer(C_INT64_T), value, intent(IN) :: num_elems
5431        type(C_PTR), intent(IN) :: external_ptr
5432        ! splicer begin class.View.method.set_external_data_ptr_type_int64_t
5433        call c_view_set_external_data_ptr_type(obj%cxxmem, type, &
5434            int(num_elems, C_INT64_t), external_ptr)
5435        ! splicer end class.View.method.set_external_data_ptr_type_int64_t
5436    end subroutine view_set_external_data_ptr_type_int64_t
5437
5438    subroutine view_set_external_data_ptr_shape(obj, type, ndims, shape, &
5439            external_ptr)
5440        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
5441        class(SidreView) :: obj
5442        integer(C_INT), value, intent(IN) :: type
5443        integer(C_INT), value, intent(IN) :: ndims
5444        integer(C_INT64_T), intent(IN) :: shape(:)
5445        type(C_PTR), intent(IN) :: external_ptr
5446        ! splicer begin class.View.method.set_external_data_ptr_shape
5447        call c_view_set_external_data_ptr_shape(obj%cxxmem, type, ndims, &
5448            shape, external_ptr)
5449        ! splicer end class.View.method.set_external_data_ptr_shape
5450    end subroutine view_set_external_data_ptr_shape
5451
5452    subroutine view_get_string(obj, name)
5453        use iso_c_binding, only : C_INT
5454        class(SidreView) :: obj
5455        character(len=*), intent(OUT) :: name
5456        ! splicer begin class.View.method.get_string
5457        call c_view_get_string_bufferify(obj%cxxmem, name, &
5458            len(name, kind=C_INT))
5459        ! splicer end class.View.method.get_string
5460    end subroutine view_get_string
5461
5462    function view_get_data_int(obj) &
5463            result(SHT_rv)
5464        use iso_c_binding, only : C_INT
5465        class(SidreView) :: obj
5466        integer(C_INT) :: SHT_rv
5467        ! splicer begin class.View.method.get_data_int
5468        SHT_rv = c_view_get_data_int(obj%cxxmem)
5469        ! splicer end class.View.method.get_data_int
5470    end function view_get_data_int
5471
5472    function view_get_data_long(obj) &
5473            result(SHT_rv)
5474        use iso_c_binding, only : C_LONG
5475        class(SidreView) :: obj
5476        integer(C_LONG) :: SHT_rv
5477        ! splicer begin class.View.method.get_data_long
5478        SHT_rv = c_view_get_data_long(obj%cxxmem)
5479        ! splicer end class.View.method.get_data_long
5480    end function view_get_data_long
5481
5482    function view_get_data_float(obj) &
5483            result(SHT_rv)
5484        use iso_c_binding, only : C_FLOAT
5485        class(SidreView) :: obj
5486        real(C_FLOAT) :: SHT_rv
5487        ! splicer begin class.View.method.get_data_float
5488        SHT_rv = c_view_get_data_float(obj%cxxmem)
5489        ! splicer end class.View.method.get_data_float
5490    end function view_get_data_float
5491
5492    function view_get_data_double(obj) &
5493            result(SHT_rv)
5494        use iso_c_binding, only : C_DOUBLE
5495        class(SidreView) :: obj
5496        real(C_DOUBLE) :: SHT_rv
5497        ! splicer begin class.View.method.get_data_double
5498        SHT_rv = c_view_get_data_double(obj%cxxmem)
5499        ! splicer end class.View.method.get_data_double
5500    end function view_get_data_double
5501
5502    function view_get_void_ptr(obj) &
5503            result(SHT_rv)
5504        use iso_c_binding, only : C_PTR
5505        class(SidreView) :: obj
5506        type(C_PTR) :: SHT_rv
5507        ! splicer begin class.View.method.get_void_ptr
5508        SHT_rv = c_view_get_void_ptr(obj%cxxmem)
5509        ! splicer end class.View.method.get_void_ptr
5510    end function view_get_void_ptr
5511
5512    subroutine view_print(obj)
5513        class(SidreView) :: obj
5514        ! splicer begin class.View.method.print
5515        call c_view_print(obj%cxxmem)
5516        ! splicer end class.View.method.print
5517    end subroutine view_print
5518
5519    function view_rename(obj, new_name) &
5520            result(SHT_rv)
5521        use iso_c_binding, only : C_BOOL, C_INT
5522        class(SidreView) :: obj
5523        character(len=*), intent(IN) :: new_name
5524        logical :: SHT_rv
5525        ! splicer begin class.View.method.rename
5526        SHT_rv = c_view_rename_bufferify(obj%cxxmem, new_name, &
5527            len_trim(new_name, kind=C_INT))
5528        ! splicer end class.View.method.rename
5529    end function view_rename
5530
5531    ! Return pointer to C++ memory.
5532    function view_get_instance(obj) result (cxxptr)
5533        use iso_c_binding, only: C_PTR
5534        class(SidreView), intent(IN) :: obj
5535        type(C_PTR) :: cxxptr
5536        cxxptr = obj%cxxmem%addr
5537    end function view_get_instance
5538
5539    subroutine view_set_instance(obj, cxxmem)
5540        use iso_c_binding, only: C_PTR
5541        class(SidreView), intent(INOUT) :: obj
5542        type(C_PTR), intent(IN) :: cxxmem
5543        obj%cxxmem%addr = cxxmem
5544        obj%cxxmem%idtor = 0
5545    end subroutine view_set_instance
5546
5547    function view_associated(obj) result (rv)
5548        use iso_c_binding, only: c_associated
5549        class(SidreView), intent(IN) :: obj
5550        logical rv
5551        rv = c_associated(obj%cxxmem%addr)
5552    end function view_associated
5553
5554    ! splicer begin class.View.additional_functions
5555
5556    ! Generated by genfsidresplicer.py
5557    subroutine view_get_data_int_scalar_ptr(view, value)
5558        use iso_c_binding
5559        implicit none
5560        class(SidreView), intent(IN) :: view
5561        integer(C_INT), pointer, intent(OUT) :: value
5562        integer(C_INT), pointer :: tmp(:)
5563        type(C_PTR) cptr
5564        integer(SIDRE_IndexType) :: offset
5565
5566        cptr = view%get_void_ptr()
5567        if (c_associated(cptr)) then
5568          offset = view%get_offset()
5569          if (offset > 0) then
5570            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5571            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5572          endif
5573
5574          call c_f_pointer(cptr, value)
5575        else
5576          nullify(value)
5577        endif
5578    end subroutine view_get_data_int_scalar_ptr
5579
5580    ! Generated by genfsidresplicer.py
5581    subroutine view_get_data_int_1d_ptr(view, value)
5582        use iso_c_binding
5583        implicit none
5584        class(SidreView), intent(IN) :: view
5585        integer(C_INT), pointer, intent(OUT) :: value(:)
5586        integer(C_INT), pointer :: tmp(:)
5587        type(C_PTR) cptr
5588        integer rank
5589        integer(SIDRE_IndexType) extents(1)
5590        integer(SIDRE_IndexType) :: offset
5591
5592        cptr = view%get_void_ptr()
5593        if (c_associated(cptr)) then
5594          offset = view%get_offset()
5595          if (offset > 0) then
5596            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5597            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5598          endif
5599
5600          rank = view%get_shape(1, extents)
5601          call c_f_pointer(cptr, value, extents)
5602        else
5603          nullify(value)
5604        endif
5605    end subroutine view_get_data_int_1d_ptr
5606
5607    ! Generated by genfsidresplicer.py
5608    subroutine view_get_data_int_2d_ptr(view, value)
5609        use iso_c_binding
5610        implicit none
5611        class(SidreView), intent(IN) :: view
5612        integer(C_INT), pointer, intent(OUT) :: value(:,:)
5613        integer(C_INT), pointer :: tmp(:)
5614        type(C_PTR) cptr
5615        integer rank
5616        integer(SIDRE_IndexType) extents(2)
5617        integer(SIDRE_IndexType) :: offset
5618
5619        cptr = view%get_void_ptr()
5620        if (c_associated(cptr)) then
5621          offset = view%get_offset()
5622          if (offset > 0) then
5623            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5624            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5625          endif
5626
5627          rank = view%get_shape(2, extents)
5628          call c_f_pointer(cptr, value, extents)
5629        else
5630          nullify(value)
5631        endif
5632    end subroutine view_get_data_int_2d_ptr
5633
5634    ! Generated by genfsidresplicer.py
5635    subroutine view_get_data_int_3d_ptr(view, value)
5636        use iso_c_binding
5637        implicit none
5638        class(SidreView), intent(IN) :: view
5639        integer(C_INT), pointer, intent(OUT) :: value(:,:,:)
5640        integer(C_INT), pointer :: tmp(:)
5641        type(C_PTR) cptr
5642        integer rank
5643        integer(SIDRE_IndexType) extents(3)
5644        integer(SIDRE_IndexType) :: offset
5645
5646        cptr = view%get_void_ptr()
5647        if (c_associated(cptr)) then
5648          offset = view%get_offset()
5649          if (offset > 0) then
5650            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5651            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5652          endif
5653
5654          rank = view%get_shape(3, extents)
5655          call c_f_pointer(cptr, value, extents)
5656        else
5657          nullify(value)
5658        endif
5659    end subroutine view_get_data_int_3d_ptr
5660
5661    ! Generated by genfsidresplicer.py
5662    subroutine view_get_data_int_4d_ptr(view, value)
5663        use iso_c_binding
5664        implicit none
5665        class(SidreView), intent(IN) :: view
5666        integer(C_INT), pointer, intent(OUT) :: value(:,:,:,:)
5667        integer(C_INT), pointer :: tmp(:)
5668        type(C_PTR) cptr
5669        integer rank
5670        integer(SIDRE_IndexType) extents(4)
5671        integer(SIDRE_IndexType) :: offset
5672
5673        cptr = view%get_void_ptr()
5674        if (c_associated(cptr)) then
5675          offset = view%get_offset()
5676          if (offset > 0) then
5677            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5678            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5679          endif
5680
5681          rank = view%get_shape(4, extents)
5682          call c_f_pointer(cptr, value, extents)
5683        else
5684          nullify(value)
5685        endif
5686    end subroutine view_get_data_int_4d_ptr
5687
5688    ! Generated by genfsidresplicer.py
5689    subroutine view_get_data_long_scalar_ptr(view, value)
5690        use iso_c_binding
5691        implicit none
5692        class(SidreView), intent(IN) :: view
5693        integer(C_LONG), pointer, intent(OUT) :: value
5694        integer(C_LONG), pointer :: tmp(:)
5695        type(C_PTR) cptr
5696        integer(SIDRE_IndexType) :: offset
5697
5698        cptr = view%get_void_ptr()
5699        if (c_associated(cptr)) then
5700          offset = view%get_offset()
5701          if (offset > 0) then
5702            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5703            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5704          endif
5705
5706          call c_f_pointer(cptr, value)
5707        else
5708          nullify(value)
5709        endif
5710    end subroutine view_get_data_long_scalar_ptr
5711
5712    ! Generated by genfsidresplicer.py
5713    subroutine view_get_data_long_1d_ptr(view, value)
5714        use iso_c_binding
5715        implicit none
5716        class(SidreView), intent(IN) :: view
5717        integer(C_LONG), pointer, intent(OUT) :: value(:)
5718        integer(C_LONG), pointer :: tmp(:)
5719        type(C_PTR) cptr
5720        integer rank
5721        integer(SIDRE_IndexType) extents(1)
5722        integer(SIDRE_IndexType) :: offset
5723
5724        cptr = view%get_void_ptr()
5725        if (c_associated(cptr)) then
5726          offset = view%get_offset()
5727          if (offset > 0) then
5728            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5729            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5730          endif
5731
5732          rank = view%get_shape(1, extents)
5733          call c_f_pointer(cptr, value, extents)
5734        else
5735          nullify(value)
5736        endif
5737    end subroutine view_get_data_long_1d_ptr
5738
5739    ! Generated by genfsidresplicer.py
5740    subroutine view_get_data_long_2d_ptr(view, value)
5741        use iso_c_binding
5742        implicit none
5743        class(SidreView), intent(IN) :: view
5744        integer(C_LONG), pointer, intent(OUT) :: value(:,:)
5745        integer(C_LONG), pointer :: tmp(:)
5746        type(C_PTR) cptr
5747        integer rank
5748        integer(SIDRE_IndexType) extents(2)
5749        integer(SIDRE_IndexType) :: offset
5750
5751        cptr = view%get_void_ptr()
5752        if (c_associated(cptr)) then
5753          offset = view%get_offset()
5754          if (offset > 0) then
5755            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5756            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5757          endif
5758
5759          rank = view%get_shape(2, extents)
5760          call c_f_pointer(cptr, value, extents)
5761        else
5762          nullify(value)
5763        endif
5764    end subroutine view_get_data_long_2d_ptr
5765
5766    ! Generated by genfsidresplicer.py
5767    subroutine view_get_data_long_3d_ptr(view, value)
5768        use iso_c_binding
5769        implicit none
5770        class(SidreView), intent(IN) :: view
5771        integer(C_LONG), pointer, intent(OUT) :: value(:,:,:)
5772        integer(C_LONG), pointer :: tmp(:)
5773        type(C_PTR) cptr
5774        integer rank
5775        integer(SIDRE_IndexType) extents(3)
5776        integer(SIDRE_IndexType) :: offset
5777
5778        cptr = view%get_void_ptr()
5779        if (c_associated(cptr)) then
5780          offset = view%get_offset()
5781          if (offset > 0) then
5782            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5783            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5784          endif
5785
5786          rank = view%get_shape(3, extents)
5787          call c_f_pointer(cptr, value, extents)
5788        else
5789          nullify(value)
5790        endif
5791    end subroutine view_get_data_long_3d_ptr
5792
5793    ! Generated by genfsidresplicer.py
5794    subroutine view_get_data_long_4d_ptr(view, value)
5795        use iso_c_binding
5796        implicit none
5797        class(SidreView), intent(IN) :: view
5798        integer(C_LONG), pointer, intent(OUT) :: value(:,:,:,:)
5799        integer(C_LONG), pointer :: tmp(:)
5800        type(C_PTR) cptr
5801        integer rank
5802        integer(SIDRE_IndexType) extents(4)
5803        integer(SIDRE_IndexType) :: offset
5804
5805        cptr = view%get_void_ptr()
5806        if (c_associated(cptr)) then
5807          offset = view%get_offset()
5808          if (offset > 0) then
5809            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5810            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5811          endif
5812
5813          rank = view%get_shape(4, extents)
5814          call c_f_pointer(cptr, value, extents)
5815        else
5816          nullify(value)
5817        endif
5818    end subroutine view_get_data_long_4d_ptr
5819
5820    ! Generated by genfsidresplicer.py
5821    subroutine view_get_data_float_scalar_ptr(view, value)
5822        use iso_c_binding
5823        implicit none
5824        class(SidreView), intent(IN) :: view
5825        real(C_FLOAT), pointer, intent(OUT) :: value
5826        real(C_FLOAT), pointer :: tmp(:)
5827        type(C_PTR) cptr
5828        integer(SIDRE_IndexType) :: offset
5829
5830        cptr = view%get_void_ptr()
5831        if (c_associated(cptr)) then
5832          offset = view%get_offset()
5833          if (offset > 0) then
5834            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5835            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5836          endif
5837
5838          call c_f_pointer(cptr, value)
5839        else
5840          nullify(value)
5841        endif
5842    end subroutine view_get_data_float_scalar_ptr
5843
5844    ! Generated by genfsidresplicer.py
5845    subroutine view_get_data_float_1d_ptr(view, value)
5846        use iso_c_binding
5847        implicit none
5848        class(SidreView), intent(IN) :: view
5849        real(C_FLOAT), pointer, intent(OUT) :: value(:)
5850        real(C_FLOAT), pointer :: tmp(:)
5851        type(C_PTR) cptr
5852        integer rank
5853        integer(SIDRE_IndexType) extents(1)
5854        integer(SIDRE_IndexType) :: offset
5855
5856        cptr = view%get_void_ptr()
5857        if (c_associated(cptr)) then
5858          offset = view%get_offset()
5859          if (offset > 0) then
5860            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5861            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5862          endif
5863
5864          rank = view%get_shape(1, extents)
5865          call c_f_pointer(cptr, value, extents)
5866        else
5867          nullify(value)
5868        endif
5869    end subroutine view_get_data_float_1d_ptr
5870
5871    ! Generated by genfsidresplicer.py
5872    subroutine view_get_data_float_2d_ptr(view, value)
5873        use iso_c_binding
5874        implicit none
5875        class(SidreView), intent(IN) :: view
5876        real(C_FLOAT), pointer, intent(OUT) :: value(:,:)
5877        real(C_FLOAT), pointer :: tmp(:)
5878        type(C_PTR) cptr
5879        integer rank
5880        integer(SIDRE_IndexType) extents(2)
5881        integer(SIDRE_IndexType) :: offset
5882
5883        cptr = view%get_void_ptr()
5884        if (c_associated(cptr)) then
5885          offset = view%get_offset()
5886          if (offset > 0) then
5887            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5888            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5889          endif
5890
5891          rank = view%get_shape(2, extents)
5892          call c_f_pointer(cptr, value, extents)
5893        else
5894          nullify(value)
5895        endif
5896    end subroutine view_get_data_float_2d_ptr
5897
5898    ! Generated by genfsidresplicer.py
5899    subroutine view_get_data_float_3d_ptr(view, value)
5900        use iso_c_binding
5901        implicit none
5902        class(SidreView), intent(IN) :: view
5903        real(C_FLOAT), pointer, intent(OUT) :: value(:,:,:)
5904        real(C_FLOAT), pointer :: tmp(:)
5905        type(C_PTR) cptr
5906        integer rank
5907        integer(SIDRE_IndexType) extents(3)
5908        integer(SIDRE_IndexType) :: offset
5909
5910        cptr = view%get_void_ptr()
5911        if (c_associated(cptr)) then
5912          offset = view%get_offset()
5913          if (offset > 0) then
5914            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5915            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5916          endif
5917
5918          rank = view%get_shape(3, extents)
5919          call c_f_pointer(cptr, value, extents)
5920        else
5921          nullify(value)
5922        endif
5923    end subroutine view_get_data_float_3d_ptr
5924
5925    ! Generated by genfsidresplicer.py
5926    subroutine view_get_data_float_4d_ptr(view, value)
5927        use iso_c_binding
5928        implicit none
5929        class(SidreView), intent(IN) :: view
5930        real(C_FLOAT), pointer, intent(OUT) :: value(:,:,:,:)
5931        real(C_FLOAT), pointer :: tmp(:)
5932        type(C_PTR) cptr
5933        integer rank
5934        integer(SIDRE_IndexType) extents(4)
5935        integer(SIDRE_IndexType) :: offset
5936
5937        cptr = view%get_void_ptr()
5938        if (c_associated(cptr)) then
5939          offset = view%get_offset()
5940          if (offset > 0) then
5941            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5942            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5943          endif
5944
5945          rank = view%get_shape(4, extents)
5946          call c_f_pointer(cptr, value, extents)
5947        else
5948          nullify(value)
5949        endif
5950    end subroutine view_get_data_float_4d_ptr
5951
5952    ! Generated by genfsidresplicer.py
5953    subroutine view_get_data_double_scalar_ptr(view, value)
5954        use iso_c_binding
5955        implicit none
5956        class(SidreView), intent(IN) :: view
5957        real(C_DOUBLE), pointer, intent(OUT) :: value
5958        real(C_DOUBLE), pointer :: tmp(:)
5959        type(C_PTR) cptr
5960        integer(SIDRE_IndexType) :: offset
5961
5962        cptr = view%get_void_ptr()
5963        if (c_associated(cptr)) then
5964          offset = view%get_offset()
5965          if (offset > 0) then
5966            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5967            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5968          endif
5969
5970          call c_f_pointer(cptr, value)
5971        else
5972          nullify(value)
5973        endif
5974    end subroutine view_get_data_double_scalar_ptr
5975
5976    ! Generated by genfsidresplicer.py
5977    subroutine view_get_data_double_1d_ptr(view, value)
5978        use iso_c_binding
5979        implicit none
5980        class(SidreView), intent(IN) :: view
5981        real(C_DOUBLE), pointer, intent(OUT) :: value(:)
5982        real(C_DOUBLE), pointer :: tmp(:)
5983        type(C_PTR) cptr
5984        integer rank
5985        integer(SIDRE_IndexType) extents(1)
5986        integer(SIDRE_IndexType) :: offset
5987
5988        cptr = view%get_void_ptr()
5989        if (c_associated(cptr)) then
5990          offset = view%get_offset()
5991          if (offset > 0) then
5992            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
5993            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
5994          endif
5995
5996          rank = view%get_shape(1, extents)
5997          call c_f_pointer(cptr, value, extents)
5998        else
5999          nullify(value)
6000        endif
6001    end subroutine view_get_data_double_1d_ptr
6002
6003    ! Generated by genfsidresplicer.py
6004    subroutine view_get_data_double_2d_ptr(view, value)
6005        use iso_c_binding
6006        implicit none
6007        class(SidreView), intent(IN) :: view
6008        real(C_DOUBLE), pointer, intent(OUT) :: value(:,:)
6009        real(C_DOUBLE), pointer :: tmp(:)
6010        type(C_PTR) cptr
6011        integer rank
6012        integer(SIDRE_IndexType) extents(2)
6013        integer(SIDRE_IndexType) :: offset
6014
6015        cptr = view%get_void_ptr()
6016        if (c_associated(cptr)) then
6017          offset = view%get_offset()
6018          if (offset > 0) then
6019            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
6020            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
6021          endif
6022
6023          rank = view%get_shape(2, extents)
6024          call c_f_pointer(cptr, value, extents)
6025        else
6026          nullify(value)
6027        endif
6028    end subroutine view_get_data_double_2d_ptr
6029
6030    ! Generated by genfsidresplicer.py
6031    subroutine view_get_data_double_3d_ptr(view, value)
6032        use iso_c_binding
6033        implicit none
6034        class(SidreView), intent(IN) :: view
6035        real(C_DOUBLE), pointer, intent(OUT) :: value(:,:,:)
6036        real(C_DOUBLE), pointer :: tmp(:)
6037        type(C_PTR) cptr
6038        integer rank
6039        integer(SIDRE_IndexType) extents(3)
6040        integer(SIDRE_IndexType) :: offset
6041
6042        cptr = view%get_void_ptr()
6043        if (c_associated(cptr)) then
6044          offset = view%get_offset()
6045          if (offset > 0) then
6046            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
6047            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
6048          endif
6049
6050          rank = view%get_shape(3, extents)
6051          call c_f_pointer(cptr, value, extents)
6052        else
6053          nullify(value)
6054        endif
6055    end subroutine view_get_data_double_3d_ptr
6056
6057    ! Generated by genfsidresplicer.py
6058    subroutine view_get_data_double_4d_ptr(view, value)
6059        use iso_c_binding
6060        implicit none
6061        class(SidreView), intent(IN) :: view
6062        real(C_DOUBLE), pointer, intent(OUT) :: value(:,:,:,:)
6063        real(C_DOUBLE), pointer :: tmp(:)
6064        type(C_PTR) cptr
6065        integer rank
6066        integer(SIDRE_IndexType) extents(4)
6067        integer(SIDRE_IndexType) :: offset
6068
6069        cptr = view%get_void_ptr()
6070        if (c_associated(cptr)) then
6071          offset = view%get_offset()
6072          if (offset > 0) then
6073            call c_f_pointer(cptr, tmp, [offset+1])   ! +1 to convert 0-based offset to 1-based index
6074            cptr = c_loc(tmp(offset+1))               ! Emulates pointer arithmetic
6075          endif
6076
6077          rank = view%get_shape(4, extents)
6078          call c_f_pointer(cptr, value, extents)
6079        else
6080          nullify(value)
6081        endif
6082    end subroutine view_get_data_double_4d_ptr
6083
6084    ! Generated by genfsidresplicer.py
6085    subroutine view_set_array_data_ptr_int_scalar(view, value)
6086        use iso_c_binding
6087        implicit none
6088
6089        class(SidreView), intent(IN) :: view
6090        integer(C_INT), target, intent(IN) :: value
6091    !    integer(SIDRE_IndexType) :: extents(1)
6092    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
6093        type(C_PTR) addr
6094
6095    !    lname = len_trim(name)
6096    !    extents(1) = 1_SIDRE_IndexType
6097#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6098        addr = c_loc(value)
6099#else
6100        call SIDRE_C_LOC(value, addr)
6101#endif
6102        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6103    !    call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
6104    end subroutine view_set_array_data_ptr_int_scalar
6105
6106    ! Generated by genfsidresplicer.py
6107    subroutine view_set_array_data_ptr_int_1d(view, value)
6108        use iso_c_binding
6109        implicit none
6110
6111        class(SidreView), intent(IN) :: view
6112        integer(C_INT), target, intent(IN) :: value(:)
6113    !    integer(SIDRE_IndexType) :: extents(1)
6114    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
6115        type(C_PTR) addr
6116
6117    !    lname = len_trim(name)
6118    !    extents = shape(value, kind=SIDRE_IndexType)
6119#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6120        addr = c_loc(value)
6121#else
6122        call SIDRE_C_LOC(value(lbound(value,1)), addr)
6123#endif
6124        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6125    !    call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
6126    end subroutine view_set_array_data_ptr_int_1d
6127
6128    ! Generated by genfsidresplicer.py
6129    subroutine view_set_array_data_ptr_int_2d(view, value)
6130        use iso_c_binding
6131        implicit none
6132
6133        class(SidreView), intent(IN) :: view
6134        integer(C_INT), target, intent(IN) :: value(:,:)
6135    !    integer(SIDRE_IndexType) :: extents(2)
6136    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
6137        type(C_PTR) addr
6138
6139    !    lname = len_trim(name)
6140    !    extents = shape(value, kind=SIDRE_IndexType)
6141#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6142        addr = c_loc(value)
6143#else
6144        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
6145#endif
6146        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6147    !    call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
6148    end subroutine view_set_array_data_ptr_int_2d
6149
6150    ! Generated by genfsidresplicer.py
6151    subroutine view_set_array_data_ptr_int_3d(view, value)
6152        use iso_c_binding
6153        implicit none
6154
6155        class(SidreView), intent(IN) :: view
6156        integer(C_INT), target, intent(IN) :: value(:,:,:)
6157    !    integer(SIDRE_IndexType) :: extents(3)
6158    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
6159        type(C_PTR) addr
6160
6161    !    lname = len_trim(name)
6162    !    extents = shape(value, kind=SIDRE_IndexType)
6163#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6164        addr = c_loc(value)
6165#else
6166        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
6167#endif
6168        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6169    !    call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
6170    end subroutine view_set_array_data_ptr_int_3d
6171
6172    ! Generated by genfsidresplicer.py
6173    subroutine view_set_array_data_ptr_int_4d(view, value)
6174        use iso_c_binding
6175        implicit none
6176
6177        class(SidreView), intent(IN) :: view
6178        integer(C_INT), target, intent(IN) :: value(:,:,:,:)
6179    !    integer(SIDRE_IndexType) :: extents(4)
6180    !    integer(C_INT), parameter :: type = SIDRE_INT_ID
6181        type(C_PTR) addr
6182
6183    !    lname = len_trim(name)
6184    !    extents = shape(value, kind=SIDRE_IndexType)
6185#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6186        addr = c_loc(value)
6187#else
6188        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
6189#endif
6190        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6191    !    call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
6192    end subroutine view_set_array_data_ptr_int_4d
6193
6194    ! Generated by genfsidresplicer.py
6195    subroutine view_set_array_data_ptr_long_scalar(view, value)
6196        use iso_c_binding
6197        implicit none
6198
6199        class(SidreView), intent(IN) :: view
6200        integer(C_LONG), target, intent(IN) :: value
6201    !    integer(SIDRE_IndexType) :: extents(1)
6202    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
6203        type(C_PTR) addr
6204
6205    !    lname = len_trim(name)
6206    !    extents(1) = 1_SIDRE_IndexType
6207#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6208        addr = c_loc(value)
6209#else
6210        call SIDRE_C_LOC(value, addr)
6211#endif
6212        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6213    !    call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
6214    end subroutine view_set_array_data_ptr_long_scalar
6215
6216    ! Generated by genfsidresplicer.py
6217    subroutine view_set_array_data_ptr_long_1d(view, value)
6218        use iso_c_binding
6219        implicit none
6220
6221        class(SidreView), intent(IN) :: view
6222        integer(C_LONG), target, intent(IN) :: value(:)
6223    !    integer(SIDRE_IndexType) :: extents(1)
6224    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
6225        type(C_PTR) addr
6226
6227    !    lname = len_trim(name)
6228    !    extents = shape(value, kind=SIDRE_IndexType)
6229#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6230        addr = c_loc(value)
6231#else
6232        call SIDRE_C_LOC(value(lbound(value,1)), addr)
6233#endif
6234        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6235    !    call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
6236    end subroutine view_set_array_data_ptr_long_1d
6237
6238    ! Generated by genfsidresplicer.py
6239    subroutine view_set_array_data_ptr_long_2d(view, value)
6240        use iso_c_binding
6241        implicit none
6242
6243        class(SidreView), intent(IN) :: view
6244        integer(C_LONG), target, intent(IN) :: value(:,:)
6245    !    integer(SIDRE_IndexType) :: extents(2)
6246    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
6247        type(C_PTR) addr
6248
6249    !    lname = len_trim(name)
6250    !    extents = shape(value, kind=SIDRE_IndexType)
6251#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6252        addr = c_loc(value)
6253#else
6254        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
6255#endif
6256        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6257    !    call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
6258    end subroutine view_set_array_data_ptr_long_2d
6259
6260    ! Generated by genfsidresplicer.py
6261    subroutine view_set_array_data_ptr_long_3d(view, value)
6262        use iso_c_binding
6263        implicit none
6264
6265        class(SidreView), intent(IN) :: view
6266        integer(C_LONG), target, intent(IN) :: value(:,:,:)
6267    !    integer(SIDRE_IndexType) :: extents(3)
6268    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
6269        type(C_PTR) addr
6270
6271    !    lname = len_trim(name)
6272    !    extents = shape(value, kind=SIDRE_IndexType)
6273#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6274        addr = c_loc(value)
6275#else
6276        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
6277#endif
6278        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6279    !    call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
6280    end subroutine view_set_array_data_ptr_long_3d
6281
6282    ! Generated by genfsidresplicer.py
6283    subroutine view_set_array_data_ptr_long_4d(view, value)
6284        use iso_c_binding
6285        implicit none
6286
6287        class(SidreView), intent(IN) :: view
6288        integer(C_LONG), target, intent(IN) :: value(:,:,:,:)
6289    !    integer(SIDRE_IndexType) :: extents(4)
6290    !    integer(C_INT), parameter :: type = SIDRE_LONG_ID
6291        type(C_PTR) addr
6292
6293    !    lname = len_trim(name)
6294    !    extents = shape(value, kind=SIDRE_IndexType)
6295#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6296        addr = c_loc(value)
6297#else
6298        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
6299#endif
6300        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6301    !    call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
6302    end subroutine view_set_array_data_ptr_long_4d
6303
6304    ! Generated by genfsidresplicer.py
6305    subroutine view_set_array_data_ptr_float_scalar(view, value)
6306        use iso_c_binding
6307        implicit none
6308
6309        class(SidreView), intent(IN) :: view
6310        real(C_FLOAT), target, intent(IN) :: value
6311    !    integer(SIDRE_IndexType) :: extents(1)
6312    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
6313        type(C_PTR) addr
6314
6315    !    lname = len_trim(name)
6316    !    extents(1) = 1_SIDRE_IndexType
6317#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6318        addr = c_loc(value)
6319#else
6320        call SIDRE_C_LOC(value, addr)
6321#endif
6322        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6323    !    call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
6324    end subroutine view_set_array_data_ptr_float_scalar
6325
6326    ! Generated by genfsidresplicer.py
6327    subroutine view_set_array_data_ptr_float_1d(view, value)
6328        use iso_c_binding
6329        implicit none
6330
6331        class(SidreView), intent(IN) :: view
6332        real(C_FLOAT), target, intent(IN) :: value(:)
6333    !    integer(SIDRE_IndexType) :: extents(1)
6334    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
6335        type(C_PTR) addr
6336
6337    !    lname = len_trim(name)
6338    !    extents = shape(value, kind=SIDRE_IndexType)
6339#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6340        addr = c_loc(value)
6341#else
6342        call SIDRE_C_LOC(value(lbound(value,1)), addr)
6343#endif
6344        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6345    !    call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
6346    end subroutine view_set_array_data_ptr_float_1d
6347
6348    ! Generated by genfsidresplicer.py
6349    subroutine view_set_array_data_ptr_float_2d(view, value)
6350        use iso_c_binding
6351        implicit none
6352
6353        class(SidreView), intent(IN) :: view
6354        real(C_FLOAT), target, intent(IN) :: value(:,:)
6355    !    integer(SIDRE_IndexType) :: extents(2)
6356    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
6357        type(C_PTR) addr
6358
6359    !    lname = len_trim(name)
6360    !    extents = shape(value, kind=SIDRE_IndexType)
6361#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6362        addr = c_loc(value)
6363#else
6364        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
6365#endif
6366        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6367    !    call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
6368    end subroutine view_set_array_data_ptr_float_2d
6369
6370    ! Generated by genfsidresplicer.py
6371    subroutine view_set_array_data_ptr_float_3d(view, value)
6372        use iso_c_binding
6373        implicit none
6374
6375        class(SidreView), intent(IN) :: view
6376        real(C_FLOAT), target, intent(IN) :: value(:,:,:)
6377    !    integer(SIDRE_IndexType) :: extents(3)
6378    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
6379        type(C_PTR) addr
6380
6381    !    lname = len_trim(name)
6382    !    extents = shape(value, kind=SIDRE_IndexType)
6383#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6384        addr = c_loc(value)
6385#else
6386        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
6387#endif
6388        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6389    !    call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
6390    end subroutine view_set_array_data_ptr_float_3d
6391
6392    ! Generated by genfsidresplicer.py
6393    subroutine view_set_array_data_ptr_float_4d(view, value)
6394        use iso_c_binding
6395        implicit none
6396
6397        class(SidreView), intent(IN) :: view
6398        real(C_FLOAT), target, intent(IN) :: value(:,:,:,:)
6399    !    integer(SIDRE_IndexType) :: extents(4)
6400    !    integer(C_INT), parameter :: type = SIDRE_FLOAT_ID
6401        type(C_PTR) addr
6402
6403    !    lname = len_trim(name)
6404    !    extents = shape(value, kind=SIDRE_IndexType)
6405#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6406        addr = c_loc(value)
6407#else
6408        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
6409#endif
6410        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6411    !    call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
6412    end subroutine view_set_array_data_ptr_float_4d
6413
6414    ! Generated by genfsidresplicer.py
6415    subroutine view_set_array_data_ptr_double_scalar(view, value)
6416        use iso_c_binding
6417        implicit none
6418
6419        class(SidreView), intent(IN) :: view
6420        real(C_DOUBLE), target, intent(IN) :: value
6421    !    integer(SIDRE_IndexType) :: extents(1)
6422    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
6423        type(C_PTR) addr
6424
6425    !    lname = len_trim(name)
6426    !    extents(1) = 1_SIDRE_IndexType
6427#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6428        addr = c_loc(value)
6429#else
6430        call SIDRE_C_LOC(value, addr)
6431#endif
6432        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6433    !    call c_view_apply_type_shape(rv%cxxmem, type, 0, extents)
6434    end subroutine view_set_array_data_ptr_double_scalar
6435
6436    ! Generated by genfsidresplicer.py
6437    subroutine view_set_array_data_ptr_double_1d(view, value)
6438        use iso_c_binding
6439        implicit none
6440
6441        class(SidreView), intent(IN) :: view
6442        real(C_DOUBLE), target, intent(IN) :: value(:)
6443    !    integer(SIDRE_IndexType) :: extents(1)
6444    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
6445        type(C_PTR) addr
6446
6447    !    lname = len_trim(name)
6448    !    extents = shape(value, kind=SIDRE_IndexType)
6449#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6450        addr = c_loc(value)
6451#else
6452        call SIDRE_C_LOC(value(lbound(value,1)), addr)
6453#endif
6454        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6455    !    call c_view_apply_type_shape(rv%cxxmem, type, 1, extents)
6456    end subroutine view_set_array_data_ptr_double_1d
6457
6458    ! Generated by genfsidresplicer.py
6459    subroutine view_set_array_data_ptr_double_2d(view, value)
6460        use iso_c_binding
6461        implicit none
6462
6463        class(SidreView), intent(IN) :: view
6464        real(C_DOUBLE), target, intent(IN) :: value(:,:)
6465    !    integer(SIDRE_IndexType) :: extents(2)
6466    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
6467        type(C_PTR) addr
6468
6469    !    lname = len_trim(name)
6470    !    extents = shape(value, kind=SIDRE_IndexType)
6471#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6472        addr = c_loc(value)
6473#else
6474        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2)), addr)
6475#endif
6476        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6477    !    call c_view_apply_type_shape(rv%cxxmem, type, 2, extents)
6478    end subroutine view_set_array_data_ptr_double_2d
6479
6480    ! Generated by genfsidresplicer.py
6481    subroutine view_set_array_data_ptr_double_3d(view, value)
6482        use iso_c_binding
6483        implicit none
6484
6485        class(SidreView), intent(IN) :: view
6486        real(C_DOUBLE), target, intent(IN) :: value(:,:,:)
6487    !    integer(SIDRE_IndexType) :: extents(3)
6488    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
6489        type(C_PTR) addr
6490
6491    !    lname = len_trim(name)
6492    !    extents = shape(value, kind=SIDRE_IndexType)
6493#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6494        addr = c_loc(value)
6495#else
6496        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3)), addr)
6497#endif
6498        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6499    !    call c_view_apply_type_shape(rv%cxxmem, type, 3, extents)
6500    end subroutine view_set_array_data_ptr_double_3d
6501
6502    ! Generated by genfsidresplicer.py
6503    subroutine view_set_array_data_ptr_double_4d(view, value)
6504        use iso_c_binding
6505        implicit none
6506
6507        class(SidreView), intent(IN) :: view
6508        real(C_DOUBLE), target, intent(IN) :: value(:,:,:,:)
6509    !    integer(SIDRE_IndexType) :: extents(4)
6510    !    integer(C_INT), parameter :: type = SIDRE_DOUBLE_ID
6511        type(C_PTR) addr
6512
6513    !    lname = len_trim(name)
6514    !    extents = shape(value, kind=SIDRE_IndexType)
6515#ifdef USE_C_LOC_WITH_ASSUMED_SHAPE
6516        addr = c_loc(value)
6517#else
6518        call SIDRE_C_LOC(value(lbound(value,1),lbound(value,2),lbound(value,3),lbound(value,4)), addr)
6519#endif
6520        call c_view_set_external_data_ptr_only(view%cxxmem, addr)
6521    !    call c_view_apply_type_shape(rv%cxxmem, type, 4, extents)
6522    end subroutine view_set_array_data_ptr_double_4d
6523    ! splicer end class.View.additional_functions
6524
6525    function datastore_new() &
6526            result(SHT_rv)
6527        use iso_c_binding, only : C_PTR
6528        type(SidreDataStore) :: SHT_rv
6529        ! splicer begin class.DataStore.method.new
6530        type(C_PTR) :: SHT_prv
6531        SHT_prv = c_datastore_new(SHT_rv%cxxmem)
6532        ! splicer end class.DataStore.method.new
6533    end function datastore_new
6534
6535    subroutine datastore_delete(obj)
6536        class(SidreDataStore) :: obj
6537        ! splicer begin class.DataStore.method.delete
6538        call c_datastore_delete(obj%cxxmem)
6539        ! splicer end class.DataStore.method.delete
6540    end subroutine datastore_delete
6541
6542    function datastore_get_root(obj) &
6543            result(SHT_rv)
6544        use iso_c_binding, only : C_PTR
6545        class(SidreDataStore) :: obj
6546        type(SidreGroup) :: SHT_rv
6547        ! splicer begin class.DataStore.method.get_root
6548        type(C_PTR) :: SHT_prv
6549        SHT_prv = c_datastore_get_root(obj%cxxmem, SHT_rv%cxxmem)
6550        ! splicer end class.DataStore.method.get_root
6551    end function datastore_get_root
6552
6553    function datastore_get_num_buffers(obj) &
6554            result(SHT_rv)
6555        use iso_c_binding, only : C_SIZE_T
6556        class(SidreDataStore) :: obj
6557        integer(C_SIZE_T) :: SHT_rv
6558        ! splicer begin class.DataStore.method.get_num_buffers
6559        SHT_rv = c_datastore_get_num_buffers(obj%cxxmem)
6560        ! splicer end class.DataStore.method.get_num_buffers
6561    end function datastore_get_num_buffers
6562
6563    function datastore_get_buffer_int32_t(obj, idx) &
6564            result(SHT_rv)
6565        use iso_c_binding, only : C_INT32_T, C_INT64_T, C_PTR
6566        class(SidreDataStore) :: obj
6567        integer(C_INT32_T), value, intent(IN) :: idx
6568        type(SidreBuffer) :: SHT_rv
6569        ! splicer begin class.DataStore.method.get_buffer_int32_t
6570        type(C_PTR) :: SHT_prv
6571        SHT_prv = c_datastore_get_buffer(obj%cxxmem, &
6572            int(idx, C_INT64_t), SHT_rv%cxxmem)
6573        ! splicer end class.DataStore.method.get_buffer_int32_t
6574    end function datastore_get_buffer_int32_t
6575
6576    function datastore_get_buffer_int64_t(obj, idx) &
6577            result(SHT_rv)
6578        use iso_c_binding, only : C_INT64_T, C_PTR
6579        class(SidreDataStore) :: obj
6580        integer(C_INT64_T), value, intent(IN) :: idx
6581        type(SidreBuffer) :: SHT_rv
6582        ! splicer begin class.DataStore.method.get_buffer_int64_t
6583        type(C_PTR) :: SHT_prv
6584        SHT_prv = c_datastore_get_buffer(obj%cxxmem, &
6585            int(idx, C_INT64_t), SHT_rv%cxxmem)
6586        ! splicer end class.DataStore.method.get_buffer_int64_t
6587    end function datastore_get_buffer_int64_t
6588
6589    function datastore_create_buffer_empty(obj) &
6590            result(SHT_rv)
6591        use iso_c_binding, only : C_PTR
6592        class(SidreDataStore) :: obj
6593        type(SidreBuffer) :: SHT_rv
6594        ! splicer begin class.DataStore.method.create_buffer_empty
6595        type(C_PTR) :: SHT_prv
6596        SHT_prv = c_datastore_create_buffer_empty(obj%cxxmem, &
6597            SHT_rv%cxxmem)
6598        ! splicer end class.DataStore.method.create_buffer_empty
6599    end function datastore_create_buffer_empty
6600
6601    function datastore_create_buffer_from_type_int32_t(obj, type, &
6602            num_elems) &
6603            result(SHT_rv)
6604        use iso_c_binding, only : C_INT, C_INT32_T, C_INT64_T, C_PTR
6605        class(SidreDataStore) :: obj
6606        integer(C_INT), value, intent(IN) :: type
6607        integer(C_INT32_T), value, intent(IN) :: num_elems
6608        type(SidreBuffer) :: SHT_rv
6609        ! splicer begin class.DataStore.method.create_buffer_from_type_int32_t
6610        type(C_PTR) :: SHT_prv
6611        SHT_prv = c_datastore_create_buffer_from_type(obj%cxxmem, type, &
6612            int(num_elems, C_INT64_t), SHT_rv%cxxmem)
6613        ! splicer end class.DataStore.method.create_buffer_from_type_int32_t
6614    end function datastore_create_buffer_from_type_int32_t
6615
6616    function datastore_create_buffer_from_type_int64_t(obj, type, &
6617            num_elems) &
6618            result(SHT_rv)
6619        use iso_c_binding, only : C_INT, C_INT64_T, C_PTR
6620        class(SidreDataStore) :: obj
6621        integer(C_INT), value, intent(IN) :: type
6622        integer(C_INT64_T), value, intent(IN) :: num_elems
6623        type(SidreBuffer) :: SHT_rv
6624        ! splicer begin class.DataStore.method.create_buffer_from_type_int64_t
6625        type(C_PTR) :: SHT_prv
6626        SHT_prv = c_datastore_create_buffer_from_type(obj%cxxmem, type, &
6627            int(num_elems, C_INT64_t), SHT_rv%cxxmem)
6628        ! splicer end class.DataStore.method.create_buffer_from_type_int64_t
6629    end function datastore_create_buffer_from_type_int64_t
6630
6631    subroutine datastore_destroy_buffer_int32_t(obj, id)
6632        use iso_c_binding, only : C_INT32_T, C_INT64_T
6633        class(SidreDataStore) :: obj
6634        integer(C_INT32_T), value, intent(IN) :: id
6635        ! splicer begin class.DataStore.method.destroy_buffer_int32_t
6636        call c_datastore_destroy_buffer(obj%cxxmem, int(id, C_INT64_t))
6637        ! splicer end class.DataStore.method.destroy_buffer_int32_t
6638    end subroutine datastore_destroy_buffer_int32_t
6639
6640    subroutine datastore_destroy_buffer_int64_t(obj, id)
6641        use iso_c_binding, only : C_INT64_T
6642        class(SidreDataStore) :: obj
6643        integer(C_INT64_T), value, intent(IN) :: id
6644        ! splicer begin class.DataStore.method.destroy_buffer_int64_t
6645        call c_datastore_destroy_buffer(obj%cxxmem, int(id, C_INT64_t))
6646        ! splicer end class.DataStore.method.destroy_buffer_int64_t
6647    end subroutine datastore_destroy_buffer_int64_t
6648
6649    function datastore_generate_blueprint_index_0(obj, domain_path, &
6650            mesh_name, index_path, num_domains) &
6651            result(SHT_rv)
6652        use iso_c_binding, only : C_BOOL, C_INT
6653        class(SidreDataStore) :: obj
6654        character(len=*), intent(IN) :: domain_path
6655        character(len=*), intent(IN) :: mesh_name
6656        character(len=*), intent(IN) :: index_path
6657        integer(C_INT), value, intent(IN) :: num_domains
6658        logical :: SHT_rv
6659        ! splicer begin class.DataStore.method.generate_blueprint_index_0
6660        SHT_rv = c_datastore_generate_blueprint_index_0_bufferify(obj%cxxmem, &
6661            domain_path, len_trim(domain_path, kind=C_INT), mesh_name, &
6662            len_trim(mesh_name, kind=C_INT), index_path, &
6663            len_trim(index_path, kind=C_INT), num_domains)
6664        ! splicer end class.DataStore.method.generate_blueprint_index_0
6665    end function datastore_generate_blueprint_index_0
6666
6667#ifdef AXOM_USE_MPI
6668    function datastore_generate_blueprint_index_1(obj, comm, &
6669            domain_path, mesh_name, index_path) &
6670            result(SHT_rv)
6671        use iso_c_binding, only : C_BOOL, C_INT
6672        class(SidreDataStore) :: obj
6673        integer, value, intent(IN) :: comm
6674        character(len=*), intent(IN) :: domain_path
6675        character(len=*), intent(IN) :: mesh_name
6676        character(len=*), intent(IN) :: index_path
6677        logical :: SHT_rv
6678        ! splicer begin class.DataStore.method.generate_blueprint_index_1
6679        SHT_rv = c_datastore_generate_blueprint_index_1_bufferify(obj%cxxmem, &
6680            comm, domain_path, len_trim(domain_path, kind=C_INT), &
6681            mesh_name, len_trim(mesh_name, kind=C_INT), index_path, &
6682            len_trim(index_path, kind=C_INT))
6683        ! splicer end class.DataStore.method.generate_blueprint_index_1
6684    end function datastore_generate_blueprint_index_1
6685#endif
6686
6687    subroutine datastore_print(obj)
6688        class(SidreDataStore) :: obj
6689        ! splicer begin class.DataStore.method.print
6690        call c_datastore_print(obj%cxxmem)
6691        ! splicer end class.DataStore.method.print
6692    end subroutine datastore_print
6693
6694    ! Return pointer to C++ memory.
6695    function datastore_get_instance(obj) result (cxxptr)
6696        use iso_c_binding, only: C_PTR
6697        class(SidreDataStore), intent(IN) :: obj
6698        type(C_PTR) :: cxxptr
6699        cxxptr = obj%cxxmem%addr
6700    end function datastore_get_instance
6701
6702    subroutine datastore_set_instance(obj, cxxmem)
6703        use iso_c_binding, only: C_PTR
6704        class(SidreDataStore), intent(INOUT) :: obj
6705        type(C_PTR), intent(IN) :: cxxmem
6706        obj%cxxmem%addr = cxxmem
6707        obj%cxxmem%idtor = 0
6708    end subroutine datastore_set_instance
6709
6710    function datastore_associated(obj) result (rv)
6711        use iso_c_binding, only: c_associated
6712        class(SidreDataStore), intent(IN) :: obj
6713        logical rv
6714        rv = c_associated(obj%cxxmem%addr)
6715    end function datastore_associated
6716
6717    ! splicer begin class.DataStore.additional_functions
6718    ! splicer end class.DataStore.additional_functions
6719
6720    function name_is_valid(name) &
6721            result(SHT_rv)
6722        use iso_c_binding, only : C_BOOL
6723        character(len=*), intent(IN) :: name
6724        logical :: SHT_rv
6725        ! splicer begin function.name_is_valid
6726        SHT_rv = name .ne. " "
6727        ! splicer end function.name_is_valid
6728    end function name_is_valid
6729
6730    ! splicer begin additional_functions
6731    ! splicer end additional_functions
6732
6733    function buffer_eq(a,b) result (rv)
6734        use iso_c_binding, only: c_associated
6735        type(SidreBuffer), intent(IN) ::a,b
6736        logical :: rv
6737        if (c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6738            rv = .true.
6739        else
6740            rv = .false.
6741        endif
6742    end function buffer_eq
6743
6744    function buffer_ne(a,b) result (rv)
6745        use iso_c_binding, only: c_associated
6746        type(SidreBuffer), intent(IN) ::a,b
6747        logical :: rv
6748        if (.not. c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6749            rv = .true.
6750        else
6751            rv = .false.
6752        endif
6753    end function buffer_ne
6754
6755    function group_eq(a,b) result (rv)
6756        use iso_c_binding, only: c_associated
6757        type(SidreGroup), intent(IN) ::a,b
6758        logical :: rv
6759        if (c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6760            rv = .true.
6761        else
6762            rv = .false.
6763        endif
6764    end function group_eq
6765
6766    function group_ne(a,b) result (rv)
6767        use iso_c_binding, only: c_associated
6768        type(SidreGroup), intent(IN) ::a,b
6769        logical :: rv
6770        if (.not. c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6771            rv = .true.
6772        else
6773            rv = .false.
6774        endif
6775    end function group_ne
6776
6777    function view_eq(a,b) result (rv)
6778        use iso_c_binding, only: c_associated
6779        type(SidreView), intent(IN) ::a,b
6780        logical :: rv
6781        if (c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6782            rv = .true.
6783        else
6784            rv = .false.
6785        endif
6786    end function view_eq
6787
6788    function view_ne(a,b) result (rv)
6789        use iso_c_binding, only: c_associated
6790        type(SidreView), intent(IN) ::a,b
6791        logical :: rv
6792        if (.not. c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6793            rv = .true.
6794        else
6795            rv = .false.
6796        endif
6797    end function view_ne
6798
6799    function datastore_eq(a,b) result (rv)
6800        use iso_c_binding, only: c_associated
6801        type(SidreDataStore), intent(IN) ::a,b
6802        logical :: rv
6803        if (c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6804            rv = .true.
6805        else
6806            rv = .false.
6807        endif
6808    end function datastore_eq
6809
6810    function datastore_ne(a,b) result (rv)
6811        use iso_c_binding, only: c_associated
6812        type(SidreDataStore), intent(IN) ::a,b
6813        logical :: rv
6814        if (.not. c_associated(a%cxxmem%addr, b%cxxmem%addr)) then
6815            rv = .true.
6816        else
6817            rv = .false.
6818        endif
6819    end function datastore_ne
6820
6821end module axom_sidre
6822