diff --git a/CMakeLists.txt b/CMakeLists.txt index 453414a4..9a6ba241 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -208,6 +208,11 @@ if(AARE_FETCH_FMT) CACHE BOOL "") FetchContent_MakeAvailable(fmt) set_property(TARGET fmt PROPERTY POSITION_INDEPENDENT_CODE ON) + if(MSVC) + # fmt 12.1.0 calls std::isalpha only to check that ADL finds it and drops + # the result, which MSVC's standard library marks [[nodiscard]] + target_compile_options(fmt PRIVATE /wd4834) + endif() else() find_package(fmt 8 REQUIRED) endif() diff --git a/include/aare/to_string.hpp b/include/aare/to_string.hpp index dbb0c09f..547ebc09 100644 --- a/include/aare/to_string.hpp +++ b/include/aare/to_string.hpp @@ -19,7 +19,7 @@ T string_to(const std::string &t, const std::string &unit) { double tval{0}; try { tval = std::stod(t); - } catch (const std::invalid_argument &e) { + } catch (const std::invalid_argument &) { throw std::runtime_error("Could not convert string to time"); } diff --git a/python/src/bind_Cluster.hpp b/python/src/bind_Cluster.hpp index afa9bfd1..49618bf2 100644 --- a/python/src/bind_Cluster.hpp +++ b/python/src/bind_Cluster.hpp @@ -13,9 +13,6 @@ namespace py = pybind11; using namespace aare; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - template void define_Cluster(py::module &m, const std::string &typestr) { @@ -140,5 +137,3 @@ void reduce_to_2x2(py::module &m) { row-major order. )doc"); } - -#pragma GCC diagnostic pop diff --git a/python/src/bind_ClusterCollector.hpp b/python/src/bind_ClusterCollector.hpp index 01dd03c2..fab91522 100644 --- a/python/src/bind_ClusterCollector.hpp +++ b/python/src/bind_ClusterCollector.hpp @@ -20,9 +20,6 @@ namespace py = pybind11; using namespace aare; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - template void define_ClusterCollector(py::module &m, const std::string &typestr) { @@ -42,5 +39,3 @@ void define_ClusterCollector(py::module &m, const std::string &typestr) { }, py::return_value_policy::take_ownership); } - -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/python/src/bind_ClusterFile.hpp b/python/src/bind_ClusterFile.hpp index c8544e9d..75c5458d 100644 --- a/python/src/bind_ClusterFile.hpp +++ b/python/src/bind_ClusterFile.hpp @@ -13,11 +13,6 @@ #include #include -// Disable warnings for unused parameters, as we ignore some -// in the __exit__ method -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - namespace py = pybind11; using namespace ::aare; @@ -171,14 +166,12 @@ void define_ClusterFile(py::module &m, const std::string &typestr) { .def("__enter__", [](ClusterFile &self) { return &self; }) .def("__exit__", [](ClusterFile &self, - const std::optional &exc_type, - const std::optional &exc_value, - const std::optional &traceback) { - self.close(); - }) + [[maybe_unused]] const std::optional &exc_type, + [[maybe_unused]] const std::optional + &exc_value, + [[maybe_unused]] const std::optional + &traceback) { self.close(); }) .def("__iter__", [](ClusterFile &self) { return &self; }) .def("__next__", [](File &self) { return ChunkIterator(self.chunks()).next(); }); } - -#pragma GCC diagnostic pop diff --git a/python/src/bind_ClusterFileSink.hpp b/python/src/bind_ClusterFileSink.hpp index b366886a..50600fcb 100644 --- a/python/src/bind_ClusterFileSink.hpp +++ b/python/src/bind_ClusterFileSink.hpp @@ -17,9 +17,6 @@ namespace py = pybind11; using namespace aare; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - template void define_ClusterFileSink(py::module &m, const std::string &typestr) { @@ -34,5 +31,3 @@ void define_ClusterFileSink(py::module &m, const std::string &typestr) { const std::filesystem::path &>()) .def("stop", &ClusterFileSink::stop); } - -#pragma GCC diagnostic pop diff --git a/python/src/bind_ClusterFinder.hpp b/python/src/bind_ClusterFinder.hpp index 034b1b88..8872db29 100644 --- a/python/src/bind_ClusterFinder.hpp +++ b/python/src/bind_ClusterFinder.hpp @@ -20,9 +20,6 @@ namespace py = pybind11; using namespace aare; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - template void define_ClusterFinder(py::module &m, const std::string &typestr) { @@ -92,5 +89,3 @@ void define_ClusterFinder(py::module &m, const std::string &typestr) { }, py::arg("frame").noconvert(), py::arg("frame_number") = 0); } - -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/python/src/bind_ClusterFinderMT.hpp b/python/src/bind_ClusterFinderMT.hpp index fdd4b580..7e662841 100644 --- a/python/src/bind_ClusterFinderMT.hpp +++ b/python/src/bind_ClusterFinderMT.hpp @@ -20,9 +20,6 @@ namespace py = pybind11; using namespace aare; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - template void define_ClusterFinderMT(py::module &m, const std::string &typestr) { @@ -55,7 +52,8 @@ void define_ClusterFinderMT(py::module &m, const std::string &typestr) { py::arg("frame").noconvert(), py::arg("frame_number") = 0) .def_property_readonly( "cluster_size", - [](ClusterFinderMT &self) { + []([[maybe_unused]] ClusterFinderMT + &self) { return py::make_tuple(ClusterSizeX, ClusterSizeY); }) .def("clear_pedestal", @@ -93,5 +91,3 @@ void define_ClusterFinderMT(py::module &m, const std::string &typestr) { py::arg("nSigma"), R"(sets the number of sigma for all cluster finders.)"); } - -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/python/src/bind_ClusterVector.hpp b/python/src/bind_ClusterVector.hpp index c7b2932a..13ad5a6d 100644 --- a/python/src/bind_ClusterVector.hpp +++ b/python/src/bind_ClusterVector.hpp @@ -18,9 +18,6 @@ namespace py = pybind11; using namespace aare; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - template void define_ClusterVector(py::module &m, const std::string &typestr) { @@ -123,7 +120,7 @@ void define_ClusterVector(py::module &m, const std::string &typestr) { "padding.") .def_property_readonly( "fmt", - [typestr](ClusterVector &self) { + [typestr]([[maybe_unused]] ClusterVector &self) { return fmt_format(); }, "PEP 3118 format string for one stored cluster.") @@ -228,5 +225,3 @@ void define_3x3_reduction(py::module &m) { )doc", py::arg("clustervector")); } - -#pragma GCC diagnostic pop diff --git a/python/src/file.hpp b/python/src/file.hpp index a493c910..030ba181 100644 --- a/python/src/file.hpp +++ b/python/src/file.hpp @@ -21,11 +21,6 @@ namespace py = pybind11; using namespace ::aare; -// Disable warnings for unused parameters, as we ignore some -// in the __exit__ method -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - void define_file_io_bindings(py::module &m) { PYBIND11_NUMPY_DTYPE(DetectorHeader, frameNumber, expLength, packetNumber, @@ -122,9 +117,12 @@ void define_file_io_bindings(py::module &m) { }) .def("__enter__", [](File &self) { return &self; }) .def("__exit__", - [](File &self, const std::optional &exc_type, - const std::optional &exc_value, - const std::optional &traceback) { + []([[maybe_unused]] File &self, + [[maybe_unused]] const std::optional &exc_type, + [[maybe_unused]] const std::optional + &exc_value, + [[maybe_unused]] const std::optional + &traceback) { // self.close(); }) .def("__iter__", [](File &self) { return &self; }) @@ -146,7 +144,7 @@ void define_file_io_bindings(py::module &m) { self.read_into( reinterpret_cast(image.mutable_data())); return image; - } catch (std::runtime_error &e) { + } catch (std::runtime_error &) { throw py::stop_iteration(); } }); @@ -160,6 +158,4 @@ void define_file_io_bindings(py::module &m) { .def_property_readonly("start", &ScanParameters::start) .def_property_readonly("stop", &ScanParameters::stop) .def_property_readonly("step", &ScanParameters::step); - -#pragma GCC diagnostic pop } \ No newline at end of file diff --git a/python/src/jungfrau_data_file.hpp b/python/src/jungfrau_data_file.hpp index 44ecd90c..1ff4ff9d 100644 --- a/python/src/jungfrau_data_file.hpp +++ b/python/src/jungfrau_data_file.hpp @@ -15,11 +15,6 @@ namespace py = pybind11; using namespace ::aare; -// Disable warnings for unused parameters, as we ignore some -// in the __exit__ method -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - auto read_dat_frame(JungfrauDataFile &self) { py::array_t header(1); py::array_t image({self.rows(), self.cols()}); @@ -94,20 +89,20 @@ void define_jungfrau_data_file_io_bindings(py::module &m) { )") .def("__enter__", [](JungfrauDataFile &self) { return &self; }) .def("__exit__", - [](JungfrauDataFile &self, - const std::optional &exc_type, - const std::optional &exc_value, - const std::optional &traceback) { + []([[maybe_unused]] JungfrauDataFile &self, + [[maybe_unused]] const std::optional &exc_type, + [[maybe_unused]] const std::optional + &exc_value, + [[maybe_unused]] const std::optional + &traceback) { // self.close(); }) .def("__iter__", [](JungfrauDataFile &self) { return &self; }) .def("__next__", [](JungfrauDataFile &self) { try { return read_dat_frame(self); - } catch (std::runtime_error &e) { + } catch (std::runtime_error &) { throw py::stop_iteration(); } }); } - -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/python/src/raw_sub_file.hpp b/python/src/raw_sub_file.hpp index 5359c054..da858058 100644 --- a/python/src/raw_sub_file.hpp +++ b/python/src/raw_sub_file.hpp @@ -61,11 +61,6 @@ auto read_n_frames_from_RawSubFile(RawSubFile &self, size_t n_frames) { return py::make_tuple(header, image); } -// Disable warnings for unused parameters, as we ignore some -// in the __exit__ method -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - void define_raw_sub_file_io_bindings(py::module &m) { py::class_(m, "RawSubFile") .def(py::init &exc_type, - const std::optional &exc_value, - const std::optional &traceback) {}) + []([[maybe_unused]] RawSubFile &self, + [[maybe_unused]] const std::optional &exc_type, + [[maybe_unused]] const std::optional + &exc_value, + [[maybe_unused]] const std::optional + &traceback) {}) .def("__iter__", [](RawSubFile &self) { return &self; }) .def("__next__", [](RawSubFile &self) { try { return read_frame_from_RawSubFile(self); - } catch (std::runtime_error &e) { + } catch (std::runtime_error &) { throw py::stop_iteration(); } }); } - -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/src/JungfrauDataFile.cpp b/src/JungfrauDataFile.cpp index 5c19cbc3..6e77a0a6 100644 --- a/src/JungfrauDataFile.cpp +++ b/src/JungfrauDataFile.cpp @@ -221,7 +221,7 @@ JungfrauDataHeader JungfrauDataFile::read_header() { throw std::runtime_error(LOCATION + "Could not read header from file" + m_fp.error_msg()); } - m_fp.seek(-header_size, SEEK_CUR); + m_fp.seek(-static_cast(header_size), SEEK_CUR); return header; } diff --git a/src/RawMasterFile.cpp b/src/RawMasterFile.cpp index 4259c899..6e86de47 100644 --- a/src/RawMasterFile.cpp +++ b/src/RawMasterFile.cpp @@ -23,7 +23,7 @@ RawFileNameComponents::RawFileNameComponents( try { auto pos = m_base_name.rfind('_'); m_file_index = std::stoi(m_base_name.substr(pos + 1)); - } catch (const std::invalid_argument &e) { + } catch (const std::invalid_argument &) { throw std::runtime_error(LOCATION + "Could not parse file index"); } @@ -370,7 +370,7 @@ void RawMasterFile::parse_json(std::istream &is) { try { m_quad = j.at("Quad"); - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { // keep the optional empty } // try{ @@ -384,7 +384,7 @@ void RawMasterFile::parse_json(std::istream &is) { if (digital_flag) { m_digital_samples = j.at("Digital Samples"); } - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { // keep the optional empty } try { @@ -393,7 +393,7 @@ void RawMasterFile::parse_json(std::istream &is) { if (m_transceiver_flag) { m_transceiver_samples = j.at("Transceiver Samples"); } - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { // keep the optional empty } try { @@ -414,7 +414,7 @@ void RawMasterFile::parse_json(std::istream &is) { m_scan_parameters .increment_stop(); // adjust for endpoint being included } - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { // not a scan } try { @@ -424,7 +424,7 @@ void RawMasterFile::parse_json(std::istream &is) { m_udp_port_types.value().push_back( string_to(elem)); } - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { // leave the optional empty } try { @@ -433,13 +433,13 @@ void RawMasterFile::parse_json(std::istream &is) { for (auto &elem : json_list_obj) { m_disabled_udp_ports.push_back(static_cast(elem)); } - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { m_disabled_udp_ports .clear(); // empty list if not present in master file } try { m_udp_interfaces_per_module = {j.at("Number of UDP Interfaces"), 1}; - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { if (m_type == DetectorType::Eiger && m_quad == 1) m_udp_interfaces_per_module = {2, 1}; else if (m_type == DetectorType::Eiger) { @@ -485,7 +485,7 @@ void RawMasterFile::parse_json(std::istream &is) { } } - } catch (const json::out_of_range &e) { + } catch (const json::out_of_range &) { // fill ROI with full detector size if not present in master file m_rois.push_back( {0, m_detector_layout.col * static_cast(m_pixels_x), 0, diff --git a/src/decode.test.cpp b/src/decode.test.cpp index dec59e08..3fc3637f 100644 --- a/src/decode.test.cpp +++ b/src/decode.test.cpp @@ -25,7 +25,7 @@ TEST_CASE("test_adc_sar_05_decode64to16") { // test all bits by iteratting through the bitlist std::vector bitlist = {29, 19, 28, 18, 31, 21, 27, 20, 24, 23, 25, 22}; for (size_t i = 0; i < bitlist.size(); i++) { - input = 1UL << bitlist[i]; + input = 1ULL << bitlist[i]; output = aare::adc_sar_05_decode64to16(input); CHECK(output == (1 << i)); } @@ -95,7 +95,7 @@ TEST_CASE("Each byte buffer decoder maps to its own bit order") { }; for (const auto &c : cases) { - uint64_t word = (1UL << c.bit0) | (1UL << c.bit1); + uint64_t word = (1ULL << c.bit0) | (1ULL << c.bit1); std::vector buffer(8); std::memcpy(buffer.data(), &word, sizeof(word)); aare::NDView bytes(buffer.data(), {1, 8});