Skip to content

Commit 1d2fca9

Browse files
authored
Merge pull request #1702 from brtnfld/master
Update H5Gget_objinfo and H5Dvlen_reclaim to newer HDF5 APIs
2 parents 525ab4c + 1a6228f commit 1d2fca9

File tree

7 files changed

+225
-14
lines changed

7 files changed

+225
-14
lines changed

h5_test/tst_h_dimscales2.c

Lines changed: 111 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ herr_t alien_visitor(hid_t did, unsigned dim, hid_t dsid,
2424
void *visitor_data)
2525
{
2626
char name1[STR_LEN];
27-
H5G_stat_t statbuf;
2827
HDF5_OBJID_T *objid = visitor_data;
2928

3029
/* This should get "/var1", the name of the dataset that the scale
@@ -33,28 +32,42 @@ herr_t alien_visitor(hid_t did, unsigned dim, hid_t dsid,
3332
if (strcmp(&name1[1], VAR1_NAME)) ERR;
3433

3534
/* Get more info on the dimscale object.*/
35+
#if H5_VERSION_GE(1,12,0)
36+
H5O_info2_t statbuf;
37+
if (H5Oget_info3(dsid, &statbuf, H5O_INFO_BASIC ) < 0) ERR;
38+
objid->fileno = statbuf.fileno;
39+
objid->token = statbuf.token;
40+
#else
41+
H5G_stat_t statbuf;
3642
if (H5Gget_objinfo(dsid, ".", 1, &statbuf) < 0) ERR;
3743
objid->fileno[0] = statbuf.fileno[0];
3844
objid->objno[0] = statbuf.objno[0];
3945
objid->fileno[1] = statbuf.fileno[1];
4046
objid->objno[1] = statbuf.objno[1];
47+
#endif
4148

4249
return 0;
4350
}
4451

4552
herr_t alien_visitor2(hid_t did, unsigned dim, hid_t dsid, void *visitor_data)
4653
{
47-
H5G_stat_t statbuf;
4854
HDF5_OBJID_T *objid = visitor_data;
4955

5056
/* Get obj id of the dimscale object. THis will be used later to
5157
* match dimensions to dimscales. */
58+
#if H5_VERSION_GE(1,12,0)
59+
H5O_info2_t statbuf;
60+
if (H5Oget_info3(dsid, &statbuf, H5O_INFO_BASIC ) < 0) ERR;
61+
objid->fileno = statbuf.fileno;
62+
objid->token = statbuf.token;
63+
#else
64+
H5G_stat_t statbuf;
5265
if (H5Gget_objinfo(dsid, ".", 1, &statbuf) < 0) ERR;
5366
objid->fileno[0] = statbuf.fileno[0];
5467
objid->objno[0] = statbuf.objno[0];
5568
objid->fileno[1] = statbuf.fileno[1];
5669
objid->objno[1] = statbuf.objno[1];
57-
70+
#endif
5871
return 0;
5972
}
6073

@@ -112,7 +125,11 @@ main()
112125
char label[STR_LEN+1];
113126
int num_scales;
114127
hsize_t dims[1], maxdims[1];
128+
#if H5_VERSION_GE(1,12,0)
129+
H5O_info2_t statbuf;
130+
#else
115131
H5G_stat_t statbuf;
132+
#endif
116133
HDF5_OBJID_T dimscale_obj, vars_dimscale_obj;
117134

118135
/* Open the file. */
@@ -153,11 +170,17 @@ main()
153170

154171
/* fileno and objno uniquely identify an object and a
155172
* HDF5 file. */
173+
#if H5_VERSION_GE(1,12,0)
174+
if (H5Oget_info3(datasetid, &statbuf, H5O_INFO_BASIC) < 0) ERR;
175+
dimscale_obj.fileno = statbuf.fileno;
176+
dimscale_obj.token = statbuf.token;
177+
#else
156178
if (H5Gget_objinfo(datasetid, ".", 1, &statbuf) < 0) ERR;
157179
dimscale_obj.fileno[0] = statbuf.fileno[0];
158180
dimscale_obj.objno[0] = statbuf.objno[0];
159181
dimscale_obj.fileno[1] = statbuf.fileno[1];
160182
dimscale_obj.objno[1] = statbuf.objno[1];
183+
#endif
161184
}
162185
else
163186
{
@@ -169,11 +192,19 @@ main()
169192
/* Go through all dimscales for this var and learn about them. */
170193
if (H5DSiterate_scales(datasetid, 0, NULL, alien_visitor,
171194
&vars_dimscale_obj) < 0) ERR;
195+
#if H5_VERSION_GE(1,12,0)
196+
int token_cmp;
197+
if (H5Otoken_cmp(datasetid,
198+
&vars_dimscale_obj.token,
199+
&dimscale_obj.token, &token_cmp) < 0) ERR;
200+
if (vars_dimscale_obj.fileno != dimscale_obj.fileno ||
201+
token_cmp != 0) ERR;
202+
#else
172203
if (vars_dimscale_obj.fileno[0] != dimscale_obj.fileno[0] ||
173204
vars_dimscale_obj.objno[0] != dimscale_obj.objno[0] ||
174205
vars_dimscale_obj.fileno[1] != dimscale_obj.fileno[1] ||
175206
vars_dimscale_obj.objno[1] != dimscale_obj.objno[1]) ERR;
176-
207+
#endif
177208
/* There's also a label for dimension 0. */
178209
if (H5DSget_label(datasetid, 0, label, STR_LEN) < 0) ERR;
179210
}
@@ -259,7 +290,11 @@ main()
259290
htri_t is_scale;
260291
int num_scales;
261292
hsize_t dims[NDIMS2], maxdims[NDIMS2];
293+
#if H5_VERSION_GE(1,12,0)
294+
H5O_info2_t statbuf;
295+
#else
262296
H5G_stat_t statbuf;
297+
#endif
263298
HDF5_OBJID_T dimscale_obj[2], vars_dimscale_obj[2];
264299
int dimscale_cnt = 0;
265300
int d, ndims;
@@ -297,11 +332,17 @@ main()
297332
{
298333
/* fileno and objno uniquely identify an object and a
299334
* HDF5 file. */
335+
#if H5_VERSION_GE(1,12,0)
336+
if (H5Oget_info3(datasetid, &statbuf, H5O_INFO_BASIC) < 0) ERR;
337+
dimscale_obj[dimscale_cnt].fileno = statbuf.fileno;
338+
dimscale_obj[dimscale_cnt].token = statbuf.token;
339+
#else
300340
if (H5Gget_objinfo(datasetid, ".", 1, &statbuf) < 0) ERR;
301341
dimscale_obj[dimscale_cnt].fileno[0] = statbuf.fileno[0];
302342
dimscale_obj[dimscale_cnt].objno[0] = statbuf.objno[0];
303343
dimscale_obj[dimscale_cnt].fileno[1] = statbuf.fileno[1];
304344
dimscale_obj[dimscale_cnt].objno[1] = statbuf.objno[1];
345+
#endif
305346
dimscale_cnt++;
306347
}
307348
else
@@ -322,10 +363,19 @@ main()
322363
/* Verify that the object ids passed from the
323364
* alien_visitor2 function match the ones we found
324365
* for the lat and lon datasets. */
366+
#if H5_VERSION_GE(1,12,0)
367+
int token_cmp;
368+
if (H5Otoken_cmp(datasetid,
369+
&vars_dimscale_obj[d].token,
370+
&dimscale_obj[d].token, &token_cmp) < 0) ERR;
371+
if (vars_dimscale_obj[d].fileno != dimscale_obj[d].fileno ||
372+
token_cmp != 0) ERR;
373+
#else
325374
if (vars_dimscale_obj[d].fileno[0] != dimscale_obj[d].fileno[0] ||
326375
vars_dimscale_obj[d].objno[0] != dimscale_obj[d].objno[0]) ERR;
327376
if (vars_dimscale_obj[d].fileno[1] != dimscale_obj[d].fileno[1] ||
328377
vars_dimscale_obj[d].objno[1] != dimscale_obj[d].objno[1]) ERR;
378+
#endif
329379
}
330380
}
331381
if (H5Dclose(datasetid) < 0) ERR;
@@ -363,7 +413,11 @@ main()
363413
char obj_name[STR_LEN + 1];
364414
htri_t is_scale;
365415
int num_scales;
416+
#if H5_VERSION_GE(1,12,0)
417+
H5O_info2_t statbuf;
418+
#else
366419
H5G_stat_t statbuf;
420+
#endif
367421
HDF5_OBJID_T dimscale_obj[2], vars_dimscale_obj[2];
368422
int dimscale_cnt = 0;
369423
int d, ndims;
@@ -476,11 +530,17 @@ main()
476530
{
477531
/* fileno and objno uniquely identify an object and a
478532
* HDF5 file. */
533+
#if H5_VERSION_GE(1,12,0)
534+
if (H5Oget_info3(datasetid, &statbuf, H5O_INFO_BASIC) < 0) ERR;
535+
dimscale_obj[dimscale_cnt].fileno = statbuf.fileno;
536+
dimscale_obj[dimscale_cnt].token = statbuf.token;
537+
#else
479538
if (H5Gget_objinfo(datasetid, ".", 1, &statbuf) < 0) ERR;
480539
dimscale_obj[dimscale_cnt].fileno[0] = statbuf.fileno[0];
481540
dimscale_obj[dimscale_cnt].objno[0] = statbuf.objno[0];
482541
dimscale_obj[dimscale_cnt].fileno[1] = statbuf.fileno[1];
483542
dimscale_obj[dimscale_cnt].objno[1] = statbuf.objno[1];
543+
#endif
484544
dimscale_cnt++;
485545
}
486546
else
@@ -501,10 +561,19 @@ main()
501561
/* Verify that the object ids passed from the
502562
* alien_visitor2 function match the ones we found
503563
* for the lat and lon datasets. */
564+
#if H5_VERSION_GE(1,12,0)
565+
int token_cmp;
566+
if (H5Otoken_cmp(datasetid,
567+
&vars_dimscale_obj[d].token,
568+
&dimscale_obj[d].token, &token_cmp) < 0) ERR;
569+
if (vars_dimscale_obj[d].fileno != dimscale_obj[d].fileno ||
570+
token_cmp != 0) ERR;
571+
#else
504572
if (vars_dimscale_obj[d].fileno[0] != dimscale_obj[d].fileno[0] ||
505573
vars_dimscale_obj[d].objno[0] != dimscale_obj[d].objno[0]) ERR;
506574
if (vars_dimscale_obj[d].fileno[1] != dimscale_obj[d].fileno[1] ||
507575
vars_dimscale_obj[d].objno[1] != dimscale_obj[d].objno[1]) ERR;
576+
#endif
508577
}
509578

510579
}
@@ -666,7 +735,11 @@ main()
666735
htri_t is_scale;
667736
int num_scales;
668737
hsize_t maxdims[DIMS_3];
738+
#if H5_VERSION_GE(1,12,0)
739+
H5O_info2_t statbuf;
740+
#else
669741
H5G_stat_t statbuf;
742+
#endif
670743
HDF5_OBJID_T dimscale_obj[NUM_DIMSCALES1], vars_dimscale_obj[NUM_DIMSCALES1];
671744
int dimscale_cnt = 0;
672745
int d, ndims;
@@ -777,11 +850,17 @@ main()
777850
{
778851
/* fileno and objno uniquely identify an object and a
779852
* HDF5 file. */
853+
#if H5_VERSION_GE(1,12,0)
854+
if (H5Oget_info3(datasetid, &statbuf, H5O_INFO_BASIC) < 0) ERR;
855+
dimscale_obj[dimscale_cnt].fileno = statbuf.fileno;
856+
dimscale_obj[dimscale_cnt].token = statbuf.token;
857+
#else
780858
if (H5Gget_objinfo(datasetid, ".", 1, &statbuf) < 0) ERR;
781859
dimscale_obj[dimscale_cnt].fileno[0] = statbuf.fileno[0];
782860
dimscale_obj[dimscale_cnt].objno[0] = statbuf.objno[0];
783861
dimscale_obj[dimscale_cnt].fileno[1] = statbuf.fileno[1];
784862
dimscale_obj[dimscale_cnt].objno[1] = statbuf.objno[1];
863+
#endif
785864
dimscale_cnt++;
786865
}
787866
else
@@ -802,10 +881,19 @@ main()
802881
/* Verify that the object ids passed from the
803882
* alien_visitor2 function match the ones we found
804883
* for the lat and lon datasets. */
884+
#if H5_VERSION_GE(1,12,0)
885+
int token_cmp;
886+
if (H5Otoken_cmp(datasetid,
887+
&vars_dimscale_obj[d].token,
888+
&dimscale_obj[d].token, &token_cmp) < 0) ERR;
889+
if (vars_dimscale_obj[d].fileno != dimscale_obj[d].fileno ||
890+
token_cmp != 0) ERR;
891+
#else
805892
if (vars_dimscale_obj[d].fileno[0] != dimscale_obj[d].fileno[0] ||
806893
vars_dimscale_obj[d].objno[0] != dimscale_obj[d].objno[0]) ERR;
807894
if (vars_dimscale_obj[d].fileno[1] != dimscale_obj[d].fileno[1] ||
808895
vars_dimscale_obj[d].objno[1] != dimscale_obj[d].objno[1]) ERR;
896+
#endif
809897
}
810898
}
811899
if (H5Dclose(datasetid) < 0) ERR;
@@ -851,7 +939,11 @@ main()
851939
htri_t is_scale;
852940
int num_scales;
853941
hsize_t maxdims[DIMS_3];
942+
#if H5_VERSION_GE(1,12,0)
943+
H5O_info2_t statbuf;
944+
#else
854945
H5G_stat_t statbuf;
946+
#endif
855947
HDF5_OBJID_T dimscale_obj[NUM_DIMSCALES2], vars_dimscale_obj[NUM_DIMSCALES2];
856948
int dimscale_cnt = 0;
857949
int d, ndims;
@@ -962,11 +1054,17 @@ main()
9621054
{
9631055
/* fileno and objno uniquely identify an object and a
9641056
* HDF5 file. */
1057+
#if H5_VERSION_GE(1,12,0)
1058+
if (H5Oget_info3(datasetid, &statbuf, H5O_INFO_BASIC) < 0) ERR;
1059+
dimscale_obj[dimscale_cnt].fileno = statbuf.fileno;
1060+
dimscale_obj[dimscale_cnt].token = statbuf.token;
1061+
#else
9651062
if (H5Gget_objinfo(datasetid, ".", 1, &statbuf) < 0) ERR;
9661063
dimscale_obj[dimscale_cnt].fileno[0] = statbuf.fileno[0];
9671064
dimscale_obj[dimscale_cnt].objno[0] = statbuf.objno[0];
9681065
dimscale_obj[dimscale_cnt].fileno[1] = statbuf.fileno[1];
9691066
dimscale_obj[dimscale_cnt].objno[1] = statbuf.objno[1];
1067+
#endif
9701068
dimscale_cnt++;
9711069
}
9721070
else
@@ -987,10 +1085,19 @@ main()
9871085
/* Verify that the object ids passed from the
9881086
* alien_visitor2 function match the ones we found
9891087
* for the lat and lon datasets. */
1088+
#if H5_VERSION_GE(1,12,0)
1089+
int token_cmp;
1090+
if (H5Otoken_cmp(datasetid,
1091+
&vars_dimscale_obj[d].token,
1092+
&dimscale_obj[d].token, &token_cmp) < 0) ERR;
1093+
if (vars_dimscale_obj[d].fileno != dimscale_obj[d].fileno ||
1094+
token_cmp != 0) ERR;
1095+
#else
9901096
if (vars_dimscale_obj[d].fileno[0] != dimscale_obj[d].fileno[0] ||
9911097
vars_dimscale_obj[d].objno[0] != dimscale_obj[d].objno[0]) ERR;
9921098
if (vars_dimscale_obj[d].fileno[1] != dimscale_obj[d].fileno[1] ||
9931099
vars_dimscale_obj[d].objno[1] != dimscale_obj[d].objno[1]) ERR;
1100+
#endif
9941101
}
9951102
}
9961103
if (H5Dclose(datasetid) < 0) ERR;

0 commit comments

Comments
 (0)