From f55fdfe661c7ac7cc42f3ba439c674982a00fde0 Mon Sep 17 00:00:00 2001 From: Volker Christian Date: Tue, 1 Sep 2026 10:53:27 +0200 Subject: [PATCH] refactor: minimize IWYU include surface --- src/apps/echo/model/EchoSocketContext.cpp | 3 +++ src/apps/tlslegacy/TlsLegacySocketContext.cpp | 1 + src/core/DescriptorEventReceiver.h | 1 - src/core/EventLoop.h | 3 ++- src/core/TimerEventReceiver.cpp | 1 + src/core/multiplexer/epoll/DescriptorEventPublisher.cpp | 1 + src/core/multiplexer/epoll/EventMultiplexer.cpp | 1 + src/core/multiplexer/poll/EventMultiplexer.cpp | 1 + src/core/multiplexer/select/EventMultiplexer.cpp | 1 + src/core/pipe/Pipe.cpp | 1 - src/core/socket/stream/ClientFlowController.h | 1 + src/core/socket/stream/SocketAcceptor.h | 3 ++- src/core/socket/stream/SocketClient.h | 3 ++- src/core/socket/stream/SocketConnection.h | 1 - src/core/socket/stream/SocketConnector.h | 3 ++- src/core/socket/stream/SocketContext.h | 1 - src/core/socket/stream/SocketServer.h | 3 ++- src/core/socket/stream/tls/TLSHandshake.cpp | 1 - src/core/socket/stream/tls/TLSHandshake.h | 3 --- src/core/socket/stream/tls/TLSShutdown.cpp | 1 - src/core/socket/stream/tls/TLSShutdown.h | 3 --- .../socket/stream/tls/detail/TLSLifecycleTestAccess.h | 5 +++-- src/core/socket/stream/tls/ssl_utils.cpp | 1 - src/database/mariadb/MariaDBConnection.h | 1 - src/database/mariadb/MariaDBLibrary.cpp | 1 + src/express/middleware/VerboseRequest.cpp | 1 + src/iot/mqtt/SubProtocol.hpp | 3 ++- src/iot/mqtt/client/Mqtt.cpp | 1 - src/iot/mqtt/server/Mqtt.cpp | 1 - src/iot/mqtt/server/broker/Broker.cpp | 2 -- src/iot/mqtt/server/broker/RetainTree.cpp | 2 -- src/iot/mqtt/server/broker/Session.cpp | 2 -- src/iot/mqtt/server/broker/SubscriptionTree.cpp | 2 -- src/net/un/phy/PhysicalSocket.hpp | 3 ++- src/tools/snodec-control/src/Cli.cpp | 4 +++- src/tools/snodec-control/src/ConfigActions.cpp | 8 ++++++-- src/tools/snodec-control/src/ConfigActions.h | 6 ++++-- src/tools/snodec-control/src/ConfigEditor.cpp | 1 + src/tools/snodec-control/src/ConfigModel.cpp | 2 ++ src/tools/snodec-control/src/ConfigModel.h | 6 ++++-- src/tools/snodec-control/src/ConfigParser.cpp | 2 ++ src/tools/snodec-control/src/Json.cpp | 1 + src/tools/snodec-control/src/Json.h | 1 - src/tools/snodec-control/src/JsonWriter.cpp | 4 ++++ src/tools/snodec-control/src/JsonWriter.h | 4 ++-- src/tools/snodec-control/src/Materializer.cpp | 4 ++++ src/tools/snodec-control/src/Materializer.h | 4 ++-- src/tools/snodec-control/src/Metadata.cpp | 2 ++ src/tools/snodec-control/src/ProcessRunner.cpp | 5 ++++- src/tools/snodec-control/src/ui/CursesUi.cpp | 8 +++++++- src/tools/snodec-control/src/ui/RenderUtil.cpp | 2 ++ src/tools/snodec-control/src/ui/UiState.cpp | 5 +++++ src/tools/snodec-control/src/ui/UiState.h | 1 + src/tools/snodec-control/src/ui/UiTree.cpp | 4 ++++ src/tools/snodec-control/src/ui/UiTree.h | 9 ++++++--- src/utils/Config.cpp | 2 ++ src/utils/Config.h | 7 +++++-- src/utils/Formatter.cpp | 2 ++ src/web/http/decoder/Fields.cpp | 1 + src/web/http/decoder/Fields.h | 4 +++- src/web/http/http_utils.cpp | 1 - 61 files changed, 108 insertions(+), 54 deletions(-) diff --git a/src/apps/echo/model/EchoSocketContext.cpp b/src/apps/echo/model/EchoSocketContext.cpp index 7a78b743c..e69932f3c 100644 --- a/src/apps/echo/model/EchoSocketContext.cpp +++ b/src/apps/echo/model/EchoSocketContext.cpp @@ -41,6 +41,9 @@ #include "EchoSocketContext.h" +#include "core/socket/stream/SocketContext.h" +#include "log/SemanticLogger.h" + #ifndef DOXYGEN_SHOULD_SKIP_THIS #include diff --git a/src/apps/tlslegacy/TlsLegacySocketContext.cpp b/src/apps/tlslegacy/TlsLegacySocketContext.cpp index 65eb2b122..d98ac990b 100644 --- a/src/apps/tlslegacy/TlsLegacySocketContext.cpp +++ b/src/apps/tlslegacy/TlsLegacySocketContext.cpp @@ -8,6 +8,7 @@ #include "Log.h" #include "core/socket/stream/SocketConnection.h" +#include "log/SemanticLogger.h" #include diff --git a/src/core/DescriptorEventReceiver.h b/src/core/DescriptorEventReceiver.h index a47a8ae9f..43e735c3a 100644 --- a/src/core/DescriptorEventReceiver.h +++ b/src/core/DescriptorEventReceiver.h @@ -45,7 +45,6 @@ #include "core/EventReceiver.h" // IWYU pragma: export #include "core/Shutdown.h" // IWYU pragma: export #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" namespace core { class DescriptorEventPublisher; diff --git a/src/core/EventLoop.h b/src/core/EventLoop.h index e6faf8dd3..337576b7c 100644 --- a/src/core/EventLoop.h +++ b/src/core/EventLoop.h @@ -45,7 +45,6 @@ #include "core/State.h" // IWYU pragma: export #include "core/TickStatus.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" namespace core { class EventMultiplexer; @@ -57,6 +56,8 @@ namespace utils { class Timeval; } +#include + #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace core { diff --git a/src/core/TimerEventReceiver.cpp b/src/core/TimerEventReceiver.cpp index d1646c262..11df22ede 100644 --- a/src/core/TimerEventReceiver.cpp +++ b/src/core/TimerEventReceiver.cpp @@ -50,6 +50,7 @@ #include "log/Logger.h" +#include #include #endif /* DOXYGEN_SHOULD_SKIP_THIS */ diff --git a/src/core/multiplexer/epoll/DescriptorEventPublisher.cpp b/src/core/multiplexer/epoll/DescriptorEventPublisher.cpp index b0751aaa9..79b047ba4 100644 --- a/src/core/multiplexer/epoll/DescriptorEventPublisher.cpp +++ b/src/core/multiplexer/epoll/DescriptorEventPublisher.cpp @@ -50,6 +50,7 @@ #include "utils/PreserveErrno.h" #include +#include #endif /* DOXYGEN_SHOULD_SKIP_THIS */ diff --git a/src/core/multiplexer/epoll/EventMultiplexer.cpp b/src/core/multiplexer/epoll/EventMultiplexer.cpp index b70058e37..d8a7463de 100644 --- a/src/core/multiplexer/epoll/EventMultiplexer.cpp +++ b/src/core/multiplexer/epoll/EventMultiplexer.cpp @@ -51,6 +51,7 @@ #include #include +#include #include #endif /* DOXYGEN_SHOULD_SKIP_THIS */ diff --git a/src/core/multiplexer/poll/EventMultiplexer.cpp b/src/core/multiplexer/poll/EventMultiplexer.cpp index ca201d1d2..5781f08df 100644 --- a/src/core/multiplexer/poll/EventMultiplexer.cpp +++ b/src/core/multiplexer/poll/EventMultiplexer.cpp @@ -56,6 +56,7 @@ #include #include #include +#include #include #include diff --git a/src/core/multiplexer/select/EventMultiplexer.cpp b/src/core/multiplexer/select/EventMultiplexer.cpp index 0bbaea665..411027287 100644 --- a/src/core/multiplexer/select/EventMultiplexer.cpp +++ b/src/core/multiplexer/select/EventMultiplexer.cpp @@ -50,6 +50,7 @@ #include #include +#include #include #endif /* DOXYGEN_SHOULD_SKIP_THIS */ diff --git a/src/core/pipe/Pipe.cpp b/src/core/pipe/Pipe.cpp index 63c427185..618ea1785 100644 --- a/src/core/pipe/Pipe.cpp +++ b/src/core/pipe/Pipe.cpp @@ -48,7 +48,6 @@ #include "core/system/unistd.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" #include "utils/Timeval.h" #include diff --git a/src/core/socket/stream/ClientFlowController.h b/src/core/socket/stream/ClientFlowController.h index 3bbec4b98..072f820c7 100644 --- a/src/core/socket/stream/ClientFlowController.h +++ b/src/core/socket/stream/ClientFlowController.h @@ -58,6 +58,7 @@ namespace core { #ifndef DOXYGEN_SHOULD_SKIP_THIS +#include #include #include #include diff --git a/src/core/socket/stream/SocketAcceptor.h b/src/core/socket/stream/SocketAcceptor.h index 779484ac9..ceb15f4f2 100644 --- a/src/core/socket/stream/SocketAcceptor.h +++ b/src/core/socket/stream/SocketAcceptor.h @@ -46,7 +46,8 @@ #include "core/socket/State.h" #include "log/LogScopeOwner.h" #include "log/Logger.h" -#include "log/SemanticLogger.h" + +// IWYU pragma: no_include "log/SemanticLogger.h" namespace core::socket::stream { class SocketContextFactory; diff --git a/src/core/socket/stream/SocketClient.h b/src/core/socket/stream/SocketClient.h index 37299cc39..b895ed0dc 100644 --- a/src/core/socket/stream/SocketClient.h +++ b/src/core/socket/stream/SocketClient.h @@ -49,7 +49,8 @@ #include "core/socket/stream/ClientFlowController.h" // IWYU pragma: export #include "core/timer/Timer.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" + +// IWYU pragma: no_include "log/SemanticLogger.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS diff --git a/src/core/socket/stream/SocketConnection.h b/src/core/socket/stream/SocketConnection.h index cc8c2ac36..a84388e97 100644 --- a/src/core/socket/stream/SocketConnection.h +++ b/src/core/socket/stream/SocketConnection.h @@ -44,7 +44,6 @@ #include "core/socket/stream/QueueResult.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" namespace core { struct ShutdownContext; diff --git a/src/core/socket/stream/SocketConnector.h b/src/core/socket/stream/SocketConnector.h index 372b0cbc2..3df820b09 100644 --- a/src/core/socket/stream/SocketConnector.h +++ b/src/core/socket/stream/SocketConnector.h @@ -46,7 +46,8 @@ #include "core/socket/State.h" #include "log/LogScopeOwner.h" #include "log/Logger.h" -#include "log/SemanticLogger.h" + +// IWYU pragma: no_include "log/SemanticLogger.h" namespace core::socket::stream { class SocketContextFactory; diff --git a/src/core/socket/stream/SocketContext.h b/src/core/socket/stream/SocketContext.h index c05aee34b..1fe6199b5 100644 --- a/src/core/socket/stream/SocketContext.h +++ b/src/core/socket/stream/SocketContext.h @@ -45,7 +45,6 @@ #include "core/socket/SocketContext.h" #include "core/socket/stream/QueueResult.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" namespace core::pipe { class Source; diff --git a/src/core/socket/stream/SocketServer.h b/src/core/socket/stream/SocketServer.h index 6b8febfd1..f91b5ca66 100644 --- a/src/core/socket/stream/SocketServer.h +++ b/src/core/socket/stream/SocketServer.h @@ -49,7 +49,8 @@ #include "core/socket/stream/ServerFlowController.h" // IWYU pragma: export #include "core/timer/Timer.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" + +// IWYU pragma: no_include "log/SemanticLogger.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS diff --git a/src/core/socket/stream/tls/TLSHandshake.cpp b/src/core/socket/stream/tls/TLSHandshake.cpp index ee98c561a..9c488eeaa 100644 --- a/src/core/socket/stream/tls/TLSHandshake.cpp +++ b/src/core/socket/stream/tls/TLSHandshake.cpp @@ -43,7 +43,6 @@ #include "core/socket/stream/tls/detail/TLSResult.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" #if defined(SNODEC_BUILD_TESTS) #include "core/socket/stream/tls/detail/TLSLifecycleTestAccess.h" diff --git a/src/core/socket/stream/tls/TLSHandshake.h b/src/core/socket/stream/tls/TLSHandshake.h index b94d07e59..f66065618 100644 --- a/src/core/socket/stream/tls/TLSHandshake.h +++ b/src/core/socket/stream/tls/TLSHandshake.h @@ -74,9 +74,6 @@ namespace core::socket::stream::tls { struct TlsHandshakeResult; } - template - class SocketConnection; - class TLSHandshake : public core::eventreceiver::ReadEventReceiver , public core::eventreceiver::WriteEventReceiver { diff --git a/src/core/socket/stream/tls/TLSShutdown.cpp b/src/core/socket/stream/tls/TLSShutdown.cpp index 48c782b07..bb8c7560e 100644 --- a/src/core/socket/stream/tls/TLSShutdown.cpp +++ b/src/core/socket/stream/tls/TLSShutdown.cpp @@ -43,7 +43,6 @@ #include "core/socket/stream/tls/detail/TLSResult.h" #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" #if defined(SNODEC_BUILD_TESTS) #include "core/socket/stream/tls/detail/TLSLifecycleTestAccess.h" diff --git a/src/core/socket/stream/tls/TLSShutdown.h b/src/core/socket/stream/tls/TLSShutdown.h index 92b045919..719da2645 100644 --- a/src/core/socket/stream/tls/TLSShutdown.h +++ b/src/core/socket/stream/tls/TLSShutdown.h @@ -75,9 +75,6 @@ namespace core::socket::stream::tls { struct TlsShutdownResult; } - template - class SocketConnection; - class TLSShutdown : public core::eventreceiver::ReadEventReceiver , public core::eventreceiver::WriteEventReceiver { diff --git a/src/core/socket/stream/tls/detail/TLSLifecycleTestAccess.h b/src/core/socket/stream/tls/detail/TLSLifecycleTestAccess.h index 6f5792618..2eafe56d9 100644 --- a/src/core/socket/stream/tls/detail/TLSLifecycleTestAccess.h +++ b/src/core/socket/stream/tls/detail/TLSLifecycleTestAccess.h @@ -3,12 +3,13 @@ #include "core/socket/stream/tls/TLSHandshake.h" #include "core/socket/stream/tls/SocketConnection.h" -#include "core/socket/stream/tls/SocketReader.h" -#include "core/socket/stream/tls/SocketWriter.h" #include "core/socket/stream/tls/TLSShutdown.h" #include "core/socket/stream/tls/detail/TLSResult.h" #include "log/LogScopeOwner.h" +// IWYU pragma: no_include "core/socket/stream/tls/SocketReader.h" +// IWYU pragma: no_include "core/socket/stream/tls/SocketWriter.h" + #include #include #include diff --git a/src/core/socket/stream/tls/ssl_utils.cpp b/src/core/socket/stream/tls/ssl_utils.cpp index ee0d80461..ff160134b 100644 --- a/src/core/socket/stream/tls/ssl_utils.cpp +++ b/src/core/socket/stream/tls/ssl_utils.cpp @@ -45,7 +45,6 @@ #include "log/LogScopeOwner.h" #include "log/Logger.h" -#include "log/SemanticLogger.h" #include "utils/PreserveErrno.h" #include diff --git a/src/database/mariadb/MariaDBConnection.h b/src/database/mariadb/MariaDBConnection.h index 5497882ba..684c91ed9 100644 --- a/src/database/mariadb/MariaDBConnection.h +++ b/src/database/mariadb/MariaDBConnection.h @@ -48,7 +48,6 @@ #include "core/eventreceiver/WriteEventReceiver.h" #include "database/mariadb/MariaDBCommandSequence.h" // IWYU pragma: export #include "log/LogScopeOwner.h" -#include "log/SemanticLogger.h" namespace database::mariadb { class MariaDBCommand; diff --git a/src/database/mariadb/MariaDBLibrary.cpp b/src/database/mariadb/MariaDBLibrary.cpp index 7dbea76c6..815fada19 100644 --- a/src/database/mariadb/MariaDBLibrary.cpp +++ b/src/database/mariadb/MariaDBLibrary.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #endif /* DOXYGEN_SHOULD_SKIP_THIS */ diff --git a/src/express/middleware/VerboseRequest.cpp b/src/express/middleware/VerboseRequest.cpp index 56ebc63da..acdf97859 100644 --- a/src/express/middleware/VerboseRequest.cpp +++ b/src/express/middleware/VerboseRequest.cpp @@ -49,6 +49,7 @@ #include "web/http/http_utils.h" +#include #include #endif // DOXYGEN_SHOULD_SKIP_THIS diff --git a/src/iot/mqtt/SubProtocol.hpp b/src/iot/mqtt/SubProtocol.hpp index d27a80768..3fcb89291 100644 --- a/src/iot/mqtt/SubProtocol.hpp +++ b/src/iot/mqtt/SubProtocol.hpp @@ -43,10 +43,11 @@ #include "iot/mqtt/SemanticLog.h" #include "iot/mqtt/SubProtocol.h" #include "log/Logger.h" -#include "log/SemanticLogger.h" #include "utils/system/signal.h" #include "web/websocket/SubProtocolContext.h" +// IWYU pragma: no_include "log/SemanticLogger.h" + #ifndef DOXYGEN_SHOULD_SKIP_THIS #include "utils/hexdump.h" diff --git a/src/iot/mqtt/client/Mqtt.cpp b/src/iot/mqtt/client/Mqtt.cpp index 7f3b143e2..7d6e46320 100644 --- a/src/iot/mqtt/client/Mqtt.cpp +++ b/src/iot/mqtt/client/Mqtt.cpp @@ -63,7 +63,6 @@ #include "log/LogScopeOwner.h" #include "log/Logger.h" -#include "log/SemanticLogger.h" #include #include diff --git a/src/iot/mqtt/server/Mqtt.cpp b/src/iot/mqtt/server/Mqtt.cpp index 93a6ccb06..d8efe2a04 100644 --- a/src/iot/mqtt/server/Mqtt.cpp +++ b/src/iot/mqtt/server/Mqtt.cpp @@ -64,7 +64,6 @@ #include "log/LogScopeOwner.h" #include "log/Logger.h" -#include "log/SemanticLogger.h" #include #include diff --git a/src/iot/mqtt/server/broker/Broker.cpp b/src/iot/mqtt/server/broker/Broker.cpp index 14483cfdb..08e8d4505 100644 --- a/src/iot/mqtt/server/broker/Broker.cpp +++ b/src/iot/mqtt/server/broker/Broker.cpp @@ -45,8 +45,6 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "log/Logger.h" - #include #include #include diff --git a/src/iot/mqtt/server/broker/RetainTree.cpp b/src/iot/mqtt/server/broker/RetainTree.cpp index 6636ea1bd..3ce15040d 100644 --- a/src/iot/mqtt/server/broker/RetainTree.cpp +++ b/src/iot/mqtt/server/broker/RetainTree.cpp @@ -47,8 +47,6 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "log/Logger.h" - #include #include #include diff --git a/src/iot/mqtt/server/broker/Session.cpp b/src/iot/mqtt/server/broker/Session.cpp index bc2e967fd..c9b67d223 100644 --- a/src/iot/mqtt/server/broker/Session.cpp +++ b/src/iot/mqtt/server/broker/Session.cpp @@ -46,8 +46,6 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "log/Logger.h" - #include #include #include diff --git a/src/iot/mqtt/server/broker/SubscriptionTree.cpp b/src/iot/mqtt/server/broker/SubscriptionTree.cpp index 3d52e6051..152a57ac5 100644 --- a/src/iot/mqtt/server/broker/SubscriptionTree.cpp +++ b/src/iot/mqtt/server/broker/SubscriptionTree.cpp @@ -47,8 +47,6 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "log/Logger.h" - #include #include #include diff --git a/src/net/un/phy/PhysicalSocket.hpp b/src/net/un/phy/PhysicalSocket.hpp index e42880184..acd6c42fc 100644 --- a/src/net/un/phy/PhysicalSocket.hpp +++ b/src/net/un/phy/PhysicalSocket.hpp @@ -43,10 +43,11 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "core/system/socket.h" #include "core/system/unistd.h" #include "log/Logger.h" +// IWYU pragma: no_include "core/system/socket.h" + #include #include #include diff --git a/src/tools/snodec-control/src/Cli.cpp b/src/tools/snodec-control/src/Cli.cpp index c0907f226..42aeb067e 100644 --- a/src/tools/snodec-control/src/Cli.cpp +++ b/src/tools/snodec-control/src/Cli.cpp @@ -45,10 +45,10 @@ #include "CommandBuilder.h" #include "ConfigActions.h" #include "ConfigEditor.h" -#include "ConfigModel.h" #include "ConfigParser.h" #include "JsonWriter.h" #include "Materializer.h" +#include "Metadata.h" #include "ProcessRunner.h" #include "ui/Ui.h" @@ -63,6 +63,8 @@ namespace snodec::control { + struct ConfigOption; + namespace { struct Options { diff --git a/src/tools/snodec-control/src/ConfigActions.cpp b/src/tools/snodec-control/src/ConfigActions.cpp index 3e7651539..ad0df2291 100644 --- a/src/tools/snodec-control/src/ConfigActions.cpp +++ b/src/tools/snodec-control/src/ConfigActions.cpp @@ -42,18 +42,22 @@ #include "ConfigActions.h" #include "CommandBuilder.h" +#include "ConfigEditor.h" +#include "ConfigModel.h" #include "Materializer.h" #include "ProcessRunner.h" +#include +#include + #include -#include +#include #include #include #include #include #include #include -#include namespace snodec::control { diff --git a/src/tools/snodec-control/src/ConfigActions.h b/src/tools/snodec-control/src/ConfigActions.h index 135f030b4..aad9e9ddc 100644 --- a/src/tools/snodec-control/src/ConfigActions.h +++ b/src/tools/snodec-control/src/ConfigActions.h @@ -42,8 +42,6 @@ #ifndef SNODECCONTROL_CONFIGACTIONS_H #define SNODECCONTROL_CONFIGACTIONS_H -#include "ConfigEditor.h" -#include "ConfigModel.h" #include "ConfigParser.h" #include "Metadata.h" @@ -53,6 +51,10 @@ namespace snodec::control { + class ConfigModel; + struct ChangeRecord; + struct ConfigOption; + // The shared, presentation-agnostic "business logic" behind every snodec-control action: running // discovery, formatting inspection output, and saving/resolving a run configuration through the // target. Both the plain CLI (Cli.cpp) and the interactive UI (ui/CursesUi.cpp) call these same diff --git a/src/tools/snodec-control/src/ConfigEditor.cpp b/src/tools/snodec-control/src/ConfigEditor.cpp index 5da5de102..15e1c0df0 100644 --- a/src/tools/snodec-control/src/ConfigEditor.cpp +++ b/src/tools/snodec-control/src/ConfigEditor.cpp @@ -42,6 +42,7 @@ #include "ConfigEditor.h" #include +#include #include #include diff --git a/src/tools/snodec-control/src/ConfigModel.cpp b/src/tools/snodec-control/src/ConfigModel.cpp index cc624850c..accced04e 100644 --- a/src/tools/snodec-control/src/ConfigModel.cpp +++ b/src/tools/snodec-control/src/ConfigModel.cpp @@ -41,6 +41,8 @@ #include "ConfigModel.h" +#include "Metadata.h" + #include #include #include diff --git a/src/tools/snodec-control/src/ConfigModel.h b/src/tools/snodec-control/src/ConfigModel.h index e3be75658..4a94a71e5 100644 --- a/src/tools/snodec-control/src/ConfigModel.h +++ b/src/tools/snodec-control/src/ConfigModel.h @@ -42,14 +42,16 @@ #ifndef SNODECCONTROL_CONFIGMODEL_H #define SNODECCONTROL_CONFIGMODEL_H -#include "Metadata.h" - #include #include #include #include #include +namespace snodec::control { + struct ParsedMetadata; +} + namespace snodec::control { // A single configuration option discovered from a target application's `-s`/`--show-config` output. diff --git a/src/tools/snodec-control/src/ConfigParser.cpp b/src/tools/snodec-control/src/ConfigParser.cpp index 6096de48c..9e5a5ac04 100644 --- a/src/tools/snodec-control/src/ConfigParser.cpp +++ b/src/tools/snodec-control/src/ConfigParser.cpp @@ -42,7 +42,9 @@ #include "ConfigParser.h" #include +#include #include +#include #include #include #include diff --git a/src/tools/snodec-control/src/Json.cpp b/src/tools/snodec-control/src/Json.cpp index d43c870cf..06352b9fe 100644 --- a/src/tools/snodec-control/src/Json.cpp +++ b/src/tools/snodec-control/src/Json.cpp @@ -43,6 +43,7 @@ #include #include +#include #include namespace snodec::control { diff --git a/src/tools/snodec-control/src/Json.h b/src/tools/snodec-control/src/Json.h index 9837a21a2..0e117aa7c 100644 --- a/src/tools/snodec-control/src/Json.h +++ b/src/tools/snodec-control/src/Json.h @@ -42,7 +42,6 @@ #ifndef SNODECCONTROL_JSON_H #define SNODECCONTROL_JSON_H -#include #include #include #include diff --git a/src/tools/snodec-control/src/JsonWriter.cpp b/src/tools/snodec-control/src/JsonWriter.cpp index 00c3d85a9..66de31313 100644 --- a/src/tools/snodec-control/src/JsonWriter.cpp +++ b/src/tools/snodec-control/src/JsonWriter.cpp @@ -41,8 +41,12 @@ #include "JsonWriter.h" +#include "ConfigModel.h" + #include +#include #include +#include namespace snodec::control { diff --git a/src/tools/snodec-control/src/JsonWriter.h b/src/tools/snodec-control/src/JsonWriter.h index a1dbae2a8..72f17af52 100644 --- a/src/tools/snodec-control/src/JsonWriter.h +++ b/src/tools/snodec-control/src/JsonWriter.h @@ -42,12 +42,12 @@ #ifndef SNODECCONTROL_JSONWRITER_H #define SNODECCONTROL_JSONWRITER_H -#include "ConfigModel.h" - #include namespace snodec::control { + class ConfigModel; + // Escapes a string for embedding as a JSON string literal (without the surrounding quotes). std::string jsonEscape(const std::string& value); diff --git a/src/tools/snodec-control/src/Materializer.cpp b/src/tools/snodec-control/src/Materializer.cpp index 84c5fff76..5c70fb61b 100644 --- a/src/tools/snodec-control/src/Materializer.cpp +++ b/src/tools/snodec-control/src/Materializer.cpp @@ -41,9 +41,13 @@ #include "Materializer.h" +#include "ConfigModel.h" + #include #include +#include #include +#include namespace snodec::control { diff --git a/src/tools/snodec-control/src/Materializer.h b/src/tools/snodec-control/src/Materializer.h index 9753e4ae9..538d70ea1 100644 --- a/src/tools/snodec-control/src/Materializer.h +++ b/src/tools/snodec-control/src/Materializer.h @@ -42,12 +42,12 @@ #ifndef SNODECCONTROL_MATERIALIZER_H #define SNODECCONTROL_MATERIALIZER_H -#include "ConfigModel.h" - #include namespace snodec::control { + class ConfigModel; + // Renders a clean, editable, deterministic INI-style configuration file from the parsed model. // For every option the active value is preferred, falling back to the default value, falling back // to an empty value. Descriptions are emitted as leading comments and required options are marked diff --git a/src/tools/snodec-control/src/Metadata.cpp b/src/tools/snodec-control/src/Metadata.cpp index 9b3abc1cb..359ceddcb 100644 --- a/src/tools/snodec-control/src/Metadata.cpp +++ b/src/tools/snodec-control/src/Metadata.cpp @@ -43,7 +43,9 @@ #include "Json.h" +#include #include +#include namespace snodec::control { diff --git a/src/tools/snodec-control/src/ProcessRunner.cpp b/src/tools/snodec-control/src/ProcessRunner.cpp index 85601cf44..08c2ada7e 100644 --- a/src/tools/snodec-control/src/ProcessRunner.cpp +++ b/src/tools/snodec-control/src/ProcessRunner.cpp @@ -48,9 +48,12 @@ #include #include #include -#include +#include +#include // IWYU pragma: keep #include +// IWYU pragma: no_include + extern char** environ; // NOLINT namespace snodec::control { diff --git a/src/tools/snodec-control/src/ui/CursesUi.cpp b/src/tools/snodec-control/src/ui/CursesUi.cpp index 48dfc6fd5..22b8f1624 100644 --- a/src/tools/snodec-control/src/ui/CursesUi.cpp +++ b/src/tools/snodec-control/src/ui/CursesUi.cpp @@ -50,7 +50,9 @@ #include "../CommandBuilder.h" #include "../ConfigActions.h" #include "../ConfigEditor.h" +#include "../ConfigModel.h" #include "../Materializer.h" +#include "../Metadata.h" #include "../ProcessRunner.h" #include "LineEditor.h" #include "RenderUtil.h" @@ -59,6 +61,7 @@ #include +#include #include #include #include @@ -66,9 +69,12 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include +#include + +// IWYU pragma: no_include namespace snodec::control::ui { diff --git a/src/tools/snodec-control/src/ui/RenderUtil.cpp b/src/tools/snodec-control/src/ui/RenderUtil.cpp index c2bbce4cb..ca78fc574 100644 --- a/src/tools/snodec-control/src/ui/RenderUtil.cpp +++ b/src/tools/snodec-control/src/ui/RenderUtil.cpp @@ -41,6 +41,8 @@ #include "RenderUtil.h" +#include + namespace snodec::control::ui { std::string fitToWidth(const std::string& text, int width) { diff --git a/src/tools/snodec-control/src/ui/UiState.cpp b/src/tools/snodec-control/src/ui/UiState.cpp index a8dd98423..ed28bb422 100644 --- a/src/tools/snodec-control/src/ui/UiState.cpp +++ b/src/tools/snodec-control/src/ui/UiState.cpp @@ -41,6 +41,11 @@ #include "UiState.h" +#include "ConfigEditor.h" +#include "ConfigModel.h" +#include "Metadata.h" +#include "ui/UiTree.h" + #include #include diff --git a/src/tools/snodec-control/src/ui/UiState.h b/src/tools/snodec-control/src/ui/UiState.h index f531bf747..101520b53 100644 --- a/src/tools/snodec-control/src/ui/UiState.h +++ b/src/tools/snodec-control/src/ui/UiState.h @@ -44,6 +44,7 @@ #include "../ConfigEditor.h" #include "../ConfigModel.h" +#include "../Metadata.h" #include "UiTree.h" #include diff --git a/src/tools/snodec-control/src/ui/UiTree.cpp b/src/tools/snodec-control/src/ui/UiTree.cpp index 54283719d..04e3b9fdb 100644 --- a/src/tools/snodec-control/src/ui/UiTree.cpp +++ b/src/tools/snodec-control/src/ui/UiTree.cpp @@ -41,9 +41,13 @@ #include "UiTree.h" +#include "ConfigModel.h" +#include "Metadata.h" + #include #include #include +#include namespace snodec::control::ui { diff --git a/src/tools/snodec-control/src/ui/UiTree.h b/src/tools/snodec-control/src/ui/UiTree.h index 48a9c9da5..1471f10bd 100644 --- a/src/tools/snodec-control/src/ui/UiTree.h +++ b/src/tools/snodec-control/src/ui/UiTree.h @@ -42,14 +42,17 @@ #ifndef SNODECCONTROL_UI_UITREE_H #define SNODECCONTROL_UI_UITREE_H -#include "../ConfigModel.h" -#include "../Metadata.h" - #include #include #include #include +namespace snodec::control { + class ConfigModel; + struct ConfigOption; + struct ParsedMetadata; +} + namespace snodec::control::ui { // SNode.C configuration is presented as a hierarchy, not a flat section/option list. Two tree diff --git a/src/utils/Config.cpp b/src/utils/Config.cpp index ec986c3cf..365b9c052 100644 --- a/src/utils/Config.cpp +++ b/src/utils/Config.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -63,6 +64,7 @@ #include #include #include +#include #include #include #include diff --git a/src/utils/Config.h b/src/utils/Config.h index 960596787..930af9905 100644 --- a/src/utils/Config.h +++ b/src/utils/Config.h @@ -50,8 +50,11 @@ #include #include #include -#include -#include +#include // IWYU pragma: keep +#include // IWYU pragma: keep + +// IWYU pragma: no_include +// IWYU pragma: no_include #endif /* DOXYGEN_SHOULD_SKIP_THIS */ diff --git a/src/utils/Formatter.cpp b/src/utils/Formatter.cpp index 6be91e0bb..ba7f4a00f 100644 --- a/src/utils/Formatter.cpp +++ b/src/utils/Formatter.cpp @@ -47,11 +47,13 @@ #include #include +#include #include #include #include #include #include +#include #include #endif // DOXYGEN_SHOULD_SKIP_THIS diff --git a/src/web/http/decoder/Fields.cpp b/src/web/http/decoder/Fields.cpp index 535013e39..bb561eb0a 100644 --- a/src/web/http/decoder/Fields.cpp +++ b/src/web/http/decoder/Fields.cpp @@ -42,6 +42,7 @@ #include "web/http/decoder/Fields.h" #include "core/socket/stream/SocketContext.h" +#include "web/http/ParserLimits.h" #ifndef DOXYGEN_SHOULD_SKIP_THIS diff --git a/src/web/http/decoder/Fields.h b/src/web/http/decoder/Fields.h index 1c06950ca..40dad9d14 100644 --- a/src/web/http/decoder/Fields.h +++ b/src/web/http/decoder/Fields.h @@ -42,12 +42,14 @@ #ifndef WEB_HTTP_DECODER_HEADER_H #define WEB_HTTP_DECODER_HEADER_H -#include "web/http/ParserLimits.h" +#include "web/http/ParserLimits.h" // IWYU pragma: keep namespace core::socket::stream { class SocketContext; } +// IWYU pragma: no_forward_declare web::http::ParserLimits + #ifndef DOXYGEN_SHOULD_SKIP_THIS #include "web/http/CiStringMap.h" diff --git a/src/web/http/http_utils.cpp b/src/web/http/http_utils.cpp index 4efcc10b8..f69264abb 100644 --- a/src/web/http/http_utils.cpp +++ b/src/web/http/http_utils.cpp @@ -56,7 +56,6 @@ #include #include #include -#include #endif /* DOXYGEN_SHOULD_SKIP_THIS */