From 699fd2b3acc55f003d2bbafac210b8371fa36bfe Mon Sep 17 00:00:00 2001
From: Jeff Young <jeff@rokeby.ie>
Date: Wed, 5 Mar 2025 00:12:08 +0000
Subject: [PATCH] Implement severity checking for CLI_REPORTER.

---
 common/reporter.cpp | 14 ++++++++++++++
 include/reporter.h  |  5 +++++
 2 files changed, 19 insertions(+)

diff --git a/common/reporter.cpp b/common/reporter.cpp
index 4b973c407d..b9f1714c0d 100644
--- a/common/reporter.cpp
+++ b/common/reporter.cpp
@@ -138,10 +138,24 @@ REPORTER& CLI_REPORTER::Report( const wxString& aMsg, SEVERITY aSeverity )
     else
         wxFprintf( target, aMsg + wxS( "\n" ) );
 
+    m_hasMessageMap[aSeverity] = true;
+
     return *this;
 }
 
 
+bool CLI_REPORTER::HasMessageOfSeverity( int aSeverityMask ) const
+{
+    for( const auto& [severity, flag] : m_hasMessageMap )
+    {
+        if( ( aSeverityMask & severity ) > 0 && flag )
+            return true;
+    }
+
+    return false;
+}
+
+
 REPORTER& CLI_REPORTER::GetInstance()
 {
     static CLI_REPORTER s_cliReporter;
diff --git a/include/reporter.h b/include/reporter.h
index 9cfffabc2c..9faae9b214 100644
--- a/include/reporter.h
+++ b/include/reporter.h
@@ -26,6 +26,7 @@
 #define _REPORTER_H_
 
 #include <memory>
+#include <map>
 
 #include <eda_units.h>
 #include <widgets/report_severity.h>
@@ -238,6 +239,10 @@ public:
     REPORTER& Report( const wxString& aMsg, SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED ) override;
 
     bool HasMessage() const override { return false; }
+    bool HasMessageOfSeverity( int aSeverityMask ) const override;
+
+private:
+    std::map<SEVERITY, bool> m_hasMessageMap;
 };