From 261838a72bfc7a30a1251a26e2501eaf61722a2b Mon Sep 17 00:00:00 2001 From: Pierre Dejoue Date: Sat, 12 Aug 2023 10:19:27 +0200 Subject: [PATCH] Fix warnings in the GUI --- cmake/config/compiler_options.cmake | 3 ++- src/gui/CMakeLists.txt | 5 +++++ src/gui/src/draw_grid.h | 2 +- src/gui/src/err_window.cpp | 2 +- src/gui/src/goal_window.cpp | 2 +- src/gui/src/grid_info.cpp | 17 +++++++++-------- src/gui/src/grid_window.cpp | 2 +- src/gui/src/imgui_wrap.h | 7 +++++++ src/gui/src/main.cpp | 4 ++-- src/gui/src/pfd_wrap.h | 7 +++++++ src/gui/src/settings_window.cpp | 2 +- src/picross/src/line_alternatives.cpp | 23 ++++++++++------------- 12 files changed, 47 insertions(+), 29 deletions(-) create mode 100644 src/gui/src/imgui_wrap.h create mode 100644 src/gui/src/pfd_wrap.h diff --git a/cmake/config/compiler_options.cmake b/cmake/config/compiler_options.cmake index 0d6a40a..c6a036f 100644 --- a/cmake/config/compiler_options.cmake +++ b/cmake/config/compiler_options.cmake @@ -43,7 +43,8 @@ function( -Wpedantic # warn if non-standard C++ is used -Wconversion # warn on type conversions that may lose data -Wsign-conversion # warn on sign conversions - -Wnull-dereference # warn if a null dereference is detected + # Commented out due to a false positive in line_alternatives.cpp with GNU GCC/G++ 11.4.0 + # -Wnull-dereference # warn if a null dereference is detected -Wdouble-promotion # warn if float is implicit promoted to double -Wformat=2 # warn on security issues around functions that format output (ie printf) -Wimplicit-fallthrough # warn on statements that fallthrough without an explicit annotation diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index ee6df75..7f5a174 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -30,6 +30,11 @@ if(PICROSS_GUI_IMGUI_DEMO) ) endif() +target_include_directories(picross_solver + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src +) + set_target_warnings(picross_solver ON) target_link_libraries(picross_solver diff --git a/src/gui/src/draw_grid.h b/src/gui/src/draw_grid.h index df0a5e6..b902b36 100644 --- a/src/gui/src/draw_grid.h +++ b/src/gui/src/draw_grid.h @@ -5,7 +5,7 @@ #include #include -#include +#include #include diff --git a/src/gui/src/err_window.cpp b/src/gui/src/err_window.cpp index 384c432..318a83f 100644 --- a/src/gui/src/err_window.cpp +++ b/src/gui/src/err_window.cpp @@ -1,6 +1,6 @@ #include "err_window.h" -#include +#include #include #include diff --git a/src/gui/src/goal_window.cpp b/src/gui/src/goal_window.cpp index 23cdb90..4e0b551 100644 --- a/src/gui/src/goal_window.cpp +++ b/src/gui/src/goal_window.cpp @@ -3,7 +3,7 @@ #include "draw_grid.h" #include "settings.h" -#include +#include GoalWindow::GoalWindow(const picross::OutputGrid& goal, std::string_view name) diff --git a/src/gui/src/grid_info.cpp b/src/gui/src/grid_info.cpp index ba6b8be..84fd11f 100644 --- a/src/gui/src/grid_info.cpp +++ b/src/gui/src/grid_info.cpp @@ -4,9 +4,10 @@ #include #include -#include +#include #include +#include #include #include #include @@ -70,7 +71,7 @@ void GridInfo::visit(bool& can_be_erased) unsigned int active_sections = 0; const ImVec2 cell_padding(7, 4); - constexpr ImGuiTableFlags table_flags = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable; + constexpr ImGuiTableFlags TABLE_FLAGS = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable; // Copy button const bool copy_to_clipboard = ImGui::Button("Copy"); @@ -82,7 +83,7 @@ void GridInfo::visit(bool& can_be_erased) active_sections |= static_cast(GridInfoSection::Basic); ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cell_padding); - if (ImGui::BeginTable("table_info", 2, table_flags)) + if (ImGui::BeginTable("table_info", 2, TABLE_FLAGS)) { ImGui::TableSetupColumn("key", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize); ImGui::TableSetupColumn("data", ImGuiTableColumnFlags_WidthStretch); @@ -109,7 +110,7 @@ void GridInfo::visit(bool& can_be_erased) active_sections |= static_cast(GridInfoSection::Stats); ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cell_padding); - if (ImGui::BeginTable("table_stats", 2, table_flags)) + if (ImGui::BeginTable("table_stats", 2, TABLE_FLAGS)) { ImGui::TableSetupColumn("key", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize); ImGui::TableSetupColumn("data", ImGuiTableColumnFlags_WidthStretch); @@ -134,10 +135,10 @@ void GridInfo::visit(bool& can_be_erased) { active_sections |= static_cast(GridInfoSection::Constraints); - const auto build_table_of_constraints = [&cell_padding, &table_flags, this](picross::Line::Type type, std::size_t size, const char* table_id) + const auto build_table_of_constraints = [&cell_padding, this](picross::Line::Type type, std::size_t size, const char* table_id) { ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cell_padding); - if (ImGui::BeginTable(table_id, 3, table_flags)) + if (ImGui::BeginTable(table_id, 3, TABLE_FLAGS)) { ImGui::TableSetupColumn("Line", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize); ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize); @@ -256,7 +257,7 @@ std::string GridInfo::info_as_string(unsigned int active_sections) const if (active_sections & static_cast(GridInfoSection::Basic)) { out << std::endl; - const auto key_w = key_col_width(grid_metadata); + const std::streamsize key_w = static_cast(key_col_width(grid_metadata)); for (const auto&[key, data]: grid_metadata) out << " " << std::setw(key_w) << std::left << key << data << std::endl; } @@ -267,7 +268,7 @@ std::string GridInfo::info_as_string(unsigned int active_sections) const if (active_sections & static_cast(GridInfoSection::Stats)) { out << std::endl; - const auto key_w = key_col_width(solver_stats_info); + const std::streamsize key_w = static_cast(key_col_width(solver_stats_info)); for (const auto&[key, data]: solver_stats_info) out << " " << std::setw(key_w) << std::left << key << data << std::endl; } diff --git a/src/gui/src/grid_window.cpp b/src/gui/src/grid_window.cpp index 04bc90d..8ee557e 100644 --- a/src/gui/src/grid_window.cpp +++ b/src/gui/src/grid_window.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include diff --git a/src/gui/src/imgui_wrap.h b/src/gui/src/imgui_wrap.h new file mode 100644 index 0000000..3f1f52c --- /dev/null +++ b/src/gui/src/imgui_wrap.h @@ -0,0 +1,7 @@ +#pragma once + +#if defined(__GNUC__) +#pragma GCC system_header +#endif + +#include diff --git a/src/gui/src/main.cpp b/src/gui/src/main.cpp index 4695da2..42f4c50 100644 --- a/src/gui/src/main.cpp +++ b/src/gui/src/main.cpp @@ -12,9 +12,9 @@ #include #include -#include // Include before glfw3.h +#include // Include before glfw3.h #include -#include +#include #include #include diff --git a/src/gui/src/pfd_wrap.h b/src/gui/src/pfd_wrap.h new file mode 100644 index 0000000..4053ea8 --- /dev/null +++ b/src/gui/src/pfd_wrap.h @@ -0,0 +1,7 @@ +#pragma once + +#if defined(__GNUC__) +#pragma GCC system_header +#endif + +#include diff --git a/src/gui/src/settings_window.cpp b/src/gui/src/settings_window.cpp index e5c4730..c34416c 100644 --- a/src/gui/src/settings_window.cpp +++ b/src/gui/src/settings_window.cpp @@ -2,7 +2,7 @@ #include "settings.h" -#include +#include #include diff --git a/src/picross/src/line_alternatives.cpp b/src/picross/src/line_alternatives.cpp index da0d486..77c7125 100644 --- a/src/picross/src/line_alternatives.cpp +++ b/src/picross/src/line_alternatives.cpp @@ -122,7 +122,7 @@ namespace private: LineSpanW m_line; - bool m_reset; + bool m_reset; }; LineAlternatives::Reduction from_line(const LineSpan& line, LineAlternatives::NbAlt nb_alt, bool full) @@ -139,11 +139,11 @@ namespace { public: LineExt(const LineSpan& line_span, Tile init_tile) - : m_tiles(line_span.size() + 2, init_tile) + : m_tiles(line_span.size() + 2u, init_tile) , m_line_span(line_span.type(), line_span.index(), line_span.size(), m_tiles.data() + 1u) { m_tiles.front() = Tile::EMPTY; - m_tiles.back() = Tile::EMPTY; + m_tiles.back() = Tile::EMPTY; } LineExt(const LineSpan& line_span) @@ -156,7 +156,7 @@ namespace LineSpanW& line_span() { return m_line_span; } private: Line::Container m_tiles; - LineSpanW m_line_span; + LineSpanW m_line_span; }; // An array of LineExt @@ -249,10 +249,9 @@ namespace const auto hole_end = l_holes.end(); assert(hole_it == hole_end || hole_it->m_index >= range.m_line_begin); auto result_seg_it = result.begin(); - const auto result_seg_end = result.end(); while (constraint_it != constraint_end && hole_it != hole_end) { - assert(result_seg_it != result_seg_end); + assert(result_seg_it != result.end()); const auto seg_len = *constraint_it; if (seg_len <= hole_it->m_length) { @@ -287,10 +286,9 @@ namespace const auto hole_end = std::make_reverse_iterator(r_holes.begin()); assert(hole_it == hole_end || (hole_it->m_index + static_cast(hole_it->m_length)) <= range.m_line_end); auto result_seg_it = std::make_reverse_iterator(result.end()); - const auto result_seg_end = std::make_reverse_iterator(result.begin()); while (constraint_it != constraint_end && hole_it != hole_end) { - assert(result_seg_it != result_seg_end); + assert(result_seg_it != std::make_reverse_iterator(result.begin())); const auto seg_len = *constraint_it; if (seg_len <= hole_it->m_length) { @@ -688,9 +686,9 @@ bool LineAlternatives::Impl::narrow_down_segments_range(std::vector 0) + if (nb_segments > 0 && constraint_it != constraint_end) { - assert(constraint_it != constraint_end && std::next(constraint_it) == constraint_end); + assert(std::next(constraint_it) == constraint_end); prev_segment_min_index(ranges[nb_segments - 1].m_leftmost_index, *constraint_it, m_bidirectional_range.m_line_end); for (std::size_t k = nb_segments - 1; k > 0; k--) { @@ -723,10 +721,9 @@ LineAlternatives::Reduction LineAlternatives::Impl::linear_reduction(const std:: const auto nb_segments = ranges.size(); auto constraint_it = m_bidirectional_range.m_constraint_begin; - const auto constraint_end = m_bidirectional_range.m_constraint_end; const auto line_begin = m_bidirectional_range.m_line_begin; const auto line_end = m_bidirectional_range.m_line_end; - assert(nb_segments == static_cast(std::distance(constraint_it, constraint_end))); + assert(nb_segments == static_cast(std::distance(constraint_it, m_bidirectional_range.m_constraint_end))); LineExtArray tiles_masks(m_known_tiles, 1u, Tile::UNKNOWN); @@ -747,7 +744,7 @@ LineAlternatives::Reduction LineAlternatives::Impl::linear_reduction(const std:: NbAlt nb_alt = 0u; int min_index = static_cast(m_known_tiles.size() + 1u); int max_index = -1; - assert(constraint_it != constraint_end); + assert(constraint_it != m_bidirectional_range.m_constraint_end); const unsigned int seg_length = *constraint_it; for (int seg_index = ranges[k].m_leftmost_index; seg_index <= ranges[k].m_rightmost_index; seg_index++) {