1 #include "H5Part.h"
2 #include "H5PartPrivate.h"
3 #include "H5Block.h"
4 #include "Underscore.h"
5
6 #if defined(F77_SINGLE_UNDERSCORE)
7 #define F77NAME(a,b) a
8 #elif defined(F77_CRAY_UNDERSCORE)
9 #define F77NAME(a,b) b
10 #elif defined(F77_NO_UNDERSCORE)
11 #else
12 #error Error, no way to determine how to construct fortran bindings
13 #endif
14
15 #if ! defined(F77_NO_UNDERSCORE)
16
17 #define h5bl_define3dlayout F77NAME ( \
18 h5bl_define3dlayout_, \
19 H5BL_DEFINE3DLAYOUT )
20 #define h5bl_define3dchunkdims F77NAME ( \
21 h5bl_define3dchunkdims_, \
22 H5BL_DEFINE3DCHUNKDIMS )
23 #define h5bl_get_partition_of_proc F77NAME ( \
24 h5bl_get_partition_of_proc_, \
25 H5BL_GET_PARTITION_OF_PROC )
26 #define h5bl_get_reduced_partition_of_proc F77NAME ( \
27 h5bl_get_reduced_partition_of_proc_,\
28 H5BL_GET_REDUCED_PARTITION_OF_PROC )
29 #define h5bl_get_proc_of F77NAME ( \
30 h5bl_get_proc_of_, \
31 H5BL_GET_PROC_OF )
32 #define h5bl_getnumfields F77NAME ( \
33 h5bl_getnumfields_, \
34 H5BL_GETNUMFIELDS )
35 #define h5bl_getfieldinfo F77NAME ( \
36 h5bl_getfieldinfo_, \
37 H5BL_GETFIELDINFO )
38 #define h5bl_writefieldattrib_string F77NAME ( \
39 h5bl_writefieldattrib_string_, \
40 H5BL_WRITEFIELDATTRIB_STRING )
41 #define h5bl_getnfieldattribs F77NAME ( \
42 h5bl_getnfieldattribs_, \
43 H5BL_GETNFIELDATTRIBS )
44 #define h5bl_getfieldattribinfo F77NAME ( \
45 h5bl_getfieldattribinfo_, \
46 h5bl_getfieldattribinfo )
47 #define h5bl_readfieldattrib_i8 F77NAME ( \
48 h5bl_readfieldattrib_i8_, \
49 H5BL_READFIELDATTRIB_I8 )
50 #define h5bl_readfieldattrib_r8 F77NAME ( \
51 h5bl_readfieldattrib_r8_, \
52 H5BL_READFIELDATTRIB_R8 )
53 #define h5bl_readfieldattrib_string F77NAME ( \
54 h5bl_readfieldattrib_string_, \
55 H5BL_READFIELDATTRIB_STRING )
56 #define h5bl_has_fielddata F77NAME ( \
57 h5bl_has_fielddata_, \
58 H5BL_HAS_FIELDDATA )
59 #define h5bl_3d_set_field_spacing F77NAME ( \
60 h5bl_3d_set_field_spacing_, \
61 H5BL_3D_SET_FIELD_SPACING )
62 #define h5bl_3d_get_field_spacing F77NAME ( \
63 h5bl_3d_get_field_spacing_, \
64 H5BL_3D_GET_FIELD_SPACING )
65 #define h5bl_3d_set_field_origin F77NAME ( \
66 h5bl_3d_set_field_origin_, \
67 H5BL_3D_SET_FIELD_ORIGIN )
68 #define h5bl_3d_get_field_origin F77NAME ( \
69 h5bl_3d_get_field_origin_, \
70 H5BL_3D_GET_FIELD_origin )
71 #endif
72
73 h5part_int64_t
h5bl_define3dlayout(h5part_int64_t * f,const h5part_int64_t * i_start,const h5part_int64_t * i_end,const h5part_int64_t * j_start,const h5part_int64_t * j_end,const h5part_int64_t * k_start,const h5part_int64_t * k_end)74 h5bl_define3dlayout (
75 h5part_int64_t *f,
76 const h5part_int64_t *i_start, /*!< start index of i */
77 const h5part_int64_t *i_end, /*!< end index of i */
78 const h5part_int64_t *j_start, /*!< start index of j */
79 const h5part_int64_t *j_end, /*!< end index of j */
80 const h5part_int64_t *k_start, /*!< start index of k */
81 const h5part_int64_t *k_end /*!< end index of k */
82 ) {
83
84 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
85
86 return H5BlockDefine3DFieldLayout (
87 filehandle,
88 *i_start-1, *i_end-1,
89 *j_start-1, *j_end-1,
90 *k_start-1, *k_end-1 );
91 }
92
93 h5part_int64_t
h5bl_define3dchunkdims(h5part_int64_t * f,const h5part_int64_t * i,const h5part_int64_t * j,const h5part_int64_t * k)94 h5bl_define3dchunkdims (
95 h5part_int64_t *f,
96 const h5part_int64_t *i,
97 const h5part_int64_t *j,
98 const h5part_int64_t *k
99 ) {
100
101 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
102
103 return H5BlockDefine3DChunkDims ( filehandle, *i, *j, *k );
104 }
105
106 h5part_int64_t
h5bl_get_partition_of_proc(h5part_int64_t * f,const h5part_int64_t * proc,h5part_int64_t * i_start,h5part_int64_t * i_end,h5part_int64_t * j_start,h5part_int64_t * j_end,h5part_int64_t * k_start,h5part_int64_t * k_end)107 h5bl_get_partition_of_proc (
108 h5part_int64_t *f, /*!< file handle */
109 const h5part_int64_t *proc,
110 h5part_int64_t *i_start, /*!< start index of i */
111 h5part_int64_t *i_end, /*!< end index of i */
112 h5part_int64_t *j_start, /*!< start index of j */
113 h5part_int64_t *j_end, /*!< end index of j */
114 h5part_int64_t *k_start, /*!< start index of k */
115 h5part_int64_t *k_end /*!< end index of k */
116 ) {
117
118 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
119
120 h5part_int64_t herr = H5Block3dGetPartitionOfProc (
121 filehandle,
122 *proc,
123 i_start, i_end, j_start, j_end, k_start, k_end );
124 if ( herr < 0 ) return herr;
125
126 (*i_start)++;
127 (*i_end)++;
128 (*j_start)++;
129 (*j_end)++;
130 (*k_start)++;
131 (*k_end)++;
132
133 return H5PART_SUCCESS;
134 }
135
136 h5part_int64_t
h5bl_get_reduced_partition_of_proc(h5part_int64_t * f,const h5part_int64_t * proc,h5part_int64_t * i_start,h5part_int64_t * i_end,h5part_int64_t * j_start,h5part_int64_t * j_end,h5part_int64_t * k_start,h5part_int64_t * k_end)137 h5bl_get_reduced_partition_of_proc (
138 h5part_int64_t *f,
139 const h5part_int64_t *proc,
140 h5part_int64_t *i_start,
141 h5part_int64_t *i_end,
142 h5part_int64_t *j_start,
143 h5part_int64_t *j_end,
144 h5part_int64_t *k_start,
145 h5part_int64_t *k_end
146 ) {
147
148 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
149
150 h5part_int64_t herr = H5Block3dGetReducedPartitionOfProc (
151 filehandle,
152 *proc,
153 i_start, i_end, j_start, j_end, k_start, k_end );
154 if ( herr < 0 ) return herr;
155
156 (*i_start)++;
157 (*i_end)++;
158 (*j_start)++;
159 (*j_end)++;
160 (*k_start)++;
161 (*k_end)++;
162
163 return H5PART_SUCCESS;
164 }
165
166 h5part_int64_t
h5bl_get_proc_of(h5part_int64_t * f,const h5part_int64_t * i,const h5part_int64_t * j,const h5part_int64_t * k)167 h5bl_get_proc_of (
168 h5part_int64_t *f,
169 const h5part_int64_t *i,
170 const h5part_int64_t *j,
171 const h5part_int64_t *k
172 ) {
173
174 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
175
176 return H5Block3dGetProcOf ( filehandle, (*i)-1, (*j)-1, (*k)-1 );
177 }
178
179 h5part_int64_t
h5bl_getnumfields(h5part_int64_t * f)180 h5bl_getnumfields (
181 h5part_int64_t *f /*!< file handle */
182 ) {
183
184 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
185
186 return H5BlockGetNumFields ( filehandle );
187 }
188
189 h5part_int64_t
h5bl_getfieldinfo(h5part_int64_t * f,const h5part_int64_t * idx,char * field_name,h5part_int64_t * grid_rank,h5part_int64_t * grid_dims,h5part_int64_t * field_dims,h5part_int64_t * type,const int l_field_name)190 h5bl_getfieldinfo (
191 h5part_int64_t *f,
192 const h5part_int64_t *idx,
193 char *field_name,
194 h5part_int64_t *grid_rank,
195 h5part_int64_t *grid_dims,
196 h5part_int64_t *field_dims,
197 h5part_int64_t *type,
198 const int l_field_name
199 ) {
200
201 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
202
203 h5part_int64_t herr = H5BlockGetFieldInfo (
204 filehandle, *idx, field_name, l_field_name,
205 grid_rank, grid_dims, field_dims, type );
206 _H5Part_strc2for ( field_name, l_field_name );
207 return herr;
208 }
209
210 h5part_int64_t
h5bl_writefieldattrib_string(h5part_int64_t * f,const char * field_name,const char * attrib_name,const char * attrib_value,const int l_field_name,const int l_attrib_name,const int l_attrib_value)211 h5bl_writefieldattrib_string (
212 h5part_int64_t *f,
213 const char *field_name,
214 const char *attrib_name,
215 const char *attrib_value,
216 const int l_field_name,
217 const int l_attrib_name,
218 const int l_attrib_value
219 ) {
220
221 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
222
223 char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
224 char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
225 char *attrib_value2=_H5Part_strdupfor2c( attrib_value,l_attrib_value );
226
227 h5part_int64_t herr = H5BlockWriteFieldAttribString (
228 filehandle, field_name2, attrib_name2, attrib_value2 );
229
230 free ( field_name2 );
231 free ( attrib_name2 );
232 free ( attrib_value2 );
233 return herr;
234 }
235
236
237 h5part_int64_t
h5bl_getnfieldattribs(h5part_int64_t * f,const char * field_name,const int l_field_name)238 h5bl_getnfieldattribs (
239 h5part_int64_t *f,
240 const char *field_name,
241 const int l_field_name
242 ) {
243
244 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
245
246 char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
247
248 h5part_int64_t herr = H5BlockGetNumFieldAttribs (
249 filehandle, field_name2 );
250
251 free ( field_name2 );
252 return herr;
253 }
254
255 h5part_int64_t
h5bl_getfieldattribinfo(h5part_int64_t * f,const char * field_name,const h5part_int64_t * attrib_idx,char * attrib_name,h5part_int64_t * attrib_nelem,const int l_field_name,const int l_attrib_name)256 h5bl_getfieldattribinfo (
257 h5part_int64_t *f,
258 const char *field_name,
259 const h5part_int64_t *attrib_idx,
260 char *attrib_name,
261 h5part_int64_t *attrib_nelem,
262 const int l_field_name,
263 const int l_attrib_name
264 ) {
265
266 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
267
268 h5part_int64_t attrib_type;
269
270 char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
271
272 h5part_int64_t herr = H5BlockGetFieldAttribInfo (
273 filehandle, field_name2, *attrib_idx,
274 attrib_name, l_attrib_name,
275 &attrib_type,
276 attrib_nelem );
277
278 _H5Part_strc2for ( attrib_name, l_attrib_name );
279
280 free ( field_name2 );
281 return herr;
282 }
283
284
285 h5part_int64_t
h5bl_readfieldattrib_i8(h5part_int64_t * f,const char * field_name,const char * attrib_name,h5part_int64_t * attrib_value,const int l_field_name,const int l_attrib_name)286 h5bl_readfieldattrib_i8 (
287 h5part_int64_t *f,
288 const char *field_name,
289 const char *attrib_name,
290 h5part_int64_t *attrib_value,
291 const int l_field_name,
292 const int l_attrib_name
293 ) {
294
295 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
296
297 char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
298 char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
299
300 h5part_int64_t herr = H5BlockReadFieldAttrib (
301 filehandle, field_name2, attrib_name2, attrib_value );
302
303 free ( field_name2 );
304 free ( attrib_name2 );
305 return herr;
306 }
307
308 h5part_int64_t
h5bl_readfieldattrib_r8(h5part_int64_t * f,const char * field_name,const char * attrib_name,h5part_float64_t * attrib_value,const int l_field_name,const int l_attrib_name)309 h5bl_readfieldattrib_r8 (
310 h5part_int64_t *f,
311 const char *field_name,
312 const char *attrib_name,
313 h5part_float64_t *attrib_value,
314 const int l_field_name,
315 const int l_attrib_name
316 ) {
317
318 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
319
320 char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
321 char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
322
323 h5part_int64_t herr = H5BlockReadFieldAttrib (
324 filehandle, field_name2, attrib_name2, attrib_value );
325
326 free ( field_name2 );
327 free ( attrib_name2 );
328 return herr;
329 }
330
331 h5part_int64_t
h5bl_readfieldattrib_string(h5part_int64_t * f,const char * field_name,const char * attrib_name,char * attrib_value,const int l_field_name,const int l_attrib_name,const int l_attrib_value)332 h5bl_readfieldattrib_string (
333 h5part_int64_t *f,
334 const char *field_name,
335 const char *attrib_name,
336 char *attrib_value,
337 const int l_field_name,
338 const int l_attrib_name,
339 const int l_attrib_value
340 ) {
341
342 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
343
344 char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
345 char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
346
347 h5part_int64_t herr = H5BlockReadFieldAttrib (
348 filehandle, field_name2, attrib_name2, attrib_value );
349
350 _H5Part_strc2for ( attrib_value, l_attrib_value );
351
352 free ( field_name2 );
353 free ( attrib_name2 );
354 return herr;
355 }
356
357 h5part_int64_t
h5bl_has_fielddata(h5part_int64_t * f)358 h5bl_has_fielddata (
359 h5part_int64_t *f
360 ) {
361
362 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
363
364 return H5BlockHasFieldData ( filehandle );
365 }
366
367 h5part_int64_t
h5bl_3d_get_field_spacing(h5part_int64_t * f,const char * field_name,h5part_float64_t * x,h5part_float64_t * y,h5part_float64_t * z,const int l_field_name)368 h5bl_3d_get_field_spacing (
369 h5part_int64_t *f,
370 const char *field_name,
371 h5part_float64_t *x,
372 h5part_float64_t *y,
373 h5part_float64_t *z,
374 const int l_field_name
375 ) {
376
377 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
378
379 char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
380
381 h5part_int64_t herr = H5Block3dGetFieldSpacing (
382 filehandle, field_name2, x, y, z );
383
384 free ( field_name2 );
385 return herr;
386 }
387
388 h5part_int64_t
h5bl_3d_set_field_spacing(h5part_int64_t * f,const char * field_name,const h5part_float64_t * x,const h5part_float64_t * y,const h5part_float64_t * z,const int l_field_name)389 h5bl_3d_set_field_spacing (
390 h5part_int64_t *f,
391 const char *field_name,
392 const h5part_float64_t *x,
393 const h5part_float64_t *y,
394 const h5part_float64_t *z,
395 const int l_field_name
396 ) {
397
398 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
399
400 char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
401
402 h5part_int64_t herr = H5Block3dSetFieldSpacing (
403 filehandle, field_name2, *x, *y, *z );
404
405 free ( field_name2 );
406 return herr;
407 }
408
409 h5part_int64_t
h5bl_3d_get_field_origin(h5part_int64_t * f,const char * field_name,h5part_float64_t * x,h5part_float64_t * y,h5part_float64_t * z,const int l_field_name)410 h5bl_3d_get_field_origin (
411 h5part_int64_t *f,
412 const char *field_name,
413 h5part_float64_t *x,
414 h5part_float64_t *y,
415 h5part_float64_t *z,
416 const int l_field_name
417 ) {
418
419 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
420
421 char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
422
423 h5part_int64_t herr = H5Block3dGetFieldOrigin (
424 filehandle, field_name2, x, y, z );
425
426 free ( field_name2 );
427 return herr;
428 }
429
430 h5part_int64_t
h5bl_3d_set_field_origin(h5part_int64_t * f,const char * field_name,const h5part_float64_t * x,const h5part_float64_t * y,const h5part_float64_t * z,const int l_field_name)431 h5bl_3d_set_field_origin (
432 h5part_int64_t *f,
433 const char *field_name,
434 const h5part_float64_t *x,
435 const h5part_float64_t *y,
436 const h5part_float64_t *z,
437 const int l_field_name
438 ) {
439
440 H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
441
442 char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
443
444 h5part_int64_t herr = H5Block3dSetFieldOrigin (
445 filehandle, field_name2, *x, *y, *z );
446
447 free ( field_name2 );
448 return herr;
449 }
450