comparison libinterp/corefcn/ls-hdf5.cc @ 21211:2cf8bc5c7017

use "#if defined (HAVE_FOO)" instead of "#if HAVE_FOO" for feature tests * configure.ac (HAVE_HDF5_INT2FLOAT_CONVERSIONS): AC_DEFINE here. * ls-hdf5.cc (HAVE_HDF5_INT2FLOAT_CONVERSION): Delete definition. * ls-hdf5.cc, ls-hdf5.h, ccolamd.cc, dmperm.cc, ov-base-int.cc, ov-bool-mat.cc, ov-bool-sparse.cc, ov-bool.cc, ov-cell.cc, ov-class.cc, ov-complex.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-fcn-handle.cc, ov-fcn-inline.cc, ov-float.cc, ov-flt-complex.cc, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-java.cc, ov-range.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, pt-eval.cc: Use #if defined (HAVE_FOO) instead of #if HAVE_FOO.
author John W. Eaton <jwe@octave.org>
date Sat, 06 Feb 2016 08:48:47 -0500
parents fcac5dbbf9ed
children 40de9f8f23a6
comparison
equal deleted inserted replaced
21210:4f7d3989c462 21211:2cf8bc5c7017
143 } 143 }
144 144
145 return retval; 145 return retval;
146 } 146 }
147 147
148 // Define this to 1 if/when HDF5 supports automatic conversion between
149 // integer and floating-point binary data:
150 #define HAVE_HDF5_INT2FLOAT_CONVERSIONS 0
151
152 // Given two compound types t1 and t2, determine whether they 148 // Given two compound types t1 and t2, determine whether they
153 // are compatible for reading/writing. This function only 149 // are compatible for reading/writing. This function only
154 // works for non-nested types composed of simple elements (ints, floats...), 150 // works for non-nested types composed of simple elements (ints, floats...),
155 // which is all we need it for 151 // which is all we need it for
156 152
192 void *err_func_data; 188 void *err_func_data;
193 189
194 // turn off error reporting temporarily, but save the error 190 // turn off error reporting temporarily, but save the error
195 // reporting function: 191 // reporting function:
196 192
197 #if HAVE_HDF5_18 193 #if defined (HAVE_HDF5_18)
198 H5Eget_auto (octave_H5E_DEFAULT, &err_func, &err_func_data); 194 H5Eget_auto (octave_H5E_DEFAULT, &err_func, &err_func_data);
199 H5Eset_auto (octave_H5E_DEFAULT, 0, 0); 195 H5Eset_auto (octave_H5E_DEFAULT, 0, 0);
200 #else 196 #else
201 H5Eget_auto (&err_func, &err_func_data); 197 H5Eget_auto (&err_func, &err_func_data);
202 H5Eset_auto (0, 0); 198 H5Eset_auto (0, 0);
210 retval = true; 206 retval = true;
211 H5Aclose (attr_id); 207 H5Aclose (attr_id);
212 } 208 }
213 209
214 // restore error reporting: 210 // restore error reporting:
215 #if HAVE_HDF5_18 211 #if defined (HAVE_HDF5_18)
216 H5Eset_auto (octave_H5E_DEFAULT, err_func, err_func_data); 212 H5Eset_auto (octave_H5E_DEFAULT, err_func, err_func_data);
217 #else 213 #else
218 H5Eset_auto (err_func, err_func_data); 214 H5Eset_auto (err_func, err_func_data);
219 #endif 215 #endif
220 return retval; 216 return retval;
234 void *err_func_data; 230 void *err_func_data;
235 231
236 // turn off error reporting temporarily, but save the error 232 // turn off error reporting temporarily, but save the error
237 // reporting function: 233 // reporting function:
238 234
239 #if HAVE_HDF5_18 235 #if defined (HAVE_HDF5_18)
240 H5Eget_auto (octave_H5E_DEFAULT, &err_func, &err_func_data); 236 H5Eget_auto (octave_H5E_DEFAULT, &err_func, &err_func_data);
241 H5Eset_auto (octave_H5E_DEFAULT, 0, 0); 237 H5Eset_auto (octave_H5E_DEFAULT, 0, 0);
242 #else 238 #else
243 H5Eget_auto (&err_func, &err_func_data); 239 H5Eget_auto (&err_func, &err_func_data);
244 H5Eset_auto (0, 0); 240 H5Eset_auto (0, 0);
256 retval = H5Aread (attr_id, type_id, buf) >= 0; 252 retval = H5Aread (attr_id, type_id, buf) >= 0;
257 H5Aclose (attr_id); 253 H5Aclose (attr_id);
258 } 254 }
259 255
260 // restore error reporting: 256 // restore error reporting:
261 #if HAVE_HDF5_18 257 #if defined (HAVE_HDF5_18)
262 H5Eset_auto (octave_H5E_DEFAULT, err_func, err_func_data); 258 H5Eset_auto (octave_H5E_DEFAULT, err_func, err_func_data);
263 #else 259 #else
264 H5Eset_auto (err_func, err_func_data); 260 H5Eset_auto (err_func, err_func_data);
265 #endif 261 #endif
266 return retval; 262 return retval;
326 322
327 H5Gget_objinfo (group_id, name, 1, &info); 323 H5Gget_objinfo (group_id, name, 1, &info);
328 324
329 if (info.type == H5G_GROUP && ident_valid) 325 if (info.type == H5G_GROUP && ident_valid)
330 { 326 {
331 #if HAVE_HDF5_18 327 #if defined (HAVE_HDF5_18)
332 subgroup_id = H5Gopen (group_id, name, octave_H5P_DEFAULT); 328 subgroup_id = H5Gopen (group_id, name, octave_H5P_DEFAULT);
333 #else 329 #else
334 subgroup_id = H5Gopen (group_id, name); 330 subgroup_id = H5Gopen (group_id, name);
335 #endif 331 #endif
336 332
340 goto done; 336 goto done;
341 } 337 }
342 338
343 if (hdf5_check_attr (subgroup_id, "OCTAVE_NEW_FORMAT")) 339 if (hdf5_check_attr (subgroup_id, "OCTAVE_NEW_FORMAT"))
344 { 340 {
345 #if HAVE_HDF5_18 341 #if defined (HAVE_HDF5_18)
346 data_id = H5Dopen (subgroup_id, "type", octave_H5P_DEFAULT); 342 data_id = H5Dopen (subgroup_id, "type", octave_H5P_DEFAULT);
347 #else 343 #else
348 data_id = H5Dopen (subgroup_id, "type"); 344 data_id = H5Dopen (subgroup_id, "type");
349 #endif 345 #endif
350 346
414 410
415 } 411 }
416 else if (info.type == H5G_DATASET && ident_valid) 412 else if (info.type == H5G_DATASET && ident_valid)
417 { 413 {
418 // For backwards compatibility. 414 // For backwards compatibility.
419 #if HAVE_HDF5_18 415 #if defined (HAVE_HDF5_18)
420 data_id = H5Dopen (group_id, name, octave_H5P_DEFAULT); 416 data_id = H5Dopen (group_id, name, octave_H5P_DEFAULT);
421 #else 417 #else
422 data_id = H5Dopen (group_id, name); 418 data_id = H5Dopen (group_id, name);
423 #endif 419 #endif
424 420
649 hdf5_callback_data d; 645 hdf5_callback_data d;
650 646
651 herr_t H5Giterate_retval = -1; 647 herr_t H5Giterate_retval = -1;
652 648
653 hsize_t num_obj = 0; 649 hsize_t num_obj = 0;
654 #if HAVE_HDF5_18 650 #if defined (HAVE_HDF5_18)
655 hid_t group_id = H5Gopen (hs.file_id, "/", octave_H5P_DEFAULT); 651 hid_t group_id = H5Gopen (hs.file_id, "/", octave_H5P_DEFAULT);
656 #else 652 #else
657 hid_t group_id = H5Gopen (hs.file_id, "/"); 653 hid_t group_id = H5Gopen (hs.file_id, "/");
658 #endif 654 #endif
659 H5Gget_num_objs (group_id, &num_obj); 655 H5Gget_num_objs (group_id, &num_obj);
721 717
722 hid_t as_id = H5Screate (H5S_SCALAR); 718 hid_t as_id = H5Screate (H5S_SCALAR);
723 719
724 if (as_id >= 0) 720 if (as_id >= 0)
725 { 721 {
726 #if HAVE_HDF5_18 722 #if defined (HAVE_HDF5_18)
727 hid_t a_id = H5Acreate (loc_id, attr_name, H5T_NATIVE_UCHAR, 723 hid_t a_id = H5Acreate (loc_id, attr_name, H5T_NATIVE_UCHAR,
728 as_id, octave_H5P_DEFAULT, octave_H5P_DEFAULT); 724 as_id, octave_H5P_DEFAULT, octave_H5P_DEFAULT);
729 #else 725 #else
730 hid_t a_id = H5Acreate (loc_id, attr_name, 726 hid_t a_id = H5Acreate (loc_id, attr_name,
731 H5T_NATIVE_UCHAR, as_id, octave_H5P_DEFAULT); 727 H5T_NATIVE_UCHAR, as_id, octave_H5P_DEFAULT);
757 753
758 hid_t as_id = H5Screate (H5S_SCALAR); 754 hid_t as_id = H5Screate (H5S_SCALAR);
759 755
760 if (as_id >= 0) 756 if (as_id >= 0)
761 { 757 {
762 #if HAVE_HDF5_18 758 #if defined (HAVE_HDF5_18)
763 hid_t a_id = H5Acreate (loc_id, attr_name, type_id, 759 hid_t a_id = H5Acreate (loc_id, attr_name, type_id,
764 as_id, octave_H5P_DEFAULT, octave_H5P_DEFAULT); 760 as_id, octave_H5P_DEFAULT, octave_H5P_DEFAULT);
765 #else 761 #else
766 hid_t a_id = H5Acreate (loc_id, attr_name, 762 hid_t a_id = H5Acreate (loc_id, attr_name,
767 type_id, as_id, octave_H5P_DEFAULT); 763 type_id, as_id, octave_H5P_DEFAULT);
806 if (! empty) 802 if (! empty)
807 return 0; 803 return 0;
808 804
809 space_hid = H5Screate_simple (1, &sz, 0); 805 space_hid = H5Screate_simple (1, &sz, 0);
810 if (space_hid < 0) return space_hid; 806 if (space_hid < 0) return space_hid;
811 #if HAVE_HDF5_18 807 #if defined (HAVE_HDF5_18)
812 data_hid = H5Dcreate (loc_id, name, H5T_NATIVE_IDX, space_hid, 808 data_hid = H5Dcreate (loc_id, name, H5T_NATIVE_IDX, space_hid,
813 octave_H5P_DEFAULT, octave_H5P_DEFAULT, octave_H5P_DEFAULT); 809 octave_H5P_DEFAULT, octave_H5P_DEFAULT, octave_H5P_DEFAULT);
814 #else 810 #else
815 data_hid = H5Dcreate (loc_id, name, H5T_NATIVE_IDX, space_hid, 811 data_hid = H5Dcreate (loc_id, name, H5T_NATIVE_IDX, space_hid,
816 octave_H5P_DEFAULT); 812 octave_H5P_DEFAULT);
842 { 838 {
843 if (! hdf5_check_attr (loc_id, "OCTAVE_EMPTY_MATRIX")) 839 if (! hdf5_check_attr (loc_id, "OCTAVE_EMPTY_MATRIX"))
844 return 0; 840 return 0;
845 841
846 hsize_t hdims, maxdims; 842 hsize_t hdims, maxdims;
847 #if HAVE_HDF5_18 843 #if defined (HAVE_HDF5_18)
848 hid_t data_hid = H5Dopen (loc_id, name, octave_H5P_DEFAULT); 844 hid_t data_hid = H5Dopen (loc_id, name, octave_H5P_DEFAULT);
849 #else 845 #else
850 hid_t data_hid = H5Dopen (loc_id, name); 846 hid_t data_hid = H5Dopen (loc_id, name);
851 #endif 847 #endif
852 hid_t space_id = H5Dget_space (data_hid); 848 hid_t space_id = H5Dget_space (data_hid);
871 } 867 }
872 868
873 // save_type_to_hdf5 is not currently used, since hdf5 doesn't yet support 869 // save_type_to_hdf5 is not currently used, since hdf5 doesn't yet support
874 // automatic float<->integer conversions: 870 // automatic float<->integer conversions:
875 871
876 #if HAVE_HDF5_INT2FLOAT_CONVERSIONS 872 #if defined (HAVE_HDF5_INT2FLOAT_CONVERSIONS)
877 873
878 // return the HDF5 type id corresponding to the Octave save_type 874 // return the HDF5 type id corresponding to the Octave save_type
879 875
880 octave_hdf5_id 876 octave_hdf5_id
881 save_type_to_hdf5 (save_type st) 877 save_type_to_hdf5 (save_type st)
932 if (val.is_diag_matrix () || val.is_perm_matrix () 928 if (val.is_diag_matrix () || val.is_perm_matrix ()
933 || val.type_id () == octave_lazy_index::static_type_id ()) 929 || val.type_id () == octave_lazy_index::static_type_id ())
934 val = val.full_value (); 930 val = val.full_value ();
935 931
936 std::string t = val.type_name (); 932 std::string t = val.type_name ();
937 #if HAVE_HDF5_18 933 #if defined (HAVE_HDF5_18)
938 data_id = H5Gcreate (loc_id, name.c_str (), octave_H5P_DEFAULT, octave_H5P_DEFAULT, 934 data_id = H5Gcreate (loc_id, name.c_str (), octave_H5P_DEFAULT, octave_H5P_DEFAULT,
939 octave_H5P_DEFAULT); 935 octave_H5P_DEFAULT);
940 #else 936 #else
941 data_id = H5Gcreate (loc_id, name.c_str (), 0); 937 data_id = H5Gcreate (loc_id, name.c_str (), 0);
942 #endif 938 #endif
950 946
951 dims[0] = 0; 947 dims[0] = 0;
952 space_id = H5Screate_simple (0 , dims, 0); 948 space_id = H5Screate_simple (0 , dims, 0);
953 if (space_id < 0) 949 if (space_id < 0)
954 goto error_cleanup; 950 goto error_cleanup;
955 #if HAVE_HDF5_18 951 #if defined (HAVE_HDF5_18)
956 data_type_id = H5Dcreate (data_id, "type", type_id, space_id, 952 data_type_id = H5Dcreate (data_id, "type", type_id, space_id,
957 octave_H5P_DEFAULT, octave_H5P_DEFAULT, octave_H5P_DEFAULT); 953 octave_H5P_DEFAULT, octave_H5P_DEFAULT, octave_H5P_DEFAULT);
958 #else 954 #else
959 data_type_id = H5Dcreate (data_id, "type", type_id, space_id, octave_H5P_DEFAULT); 955 data_type_id = H5Dcreate (data_id, "type", type_id, space_id, octave_H5P_DEFAULT);
960 #endif 956 #endif