diff --git a/src/h5cpp/core/iterator_config.cpp b/src/h5cpp/core/iterator_config.cpp index dd923a12f7..e1718caf0d 100644 --- a/src/h5cpp/core/iterator_config.cpp +++ b/src/h5cpp/core/iterator_config.cpp @@ -34,6 +34,14 @@ std::ostream &operator<<(std::ostream &stream,const IterationOrder &order) case IterationOrder::Decreasing: return stream<<"DECREASING"; case IterationOrder::Increasing: return stream<<"INCREASING"; case IterationOrder::Native: return stream<<"NATIVE"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -44,6 +52,14 @@ std::ostream &operator<<(std::ostream &stream,const IterationIndex &index) { case IterationIndex::CreationOrder: return stream<<"CREATION_ORDER"; case IterationIndex::Name: return stream<<"NAME"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } diff --git a/src/h5cpp/core/object_handle.cpp b/src/h5cpp/core/object_handle.cpp index 3ce32b3ff9..19f1cea865 100644 --- a/src/h5cpp/core/object_handle.cpp +++ b/src/h5cpp/core/object_handle.cpp @@ -308,6 +308,15 @@ ObjectHandle::Type ObjectHandle::get_type() const #endif case H5I_NTYPES: break; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } std::stringstream ss; ss << "ObjectHandle: unknown object type=" << type; diff --git a/src/h5cpp/dataspace/selection_manager.cpp b/src/h5cpp/dataspace/selection_manager.cpp index 9848fcc62f..5c91f46298 100644 --- a/src/h5cpp/dataspace/selection_manager.cpp +++ b/src/h5cpp/dataspace/selection_manager.cpp @@ -56,7 +56,16 @@ SelectionType SelectionManager::type() const { case H5S_SEL_POINTS:return SelectionType::Points; case H5S_SEL_HYPERSLABS:return SelectionType::Hyperslab; case H5S_SEL_ALL:return SelectionType::All; - case H5S_SEL_N:assert(false); // Added H5S_SEL_N to silence compiler + case H5S_SEL_N:assert(false); break; // Added H5S_SEL_N to silence compiler +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return {}; } diff --git a/src/h5cpp/dataspace/type.cpp b/src/h5cpp/dataspace/type.cpp index 5a3a08e213..24d56728e9 100644 --- a/src/h5cpp/dataspace/type.cpp +++ b/src/h5cpp/dataspace/type.cpp @@ -35,10 +35,17 @@ std::ostream &operator<<(std::ostream &stream, const Type &t) { case Type::Scalar: return stream << "SCALAR"; case Type::Simple: return stream << "SIMPLE"; case Type::NoData: return stream << "NODATA"; -#ifndef __clang__ - default:return stream; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop #endif } + return stream; } std::ostream &operator<<(std::ostream &stream, const SelectionType &t) { @@ -47,10 +54,17 @@ std::ostream &operator<<(std::ostream &stream, const SelectionType &t) { case SelectionType::Points: return stream << "POINTS"; case SelectionType::Hyperslab: return stream << "HYPERSLAB"; case SelectionType::All: return stream << "ALL"; -#ifndef __clang__ - default:return stream; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop #endif } + return stream; } @@ -64,10 +78,17 @@ std::ostream &operator<<(std::ostream &stream, const SelectionOperation &o) { case SelectionOperation::NotA: return stream << "NOTA"; case SelectionOperation::Append: return stream << "APPEND"; case SelectionOperation::Prepend: return stream << "PREPEND"; -#ifndef __clang__ - default:return stream; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop #endif } + return stream; } diff --git a/src/h5cpp/dataspace/view.hpp b/src/h5cpp/dataspace/view.hpp index 3f33407a81..00dcba578b 100644 --- a/src/h5cpp/dataspace/view.hpp +++ b/src/h5cpp/dataspace/view.hpp @@ -100,7 +100,7 @@ class DLL_EXPORT View { //! them by the new set of selections provided by the \c selections //! argument. //! - //! \throws std::runtime_error + //! \throws std::runtime_error in case of a failure void operator()(const SelectionList &selections) const; //! diff --git a/src/h5cpp/datatype/types.cpp b/src/h5cpp/datatype/types.cpp index af89f1f15b..4eedfda5b3 100644 --- a/src/h5cpp/datatype/types.cpp +++ b/src/h5cpp/datatype/types.cpp @@ -44,6 +44,15 @@ std::ostream &operator<<(std::ostream &stream, const Class &c) { case Class::Enum: return stream << "ENUM"; case Class::VarLength: return stream << "VARLENGTH"; case Class::Array: return stream << "ARRAY"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -54,6 +63,15 @@ std::ostream &operator<<(std::ostream &stream, const Order &o) { case Order::LE: return stream << "LE"; case Order::Vax: return stream << "VAX"; case Order::None: return stream << "NONE"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -62,6 +80,15 @@ std::ostream &operator<<(std::ostream &stream, const Sign &s) { switch (s) { case Sign::TwosComplement: return stream << "TWOS COMPLEMENT"; case Sign::Unsigned: return stream << "UNSIGNED"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -71,6 +98,15 @@ std::ostream &operator<<(std::ostream &stream, const Norm &n) { case Norm::Implied: return stream << "IMPLIED"; case Norm::MSBSet: return stream << "MSBSET"; case Norm::None: return stream << "NONE"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -80,6 +116,15 @@ std::ostream &operator<<(std::ostream &stream, const Pad &p) { case Pad::Background: return stream << "BACKGROUND"; case Pad::One: return stream << "ONE"; case Pad::Zero: return stream << "ZERO"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -89,6 +134,15 @@ std::ostream &operator<<(std::ostream &stream, const StringPad &pad) { case StringPad::NullPad: return stream << "NULLPAD"; case StringPad::NullTerm: return stream << "NULLTERM"; case StringPad::SpacePad: return stream << "SPACEPAD"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -97,6 +151,15 @@ std::ostream &operator<<(std::ostream &stream, const Direction &d) { switch (d) { case Direction::Ascend: return stream << "ASCEND"; case Direction::Descend: return stream << "DESCEND"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -105,6 +168,15 @@ std::ostream &operator<<(std::ostream &stream, const CharacterEncoding &enc) { switch (enc) { case CharacterEncoding::ASCII: return stream << "ASCII"; case CharacterEncoding::UTF8: return stream << "UTF8"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } diff --git a/src/h5cpp/file/types.cpp b/src/h5cpp/file/types.cpp index 6bad11f989..784afd5c63 100644 --- a/src/h5cpp/file/types.cpp +++ b/src/h5cpp/file/types.cpp @@ -41,6 +41,15 @@ std::ostream &operator<<(std::ostream &stream,const AccessFlags &flags) #if H5_VERSION_GE(1,10,0) case AccessFlags::SWMRRead: return stream<<"SWMR READ"; case AccessFlags::SWMRWrite: return stream<<"SWMR WRITE"; +#endif +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop #endif } return stream; @@ -86,6 +95,15 @@ std::ostream &operator<<(std::ostream &stream,const ImageFlags &flags) case ImageFlags::DontCopy: return stream<<"DONT COPY"; case ImageFlags::DontRelease: return stream<<"DONT RELEASE"; case ImageFlags::All: return stream<<"ALL"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -132,6 +150,15 @@ std::ostream &operator<<(std::ostream &stream,const SearchFlags &flags) case SearchFlags::File: return stream<<"FILE"; case SearchFlags::Group: return stream<<"GROUP"; case SearchFlags::Local: return stream<<"LOCAL"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } @@ -172,6 +199,15 @@ std::ostream &operator<<(std::ostream &stream,const Scope &scope) { case Scope::Global: return stream<<"GLOBAL"; case Scope::Local: return stream<<"LOCAL"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } diff --git a/src/h5cpp/filter/scaleoffset.cpp b/src/h5cpp/filter/scaleoffset.cpp index a28df0c371..5d4c2d84d1 100644 --- a/src/h5cpp/filter/scaleoffset.cpp +++ b/src/h5cpp/filter/scaleoffset.cpp @@ -82,6 +82,15 @@ std::ostream &operator<<(std::ostream &stream, const ScaleOffset::ScaleType &sca case ScaleOffset::ScaleType::FloatDScale: return stream << "FLOAT_DSCALE"; case ScaleOffset::ScaleType::FloatEScale: return stream << "FLOAT_ESCALE"; case ScaleOffset::ScaleType::Int: return stream << "INT"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } diff --git a/src/h5cpp/filter/szip.cpp b/src/h5cpp/filter/szip.cpp index 67e5f3c4a4..6df5d191a0 100644 --- a/src/h5cpp/filter/szip.cpp +++ b/src/h5cpp/filter/szip.cpp @@ -97,6 +97,15 @@ std::ostream &operator<<(std::ostream &stream,const SZip::OptionMask &flags) case SZip::OptionMask::Chip : return stream<<"CHIP_CODING"; case SZip::OptionMask::EntropyCoding : return stream<<"ENTROPY_CODING"; case SZip::OptionMask::NearestNeighbor : return stream<<"NEAREST_NEIGHBOR_CODING"; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return stream; } diff --git a/src/h5cpp/node/dataset.hpp b/src/h5cpp/node/dataset.hpp index 6db2598e56..7a163cdbd7 100644 --- a/src/h5cpp/node/dataset.hpp +++ b/src/h5cpp/node/dataset.hpp @@ -1055,7 +1055,7 @@ std::uint32_t Dataset::read_chunk(T &data, std::vector & offset, const property::DatasetTransferList &dtpl) const { - std::uint32_t filter_mask; + std::uint32_t filter_mask = 0; if(mem_type.get_class() == datatype::Class::Integer) { #if H5_VERSION_GE(2,0,0) @@ -1070,7 +1070,14 @@ std::uint32_t Dataset::read_chunk(T &data, error::Singleton::instance().throw_with_stack(ss.str()); } #else - read_chunk(data, mem_type, offset, dtpl); + if(chunk_storage_size(offset) <= byte_size){ + read_chunk(data, mem_type, offset, dtpl); + } + else { + std::stringstream ss; + ss<<"Failure to read chunk data from dataset ["< create_test(hdf5::ObjectHandle::Type ty case hdf5::ObjectHandle::Type::BadObject: case hdf5::ObjectHandle::Type::VirtualFileLayer: break; +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif + default: + break; +#ifdef __clang__ +#pragma clang diagnostic pop +#endif } return ptr_type(nullptr); } diff --git a/test/datatype/compound_test.cpp b/test/datatype/compound_test.cpp index e85e86e92b..d236fef717 100644 --- a/test/datatype/compound_test.cpp +++ b/test/datatype/compound_test.cpp @@ -148,7 +148,7 @@ SCENARIO("Creating a pixel datatype using the trait") { SCENARIO("Creating a pixel datatype using the trait with cref") { GIVEN("a pixel type") { - auto & type = datatype::get(); + const auto & type = datatype::create(); THEN("the compound type") { REQUIRE(type.size() == 3ul); } THEN("the type contains an INTEGER") { REQUIRE(type.has_class(datatype::Class::Integer)); diff --git a/test/file/driver_test.cpp b/test/file/driver_test.cpp index 1299ceb286..a9ebc92f5d 100644 --- a/test/file/driver_test.cpp +++ b/test/file/driver_test.cpp @@ -39,13 +39,14 @@ class MyPosixDriver : public hdf5::file::PosixDriver { public: MyPosixDriver() {} - - virtual hdf5::file::DriverID id() const noexcept override{ - return hdf5::file::DriverID::Custom; - } + virtual hdf5::file::DriverID id() const noexcept override; }; +hdf5::file::DriverID MyPosixDriver::id() const noexcept { + return hdf5::file::DriverID::Custom; +} + SCENARIO("Construction of a memory driver instance", "[file,h5cpp,driver]") { GIVEN("a default constructed instance") { file::MemoryDriver m; diff --git a/test/node/dataset_dynamic_type_io.cpp b/test/node/dataset_dynamic_type_io.cpp index 33937f6398..62850f20d6 100644 --- a/test/node/dataset_dynamic_type_io.cpp +++ b/test/node/dataset_dynamic_type_io.cpp @@ -54,11 +54,14 @@ struct Flip { std::int32_t data_[1]; }; -static bool operator==(const Flip& lhs, const Flip& rhs) { +bool operator==(const Flip& lhs, const Flip& rhs); +bool operator!=(const Flip& lhs, const Flip& rhs); + +bool operator==(const Flip& lhs, const Flip& rhs) { return std::equal(lhs.begin(), lhs.end(), rhs.begin()); } -static bool operator!=(const Flip& lhs, const Flip& rhs) { +bool operator!=(const Flip& lhs, const Flip& rhs) { return !(lhs == rhs); } @@ -105,6 +108,9 @@ SCENARIO("writing a vector with an dynamic element type") { dset.write(write); AND_THEN("we can read it back") { Elements read(2); + AND_THEN("the initial read element is different than the write element") { + REQUIRE((write != read)); + } dset.read(read); REQUIRE_THAT(read, Catch::Matchers::Equals(write)); }