MOAB: Mesh Oriented datABase
(version 5.4.1)
|
00001 #include <HDF5Common.hpp> 00002 #include <H5Spublic.h> 00003 #include <cassert> 00004 00005 namespace moab 00006 { 00007 00008 bool HDF5_can_append_hyperslabs() 00009 { 00010 hsize_t dim = 100; 00011 hid_t space = H5Screate_simple( 1, &dim, NULL ); 00012 bool result = false; 00013 00014 HDF5_Error_Func_Type fptr = 0; 00015 void* fdata = 0; 00016 #if defined( H5Eget_auto_vers ) && H5Eget_auto_vers > 1 00017 if( 0 <= H5Eget_auto( H5E_DEFAULT, &fptr, &fdata ) ) H5Eset_auto( H5E_DEFAULT, 0, 0 ); 00018 #else 00019 if( 0 <= H5Eget_auto( &fptr, &fdata ) ) H5Eset_auto( 0, 0 ); 00020 #endif 00021 00022 hsize_t start = 1, count = 5; 00023 H5Sselect_hyperslab( space, H5S_SELECT_SET, &start, 0, &count, 0 ); 00024 start = 20; 00025 if( 0 <= H5Sselect_hyperslab( space, H5S_SELECT_APPEND, &start, 0, &count, 0 ) ) result = true; 00026 00027 if( fptr ) 00028 { 00029 #if defined( H5Eset_auto_vers ) && H5Eset_auto_vers > 1 00030 H5Eset_auto( H5E_DEFAULT, fptr, fdata ); 00031 #else 00032 H5Eset_auto( fptr, fdata ); 00033 #endif 00034 } 00035 H5Sclose( space ); 00036 00037 return result; 00038 } 00039 00040 } // namespace moab