comparison libinterp/octave-value/ov-fcn-handle.cc @ 20070:09ed6f7538dd

avoid needing to include hdf5 in public header files (bug #44370, #43180) * oct-hdf5-id.cc, oct-hdf5-id.h: New files. * libinterp/corefcn/module.mk: Update. * libgui/src/module.mk (src_libgui_src_la_CPPFLAGS): Remove $(HDF5_CPPFLAGS) from the list. * load-save.h (enum load_save_format_type): Always include LS_HDF5 in the list of values. * ls-hdf5.cc (read_hdf5_data, save_hdf5_data): Call check_hdf5_id_type. * oct-hdf5.h: Also #define HDF5_SAVE_TYPE. * ov.h, ov-base.h: Include oct-hdf5-id.h instead of oct-hdf5.h. Always declare load_hdf5 and save_hdf5 functions. * ov-base-int.cc, ov-base-int.h, ov-base.cc, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool-sparse.h, ov-bool.cc, ov-bool.h, ov-cell.cc, ov-cell.h, ov-class.cc, ov-class.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn-inline.cc, ov-fcn-inline.h, ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-int16.cc, ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-lazy-idx.h, ov-oncleanup.cc, ov-oncleanup.h, ov-range.cc ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h, ov-uint16.cc, ov-uint32.cc, ov-uint64.cc, ov-uint8.cc: Move #ifdef HAVE_HDF5 inside load_hdf5 and save_hdf5 functions. Always declare and define load_hdf5 and save_hdf5 functions.
author John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
date Thu, 26 Feb 2015 10:49:20 -0500
parents 4197fc428c7d
children 075a5e2e1ba5
comparison
equal deleted inserted replaced
20069:6b851f6acd55 20070:09ed6f7538dd
35 35
36 #include "defun.h" 36 #include "defun.h"
37 #include "error.h" 37 #include "error.h"
38 #include "gripes.h" 38 #include "gripes.h"
39 #include "input.h" 39 #include "input.h"
40 #include "oct-hdf5.h"
40 #include "oct-map.h" 41 #include "oct-map.h"
41 #include "ov-base.h" 42 #include "ov-base.h"
42 #include "ov-fcn-handle.h" 43 #include "ov-fcn-handle.h"
43 #include "ov-usr-fcn.h" 44 #include "ov-usr-fcn.h"
44 #include "pr-output.h" 45 #include "pr-output.h"
702 } 703 }
703 704
704 return success; 705 return success;
705 } 706 }
706 707
708 bool
709 octave_fcn_handle::save_hdf5 (octave_hdf5_id loc_id, const char *name,
710 bool save_as_floats)
711 {
707 #if defined (HAVE_HDF5) 712 #if defined (HAVE_HDF5)
708 bool 713
709 octave_fcn_handle::save_hdf5 (hid_t loc_id, const char *name,
710 bool save_as_floats)
711 {
712 bool retval = true; 714 bool retval = true;
713 715
714 hid_t group_hid = -1; 716 hid_t group_hid = -1;
715 #if HAVE_HDF5_18 717 #if HAVE_HDF5_18
716 group_hid = H5Gcreate (loc_id, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); 718 group_hid = H5Gcreate (loc_id, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
929 H5Sclose (space_hid); 931 H5Sclose (space_hid);
930 H5Tclose (type_hid); 932 H5Tclose (type_hid);
931 H5Gclose (group_hid); 933 H5Gclose (group_hid);
932 934
933 return retval; 935 return retval;
936
937 #else
938 gripe_save ("hdf5");
939 return false;
940 #endif
934 } 941 }
935 942
936 bool 943 bool
937 octave_fcn_handle::load_hdf5 (hid_t loc_id, const char *name) 944 octave_fcn_handle::load_hdf5 (octave_hdf5_id loc_id, const char *name)
938 { 945 {
946 #if defined (HAVE_HDF5)
947
939 bool success = true; 948 bool success = true;
940 949
941 hid_t group_hid, data_hid, space_hid, type_hid, type_class_hid, st_id; 950 hid_t group_hid, data_hid, space_hid, type_hid, type_class_hid, st_id;
942 hsize_t rank; 951 hsize_t rank;
943 int slen; 952 int slen;
1289 H5Tclose (type_hid); 1298 H5Tclose (type_hid);
1290 H5Sclose (space_hid); 1299 H5Sclose (space_hid);
1291 H5Gclose (group_hid); 1300 H5Gclose (group_hid);
1292 1301
1293 return success; 1302 return success;
1294 } 1303
1295 1304 #else
1305 gripe_load ("hdf5");
1306 return false;
1296 #endif 1307 #endif
1308 }
1297 1309
1298 /* 1310 /*
1299 %!test 1311 %!test
1300 %! a = 2; 1312 %! a = 2;
1301 %! f = @(x) a + x; 1313 %! f = @(x) a + x;