From 72fd7201f6f13e80dc1995b4a965068469838175 Mon Sep 17 00:00:00 2001 From: Daniel Edwards Date: Wed, 6 May 2026 11:45:37 +0200 Subject: [PATCH 1/5] quality: pragma once, static linkage for TUs, inline definitions for headers, ifdefs, dummy source Signed-off-by: Daniel Edwards --- Demos/api/Orchestration/SimStep.cpp | 2 +- Demos/api/Orchestration/SimStepAsync.cpp | 2 +- Demos/communication/Can/CanDemoCommon.hpp | 6 ++- .../Ethernet/EthernetDemoCommon.hpp | 8 ++-- .../communication/PubSub/PubSubDemoCommon.hpp | 23 ++++++---- Demos/communication/PubSub/PublisherDemo.cpp | 4 +- Demos/communication/PubSub/SubscriberDemo.cpp | 4 +- Demos/communication/Rpc/RpcClientDemo.cpp | 4 +- Demos/communication/Rpc/RpcDemoCommon.hpp | 32 ++++++++------ Demos/communication/Rpc/RpcServerDemo.cpp | 4 +- .../communication/include/ApplicationBase.hpp | 2 +- Demos/communication/include/SignalHandler.hpp | 6 +-- Demos/tools/Benchmark/BenchmarkDemo.cpp | 24 +++++------ Demos/tools/Benchmark/LatencyDemo.cpp | 10 ++--- SilKit/source/CMakeLists.txt | 2 +- SilKit/source/SilKit.cpp | 3 ++ SilKit/source/SilKitForceIncludes.cpp | 42 ------------------- SilKit/source/core/vasio/Test_RingBuffer.cpp | 4 +- SilKit/source/core/vasio/Test_VAsioSerdes.cpp | 8 ++-- .../dashboard/service/SilKitToOatppMapper.cpp | 16 +++---- SilKit/source/services/can/CanSerdes.cpp | 20 ++++----- SilKit/source/services/lin/LinSerdes.cpp | 36 ++++++++-------- SilKit/source/services/logging/Logger.cpp | 7 ++-- .../services/metrics/Test_MetricsJsonSink.cpp | 4 +- SilKit/source/util/LabelMatching.cpp | 4 +- SilKit/source/util/SetThreadName.cpp | 4 +- SilKit/source/util/SetThreadName.hpp | 3 +- SilKit/source/util/SignalHandler.cpp | 4 +- SilKit/source/util/SignalHandler.hpp | 2 + .../util/tests/Test_CommandlineParser.cpp | 2 +- .../SilKitMonitor/PassiveSystemMonitor.cpp | 4 +- .../SystemController.cpp | 7 ---- 32 files changed, 141 insertions(+), 162 deletions(-) create mode 100644 SilKit/source/SilKit.cpp delete mode 100644 SilKit/source/SilKitForceIncludes.cpp diff --git a/Demos/api/Orchestration/SimStep.cpp b/Demos/api/Orchestration/SimStep.cpp index 938b994f5..6a4eb207b 100644 --- a/Demos/api/Orchestration/SimStep.cpp +++ b/Demos/api/Orchestration/SimStep.cpp @@ -8,7 +8,7 @@ using namespace std::chrono_literals; -std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) +static std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) { out << std::chrono::duration_cast(timestamp).count() << "ms"; return out; diff --git a/Demos/api/Orchestration/SimStepAsync.cpp b/Demos/api/Orchestration/SimStepAsync.cpp index 567ba96d8..9249e3042 100644 --- a/Demos/api/Orchestration/SimStepAsync.cpp +++ b/Demos/api/Orchestration/SimStepAsync.cpp @@ -9,7 +9,7 @@ using namespace std::chrono_literals; -std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) +static std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) { out << std::chrono::duration_cast(timestamp).count() << "ms"; return out; diff --git a/Demos/communication/Can/CanDemoCommon.hpp b/Demos/communication/Can/CanDemoCommon.hpp index 7db599036..6d95032dc 100644 --- a/Demos/communication/Can/CanDemoCommon.hpp +++ b/Demos/communication/Can/CanDemoCommon.hpp @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "silkit/services/can/all.hpp" #include "silkit/services/can/string_utils.hpp" #include "silkit/services/logging/ILogger.hpp" @@ -11,7 +13,7 @@ using namespace SilKit::Services::Can; // This is the common behavior used in CanReaderDemo and CanWriterDemo namespace CanDemoCommon { -void FrameTransmitHandler(const CanFrameTransmitEvent& canFrameAck, ILogger* logger) +inline void FrameTransmitHandler(const CanFrameTransmitEvent& canFrameAck, ILogger* logger) { std::stringstream ss; ss << "Receive CAN frame transmit acknowledge: canId=" << canFrameAck.canId << ", status='" << canFrameAck.status @@ -19,7 +21,7 @@ void FrameTransmitHandler(const CanFrameTransmitEvent& canFrameAck, ILogger* log logger->Info(ss.str()); } -void FrameHandler(const CanFrameEvent& canFrameEvent, ILogger* logger, bool printHex) +inline void FrameHandler(const CanFrameEvent& canFrameEvent, ILogger* logger, bool printHex) { std::string frameTypeHint = ""; if ((canFrameEvent.frame.flags & static_cast(CanFrameFlag::Fdf)) != 0) diff --git a/Demos/communication/Ethernet/EthernetDemoCommon.hpp b/Demos/communication/Ethernet/EthernetDemoCommon.hpp index 2afd221f0..686e7bf03 100644 --- a/Demos/communication/Ethernet/EthernetDemoCommon.hpp +++ b/Demos/communication/Ethernet/EthernetDemoCommon.hpp @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "silkit/services/ethernet/all.hpp" #include "silkit/services/ethernet/string_utils.hpp" #include "silkit/services/logging/ILogger.hpp" @@ -14,7 +16,7 @@ namespace EthernetDemoCommon { using EtherType = uint16_t; using EthernetMac = std::array; -void FrameTransmitHandler(const EthernetFrameTransmitEvent& frameTransmitEvent, ILogger* logger) +inline void FrameTransmitHandler(const EthernetFrameTransmitEvent& frameTransmitEvent, ILogger* logger) { std::stringstream ss; if (frameTransmitEvent.status == EthernetTransmitStatus::Transmitted) @@ -45,7 +47,7 @@ void FrameTransmitHandler(const EthernetFrameTransmitEvent& frameTransmitEvent, logger->Info(ss.str()); } -auto PrintPayload(const std::vector& payload, bool printHex) +inline auto PrintPayload(const std::vector& payload, bool printHex) { std::stringstream ss; if (printHex) @@ -59,7 +61,7 @@ auto PrintPayload(const std::vector& payload, bool printHex) return ss.str(); } -void FrameHandler(const EthernetFrameEvent& ethernetFrameEvent, ILogger* logger, bool printHex) +inline void FrameHandler(const EthernetFrameEvent& ethernetFrameEvent, ILogger* logger, bool printHex) { const size_t FrameHeaderSize = 2 * sizeof(EthernetMac) + sizeof(EtherType); std::vector payloadWithoutHeader; diff --git a/Demos/communication/PubSub/PubSubDemoCommon.hpp b/Demos/communication/PubSub/PubSubDemoCommon.hpp index 081eca5ea..1dcabb13b 100644 --- a/Demos/communication/PubSub/PubSubDemoCommon.hpp +++ b/Demos/communication/PubSub/PubSubDemoCommon.hpp @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "silkit/services/pubsub/all.hpp" #include "silkit/services/pubsub/string_utils.hpp" #include "silkit/services/logging/ILogger.hpp" @@ -12,9 +14,15 @@ using namespace SilKit::Services::PubSub; // This are the common data structures used in PublisherDemo and SubscriberDemo namespace PubSubDemoCommon { -const std::string mediaType{SilKit::Util::SerDes::MediaTypeData()}; -PubSubSpec dataSpecGps{"Gps", mediaType}; -PubSubSpec dataSpecTemperature{"Temperature", mediaType}; +inline PubSubSpec MakeGpsSpec() +{ + return {"Gps", SilKit::Util::SerDes::MediaTypeData()}; +} + +inline PubSubSpec MakeTemperatureSpec() +{ + return {"Temperature", SilKit::Util::SerDes::MediaTypeData()}; +} // ---------------------------------------------------------------- // Data structure, serialization and deserialization for GPS Data @@ -26,7 +34,8 @@ struct GpsData double longitude; std::string signalQuality; }; -std::vector SerializeGPSData(const PubSubDemoCommon::GpsData& gpsData) + +inline std::vector SerializeGPSData(const PubSubDemoCommon::GpsData& gpsData) { SilKit::Util::SerDes::Serializer serializer; serializer.BeginStruct(); @@ -38,7 +47,7 @@ std::vector SerializeGPSData(const PubSubDemoCommon::GpsData& gpsData) return serializer.ReleaseBuffer(); } -PubSubDemoCommon::GpsData DeserializeGPSData(const std::vector& eventData) +inline PubSubDemoCommon::GpsData DeserializeGPSData(const std::vector& eventData) { PubSubDemoCommon::GpsData gpsData; @@ -56,7 +65,7 @@ PubSubDemoCommon::GpsData DeserializeGPSData(const std::vector& eventDa // Serialization and deserialization for a double (temperature) // ----------------------------------------------------------------- -std::vector SerializeTemperature(double temperature) +inline std::vector SerializeTemperature(double temperature) { SilKit::Util::SerDes::Serializer temperatureSerializer; temperatureSerializer.Serialize(temperature); @@ -64,7 +73,7 @@ std::vector SerializeTemperature(double temperature) return temperatureSerializer.ReleaseBuffer(); } -double DeserializeTemperature(const std::vector& eventData) +inline double DeserializeTemperature(const std::vector& eventData) { double temperature; diff --git a/Demos/communication/PubSub/PublisherDemo.cpp b/Demos/communication/PubSub/PublisherDemo.cpp index 5994bdf33..7c965fe06 100644 --- a/Demos/communication/PubSub/PublisherDemo.cpp +++ b/Demos/communication/PubSub/PublisherDemo.cpp @@ -21,9 +21,9 @@ class Publisher : public ApplicationBase void CreateControllers() override { - _gpsPublisher = GetParticipant()->CreateDataPublisher("GpsPublisher", PubSubDemoCommon::dataSpecGps, 0); + _gpsPublisher = GetParticipant()->CreateDataPublisher("GpsPublisher", PubSubDemoCommon::MakeGpsSpec(), 0); _temperaturePublisher = - GetParticipant()->CreateDataPublisher("TemperaturePublisher", PubSubDemoCommon::dataSpecTemperature, 0); + GetParticipant()->CreateDataPublisher("TemperaturePublisher", PubSubDemoCommon::MakeTemperatureSpec(), 0); } void InitControllers() override {} diff --git a/Demos/communication/PubSub/SubscriberDemo.cpp b/Demos/communication/PubSub/SubscriberDemo.cpp index af3f4f5e2..8d9883dfb 100644 --- a/Demos/communication/PubSub/SubscriberDemo.cpp +++ b/Demos/communication/PubSub/SubscriberDemo.cpp @@ -22,7 +22,7 @@ class Subscriber : public ApplicationBase void CreateControllers() override { _gpsSubscriber = GetParticipant()->CreateDataSubscriber( - "GpsSubscriber", PubSubDemoCommon::dataSpecGps, + "GpsSubscriber", PubSubDemoCommon::MakeGpsSpec(), [this](IDataSubscriber* /*subscriber*/, const DataMessageEvent& dataMessageEvent) { auto gpsData = PubSubDemoCommon::DeserializeGPSData(SilKit::Util::ToStdVector(dataMessageEvent.data)); @@ -33,7 +33,7 @@ class Subscriber : public ApplicationBase }); _temperatureSubscriber = GetParticipant()->CreateDataSubscriber( - "TemperatureSubscriber", PubSubDemoCommon::dataSpecTemperature, + "TemperatureSubscriber", PubSubDemoCommon::MakeTemperatureSpec(), [this](IDataSubscriber* /*subscriber*/, const DataMessageEvent& dataMessageEvent) { double temperature = PubSubDemoCommon::DeserializeTemperature(SilKit::Util::ToStdVector(dataMessageEvent.data)); diff --git a/Demos/communication/Rpc/RpcClientDemo.cpp b/Demos/communication/Rpc/RpcClientDemo.cpp index 3c051f1b3..f8576f3ea 100644 --- a/Demos/communication/Rpc/RpcClientDemo.cpp +++ b/Demos/communication/Rpc/RpcClientDemo.cpp @@ -23,11 +23,11 @@ class RpcClient : public ApplicationBase void CreateControllers() override { _rpcClientSignalStrength = GetParticipant()->CreateRpcClient( - "ClientSignalStrength", RpcDemoCommon::rpcSpecSignalStrength, + "ClientSignalStrength", RpcDemoCommon::MakeSignalStrengthSpec(), [this](IRpcClient* /*client*/, RpcCallResultEvent event) { CallReturnGetSignalStrength(event); }); _rpcClientSort = GetParticipant()->CreateRpcClient( - "ClientSort", RpcDemoCommon::rpcSpecSort, + "ClientSort", RpcDemoCommon::MakeSortSpec(), [this](IRpcClient* /*client*/, RpcCallResultEvent event) { CallReturnSort(event); }); } diff --git a/Demos/communication/Rpc/RpcDemoCommon.hpp b/Demos/communication/Rpc/RpcDemoCommon.hpp index 95dc39e5f..b45a6f52b 100644 --- a/Demos/communication/Rpc/RpcDemoCommon.hpp +++ b/Demos/communication/Rpc/RpcDemoCommon.hpp @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "silkit/services/rpc/all.hpp" #include "silkit/services/rpc/string_utils.hpp" #include "silkit/services/logging/ILogger.hpp" @@ -9,7 +11,7 @@ using namespace SilKit::Services::Rpc; -static std::ostream& operator<<(std::ostream& os, const SilKit::Util::Span& v) +inline std::ostream& operator<<(std::ostream& os, const SilKit::Util::Span& v) { os << "[ "; for (auto i : v) @@ -18,7 +20,7 @@ static std::ostream& operator<<(std::ostream& os, const SilKit::Util::Span& v) +inline std::ostream& operator<<(std::ostream& os, const std::vector& v) { return os << SilKit::Util::ToSpan(v); } @@ -26,9 +28,15 @@ static std::ostream& operator<<(std::ostream& os, const std::vector& v) // This are the common data structures used in RpcServerDemo and RpcClientDemo namespace RpcDemoCommon { -std::string mediaType{SilKit::Util::SerDes::MediaTypeRpc()}; -RpcSpec rpcSpecSignalStrength{"GetSignalStrength", mediaType}; -RpcSpec rpcSpecSort{"Sort", mediaType}; +inline RpcSpec MakeSignalStrengthSpec() +{ + return {"GetSignalStrength", SilKit::Util::SerDes::MediaTypeRpc()}; +} + +inline RpcSpec MakeSortSpec() +{ + return {"Sort", SilKit::Util::SerDes::MediaTypeRpc()}; +} // ---------------------------------------------------------------- // Data structure, serialization and deserialization for Tuner Data @@ -46,7 +54,7 @@ struct TunerData TunerBand tunerBand; }; -std::vector SerializeTunerData(const TunerData& tunerData) +inline std::vector SerializeTunerData(const TunerData& tunerData) { SilKit::Util::SerDes::Serializer serializer; serializer.BeginStruct(); @@ -57,7 +65,7 @@ std::vector SerializeTunerData(const TunerData& tunerData) return serializer.ReleaseBuffer(); } -TunerData DeserializeTunerData(const std::vector& eventData) +inline TunerData DeserializeTunerData(const std::vector& eventData) { TunerData tunerData; @@ -74,7 +82,7 @@ TunerData DeserializeTunerData(const std::vector& eventData) // Serialization and deserialization for a double (signal strength) // ---------------------------------------------------------------- -std::vector SerializeSignalStrength(double signalStrength) +inline std::vector SerializeSignalStrength(double signalStrength) { SilKit::Util::SerDes::Serializer signalStrengthSerializer; signalStrengthSerializer.Serialize(signalStrength); @@ -82,7 +90,7 @@ std::vector SerializeSignalStrength(double signalStrength) return signalStrengthSerializer.ReleaseBuffer(); } -double DeserializeSignalStrength(const std::vector& eventData) +inline double DeserializeSignalStrength(const std::vector& eventData) { double signalStrength; @@ -96,7 +104,7 @@ double DeserializeSignalStrength(const std::vector& eventData) // Serialization and deserialization for a std::vector // ---------------------------------------------------------------- -std::vector SerializeSortData(const std::vector& numberList) +inline std::vector SerializeSortData(const std::vector& numberList) { SilKit::Util::SerDes::Serializer serializer; serializer.Serialize(numberList); @@ -104,7 +112,7 @@ std::vector SerializeSortData(const std::vector& numberList) return serializer.ReleaseBuffer(); } -std::vector DeserializeSortData(const std::vector& eventData) +inline std::vector DeserializeSortData(const std::vector& eventData) { SilKit::Util::SerDes::Deserializer deserializer(eventData); std::vector numberList = deserializer.Deserialize>(); @@ -112,7 +120,7 @@ std::vector DeserializeSortData(const std::vector& eventData) return numberList; } -bool EvaluateCallStatus(RpcCallResultEvent callResult, ILogger* logger) +inline bool EvaluateCallStatus(RpcCallResultEvent callResult, ILogger* logger) { std::stringstream ss; bool isSuccessful = false; diff --git a/Demos/communication/Rpc/RpcServerDemo.cpp b/Demos/communication/Rpc/RpcServerDemo.cpp index 15b466021..e83de2a86 100644 --- a/Demos/communication/Rpc/RpcServerDemo.cpp +++ b/Demos/communication/Rpc/RpcServerDemo.cpp @@ -24,7 +24,7 @@ class RpcServer : public ApplicationBase void CreateControllers() override { _rpcServerSignalStrength = - GetParticipant()->CreateRpcServer("ServerSignalStrength", RpcDemoCommon::rpcSpecSignalStrength, + GetParticipant()->CreateRpcServer("ServerSignalStrength", RpcDemoCommon::MakeSignalStrengthSpec(), [this](IRpcServer* server, RpcCallEvent event) { auto tunerData = RpcDemoCommon::DeserializeTunerData(SilKit::Util::ToStdVector(event.argumentData)); @@ -63,7 +63,7 @@ class RpcServer : public ApplicationBase server->SubmitResult(event.callHandle, serializer.ReleaseBuffer()); }); - _rpcServerSort = GetParticipant()->CreateRpcServer("ServerSort", RpcDemoCommon::rpcSpecSort, + _rpcServerSort = GetParticipant()->CreateRpcServer("ServerSort", RpcDemoCommon::MakeSortSpec(), [this](IRpcServer* server, RpcCallEvent event) { // Deserialize incoming data auto argumentData = RpcDemoCommon::DeserializeSortData(SilKit::Util::ToStdVector(event.argumentData)); diff --git a/Demos/communication/include/ApplicationBase.hpp b/Demos/communication/include/ApplicationBase.hpp index d8d3969f2..8a7cb7f3e 100644 --- a/Demos/communication/include/ApplicationBase.hpp +++ b/Demos/communication/include/ApplicationBase.hpp @@ -40,7 +40,7 @@ struct Arguments }; std::shared_ptr _participantConfiguration{nullptr}; -std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) +inline std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) { out << std::chrono::duration_cast(timestamp).count() << "ms"; return out; diff --git a/Demos/communication/include/SignalHandler.hpp b/Demos/communication/include/SignalHandler.hpp index 3464c31cf..3d0b7779f 100644 --- a/Demos/communication/include/SignalHandler.hpp +++ b/Demos/communication/include/SignalHandler.hpp @@ -22,7 +22,7 @@ static std::unique_ptr gSignalMonitor; //////////////////////////////////////////// // Inline Platform Specific Implementations //////////////////////////////////////////// -#if WIN32 +#if defined(_WIN32) #ifndef NOMINMAX #define NOMINMAX #endif @@ -251,12 +251,12 @@ void systemHandler(const int sigNum) //! \brief RegisterSignalHandler can be used to portably register a single signal handler. // It only relies on async-signal-safe C functions internally, but // it uses a dedicated thread which safely runs the user-provided handler. -void RegisterSignalHandler(SignalHandler handler) +inline void RegisterSignalHandler(SignalHandler handler) { gSignalMonitor.reset(new SignalMonitor(std::move(handler))); } -void ShutdownSignalHandler() +inline void ShutdownSignalHandler() { gSignalMonitor.reset(); } diff --git a/Demos/tools/Benchmark/BenchmarkDemo.cpp b/Demos/tools/Benchmark/BenchmarkDemo.cpp index 5459777ac..64801c4b1 100644 --- a/Demos/tools/Benchmark/BenchmarkDemo.cpp +++ b/Demos/tools/Benchmark/BenchmarkDemo.cpp @@ -44,14 +44,14 @@ using namespace SilKit::Services::Ethernet; using namespace SilKit::Services::Can; using namespace std::chrono_literals; -std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) +static std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) { const auto seconds = std::chrono::duration_cast>>(timestamp); out << seconds.count() << "s"; return out; } -void PrintUsage(const std::string& executableName) +static void PrintUsage(const std::string& executableName) { std::cout << "Usage:" << std::endl @@ -83,7 +83,7 @@ enum class ServiceType Ethernet }; -std::ostream& operator<<(std::ostream& outStream, const ServiceType& service) +static std::ostream& operator<<(std::ostream& outStream, const ServiceType& service) { switch (service) { @@ -102,7 +102,7 @@ std::ostream& operator<<(std::ostream& outStream, const ServiceType& service) return outStream; } -std::string to_string(const ServiceType& service) +static std::string to_string(const ServiceType& service) { std::stringstream outStream; outStream << service; @@ -123,7 +123,7 @@ struct BenchmarkConfig ServiceType service = ServiceType::PubSub; }; -bool Parse(int argc, char** argv, BenchmarkConfig& config) +static bool Parse(int argc, char** argv, BenchmarkConfig& config) { // skip argv[0] and collect all arguments std::vector args; @@ -287,7 +287,7 @@ bool Parse(int argc, char** argv, BenchmarkConfig& config) return true; } -bool Validate(const BenchmarkConfig& config) +static bool Validate(const BenchmarkConfig& config) { if (config.numberOfParticipants < 2) { @@ -324,7 +324,7 @@ bool Validate(const BenchmarkConfig& config) return true; } -void CheckAndTruncateMessageSize(BenchmarkConfig& benchmark) +static void CheckAndTruncateMessageSize(BenchmarkConfig& benchmark) { const uint32_t maxSizeEth = 1500; const uint32_t maxSizeCan = 8; @@ -345,7 +345,7 @@ void CheckAndTruncateMessageSize(BenchmarkConfig& benchmark) } } -void PublishMessages(IDataPublisher* publisher, uint32_t messageCount, uint32_t messageSizeInBytes) +static void PublishMessages(IDataPublisher* publisher, uint32_t messageCount, uint32_t messageSizeInBytes) { std::vector data(messageSizeInBytes, '*'); for (uint32_t i = 0; i < messageCount; i++) @@ -354,7 +354,7 @@ void PublishMessages(IDataPublisher* publisher, uint32_t messageCount, uint32_t } } -void SendEthernetFrames(IEthernetController* ethernetController, uint32_t messageCount, uint32_t messageSizeInBytes) +static void SendEthernetFrames(IEthernetController* ethernetController, uint32_t messageCount, uint32_t messageSizeInBytes) { std::vector frameData(messageSizeInBytes, '*'); for (uint32_t i = 0; i < messageCount; i++) @@ -363,7 +363,7 @@ void SendEthernetFrames(IEthernetController* ethernetController, uint32_t messag } } -void SendCanFrames(ICanController* canController, uint32_t messageCount, uint32_t messageSizeInBytes) +static void SendCanFrames(ICanController* canController, uint32_t messageCount, uint32_t messageSizeInBytes) { std::vector frameData(messageSizeInBytes, '*'); for (uint32_t i = 0; i < messageCount; i++) @@ -375,7 +375,7 @@ void SendCanFrames(ICanController* canController, uint32_t messageCount, uint32_ } } -void ParticipantsThread(std::shared_ptr config, +static void ParticipantsThread(std::shared_ptr config, const BenchmarkConfig& benchmark, const std::string& participantName, uint32_t participantIndex) { auto participant = SilKit::CreateParticipant(config, participantName, benchmark.registryUri); @@ -459,7 +459,7 @@ void ParticipantsThread(std::shared_ptr>>(timestamp); out << seconds.count() << "s"; return out; } -void PrintUsage(const std::string& executableName) +static void PrintUsage(const std::string& executableName) { std::cout << "Usage:" << std::endl @@ -77,7 +77,7 @@ struct BenchmarkConfig std::string writeCsv = ""; }; -bool Parse(int argc, char** argv, BenchmarkConfig& config) +static bool Parse(int argc, char** argv, BenchmarkConfig& config) { // skip argv[0] and collect all arguments std::vector args; @@ -206,7 +206,7 @@ bool Parse(int argc, char** argv, BenchmarkConfig& config) return true; } -bool Validate(const BenchmarkConfig& config) +static bool Validate(const BenchmarkConfig& config) { if (config.messageCount < 1) { @@ -222,7 +222,7 @@ bool Validate(const BenchmarkConfig& config) return true; } -void PrintParameters(BenchmarkConfig benchmark) +static void PrintParameters(BenchmarkConfig benchmark) { #ifndef NDEBUG std::cout << "WARNING: The latency demo is executed in a DEBUG build configuration." << std::endl diff --git a/SilKit/source/CMakeLists.txt b/SilKit/source/CMakeLists.txt index e4df8d7f5..0eb290e34 100644 --- a/SilKit/source/CMakeLists.txt +++ b/SilKit/source/CMakeLists.txt @@ -244,7 +244,7 @@ target_link_libraries(S_SilKitImpl add_library(SilKit ${silkitLibType} - SilKitForceIncludes.cpp + SilKit.cpp ) if(SILKIT_BUILD_STATIC) diff --git a/SilKit/source/SilKit.cpp b/SilKit/source/SilKit.cpp new file mode 100644 index 000000000..61a3cf48e --- /dev/null +++ b/SilKit/source/SilKit.cpp @@ -0,0 +1,3 @@ +// SPDX-FileCopyrightText: 2022 Vector Informatik GmbH +// +// SPDX-License-Identifier: MIT diff --git a/SilKit/source/SilKitForceIncludes.cpp b/SilKit/source/SilKitForceIncludes.cpp deleted file mode 100644 index a8909a27d..000000000 --- a/SilKit/source/SilKitForceIncludes.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Vector Informatik GmbH -// -// SPDX-License-Identifier: MIT - -#include "silkit/config/IParticipantConfiguration.hpp" -#include "silkit/experimental/participant/ParticipantExtensions.hpp" -#include "silkit/experimental/services/lin/LinControllerExtensions.hpp" -#include "silkit/SilKitMacros.hpp" - -#include "extensions/SilKitExtensionImpl/CreateMdf4Tracing.hpp" - -/*! \brief Dummy compilation unit to pull in exports from other silkit libs - * - * If you are missing an export from a silkit lib, just add a dummy - * function that uses the missing methods or functions. - */ - -void __silkit_force_include_extensions_mdf4() -{ - SilKit::CreateMdf4Tracing({}, nullptr, "", ""); - SilKit::CreateMdf4Replay({}, nullptr, ""); -} - -void __silkit_force_include_participant_configuration() -{ - auto foo1 = SilKit::Config::ParticipantConfigurationFromString(""); - auto foo2 = SilKit::Config::ParticipantConfigurationFromFile(""); -} - -void __silkit_force_include_experimental() -{ - // Participant extensions - auto systemController = SilKit::Experimental::Participant::CreateSystemController(nullptr); - SILKIT_UNUSED_ARG(systemController); - - // LinController extensions - auto handlerId = SilKit::Experimental::Services::Lin::AddLinSlaveConfigurationHandler(nullptr, nullptr); - SILKIT_UNUSED_ARG(handlerId); - SilKit::Experimental::Services::Lin::RemoveLinSlaveConfigurationHandler(nullptr, SilKit::Util::HandlerId{}); - auto slaveConfig = SilKit::Experimental::Services::Lin::GetSlaveConfiguration(nullptr); - SILKIT_UNUSED_ARG(slaveConfig); -} diff --git a/SilKit/source/core/vasio/Test_RingBuffer.cpp b/SilKit/source/core/vasio/Test_RingBuffer.cpp index ceb18a82a..ac1b6a7a7 100644 --- a/SilKit/source/core/vasio/Test_RingBuffer.cpp +++ b/SilKit/source/core/vasio/Test_RingBuffer.cpp @@ -13,7 +13,7 @@ using namespace SilKit::Core; static std::mt19937 generator{0}; // constant seed for deterministic behaviour -std::vector > GenerateDataBlocks(const size_t maxSize, const size_t numDataBlocks) +static std::vector > GenerateDataBlocks(const size_t maxSize, const size_t numDataBlocks) { std::vector > dataBlocks; @@ -39,7 +39,7 @@ std::vector > GenerateDataBlocks(const size_t maxSize, cons } // mimic use of ring buffer in VAsioPeer (writing into ring buffer) -void Write(RingBuffer& ringBuffer, const std::vector& dataBlock) +static void Write(RingBuffer& ringBuffer, const std::vector& dataBlock) { std::vector bufferArrays; ringBuffer.GetWritingBuffers(bufferArrays); diff --git a/SilKit/source/core/vasio/Test_VAsioSerdes.cpp b/SilKit/source/core/vasio/Test_VAsioSerdes.cpp index aaad3470e..0312572ea 100644 --- a/SilKit/source/core/vasio/Test_VAsioSerdes.cpp +++ b/SilKit/source/core/vasio/Test_VAsioSerdes.cpp @@ -13,23 +13,23 @@ using namespace std::chrono_literals; namespace SilKit { namespace Core { -bool operator==(const VAsioPeerInfo& lhs, const VAsioPeerInfo& rhs) +static bool operator==(const VAsioPeerInfo& lhs, const VAsioPeerInfo& rhs) { return lhs.participantId == rhs.participantId && lhs.participantName == rhs.participantName && lhs.acceptorUris == rhs.acceptorUris && lhs.capabilities == rhs.capabilities; } -bool operator==(const ParticipantAnnouncement& lhs, const ParticipantAnnouncement& rhs) +static bool operator==(const ParticipantAnnouncement& lhs, const ParticipantAnnouncement& rhs) { return lhs.messageHeader == rhs.messageHeader && lhs.peerInfo == rhs.peerInfo; } -bool operator==(const ParticipantAnnouncementReply& lhs, const ParticipantAnnouncementReply& rhs) +static bool operator==(const ParticipantAnnouncementReply& lhs, const ParticipantAnnouncementReply& rhs) { return lhs.subscribers == rhs.subscribers; } -bool operator==(const KnownParticipants& lhs, const KnownParticipants& rhs) +static bool operator==(const KnownParticipants& lhs, const KnownParticipants& rhs) { return lhs.messageHeader == rhs.messageHeader && lhs.peerInfos == rhs.peerInfos; } diff --git a/SilKit/source/dashboard/service/SilKitToOatppMapper.cpp b/SilKit/source/dashboard/service/SilKitToOatppMapper.cpp index 4ce3fecbc..9bb588f28 100644 --- a/SilKit/source/dashboard/service/SilKitToOatppMapper.cpp +++ b/SilKit/source/dashboard/service/SilKitToOatppMapper.cpp @@ -59,7 +59,7 @@ auto GetSupplementalDataValueAsEndpointId(const SilKit::Core::ServiceDescriptor& } // namespace -oatpp::Object CreateSimulationConfigurationDto(const std::string& connectUri) +static oatpp::Object CreateSimulationConfigurationDto(const std::string& connectUri) { auto configuration = SimulationConfigurationDto::createShared(); configuration->connectUri = connectUri; @@ -75,7 +75,7 @@ oatpp::Object SilKitToOatppMapper::CreateSimulatio return simulation; } -SystemState MapSystemState(Services::Orchestration::SystemState systemState) +static SystemState MapSystemState(Services::Orchestration::SystemState systemState) { switch (systemState) { @@ -118,7 +118,7 @@ oatpp::Object SilKitToOatppMapper::CreateSystemStatusDto( return status; } -ParticipantState MapParticipantState(Services::Orchestration::ParticipantState state) +static ParticipantState MapParticipantState(Services::Orchestration::ParticipantState state) { switch (state) { @@ -164,7 +164,7 @@ oatpp::Object SilKitToOatppMapper::CreateParticipantStatus return status; } -LabelKind MapLabelKind(Services::MatchingLabel::Kind labelKind) +static LabelKind MapLabelKind(Services::MatchingLabel::Kind labelKind) { switch (labelKind) { @@ -177,7 +177,7 @@ LabelKind MapLabelKind(Services::MatchingLabel::Kind labelKind) } } -oatpp::Object CreateMatchingLabelDto(const Services::MatchingLabel& matchingLabel) +static oatpp::Object CreateMatchingLabelDto(const Services::MatchingLabel& matchingLabel) { auto label = oatpp::Object::createShared(); label->key = matchingLabel.key; @@ -186,7 +186,7 @@ oatpp::Object CreateMatchingLabelDto(const Services::MatchingL return label; } -oatpp::Vector> CreateMatchingLabels(const Core::ServiceDescriptor& serviceDescriptor, +static oatpp::Vector> CreateMatchingLabels(const Core::ServiceDescriptor& serviceDescriptor, const std::string& labelsKey) { auto labels = oatpp::Vector>::createShared(); @@ -213,7 +213,7 @@ oatpp::Object SilKitToOatppMapper::CreateServiceDto(const Core::Serv return controller; } -oatpp::Object CreateDataSpecDto(const Core::ServiceDescriptor& serviceDescriptor, +static oatpp::Object CreateDataSpecDto(const Core::ServiceDescriptor& serviceDescriptor, const std::string& topicKey, const std::string& mediaTypeKey, const std::string& labelsKey) { @@ -225,7 +225,7 @@ oatpp::Object CreateDataSpecDto(const Core::ServiceDescriptor& serv } -oatpp::Object CreateRpcSpecDto(const Core::ServiceDescriptor& serviceDescriptor, +static oatpp::Object CreateRpcSpecDto(const Core::ServiceDescriptor& serviceDescriptor, const std::string& functionNameKey, const std::string& mediaTypeKey, const std::string& labelsKey) { diff --git a/SilKit/source/services/can/CanSerdes.cpp b/SilKit/source/services/can/CanSerdes.cpp index a76bd5274..d559943c3 100644 --- a/SilKit/source/services/can/CanSerdes.cpp +++ b/SilKit/source/services/can/CanSerdes.cpp @@ -11,63 +11,63 @@ namespace SilKit { namespace Services { namespace Can { -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const WireCanFrameEvent& msg) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const WireCanFrameEvent& msg) { buffer << msg.timestamp << msg.frame.canId << msg.frame.flags << msg.frame.dlc << msg.frame.sdt << msg.frame.vcid << msg.frame.af << msg.frame.dataField << msg.direction << msg.userContext; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, WireCanFrameEvent& msg) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, WireCanFrameEvent& msg) { buffer >> msg.timestamp >> msg.frame.canId >> msg.frame.flags >> msg.frame.dlc >> msg.frame.sdt >> msg.frame.vcid >> msg.frame.af >> msg.frame.dataField >> msg.direction >> msg.userContext; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanFrameTransmitEvent& ack) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanFrameTransmitEvent& ack) { buffer << ack.canId << ack.timestamp << ack.status << ack.userContext; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanFrameTransmitEvent& ack) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanFrameTransmitEvent& ack) { buffer >> ack.canId >> ack.timestamp >> ack.status >> ack.userContext; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanControllerStatus& msg) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanControllerStatus& msg) { buffer << msg.timestamp << msg.controllerState << msg.errorState; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanControllerStatus& msg) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanControllerStatus& msg) { buffer >> msg.timestamp >> msg.controllerState >> msg.errorState; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanConfigureBaudrate& msg) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanConfigureBaudrate& msg) { buffer << msg.baudRate << msg.fdBaudRate << msg.xlBaudRate; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanConfigureBaudrate& msg) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanConfigureBaudrate& msg) { buffer >> msg.baudRate >> msg.fdBaudRate >> msg.xlBaudRate; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanSetControllerMode& msg) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const CanSetControllerMode& msg) { buffer << *reinterpret_cast(&msg.flags) << msg.mode; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanSetControllerMode& msg) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, CanSetControllerMode& msg) { uint8_t flags; buffer >> flags >> msg.mode; diff --git a/SilKit/source/services/lin/LinSerdes.cpp b/SilKit/source/services/lin/LinSerdes.cpp index 26955777d..7ef67994e 100644 --- a/SilKit/source/services/lin/LinSerdes.cpp +++ b/SilKit/source/services/lin/LinSerdes.cpp @@ -9,78 +9,78 @@ namespace SilKit { namespace Services { namespace Lin { -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinFrame& frame) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinFrame& frame) { buffer << frame.id << frame.checksumModel << frame.dataLength << frame.data; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinFrame& frame) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinFrame& frame) { buffer >> frame.id >> frame.checksumModel >> frame.dataLength >> frame.data; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinSendFrameRequest& frame) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinSendFrameRequest& frame) { buffer << frame.frame << frame.responseType; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinSendFrameRequest& frame) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinSendFrameRequest& frame) { buffer >> frame.frame >> frame.responseType; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinSendFrameHeaderRequest& header) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinSendFrameHeaderRequest& header) { buffer << header.timestamp << header.id; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinSendFrameHeaderRequest& header) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinSendFrameHeaderRequest& header) { buffer >> header.timestamp >> header.id; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinTransmission& transmission) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinTransmission& transmission) { buffer << transmission.timestamp << transmission.frame << transmission.status; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinTransmission& transmission) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinTransmission& transmission) { buffer >> transmission.timestamp >> transmission.frame >> transmission.status; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinWakeupPulse& pulse) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinWakeupPulse& pulse) { buffer << pulse.timestamp << pulse.direction; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinWakeupPulse& pulse) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinWakeupPulse& pulse) { buffer >> pulse.timestamp >> pulse.direction; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinFrameResponse& response) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinFrameResponse& response) { buffer << response.frame << response.responseMode; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinFrameResponse& response) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinFrameResponse& response) { buffer >> response.frame >> response.responseMode; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const WireLinControllerConfig& config) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const WireLinControllerConfig& config) { buffer << config.controllerMode << config.baudRate << config.frameResponses << config.simulationMode; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, WireLinControllerConfig& config) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, WireLinControllerConfig& config) { buffer >> config.controllerMode >> config.baudRate >> config.frameResponses; if (buffer.RemainingBytesLeft() >= sizeof(WireLinControllerConfig::SimulationMode)) @@ -90,23 +90,23 @@ SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, Wir return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinControllerStatusUpdate& msg) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinControllerStatusUpdate& msg) { buffer << msg.timestamp << msg.status; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinControllerStatusUpdate& msg) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinControllerStatusUpdate& msg) { buffer >> msg.timestamp >> msg.status; return buffer; } -SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinFrameResponseUpdate& update) +static SilKit::Core::MessageBuffer& operator<<(SilKit::Core::MessageBuffer& buffer, const LinFrameResponseUpdate& update) { buffer << update.frameResponses; return buffer; } -SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinFrameResponseUpdate& update) +static SilKit::Core::MessageBuffer& operator>>(SilKit::Core::MessageBuffer& buffer, LinFrameResponseUpdate& update) { buffer >> update.frameResponses; return buffer; diff --git a/SilKit/source/services/logging/Logger.cpp b/SilKit/source/services/logging/Logger.cpp index 12a67d58c..7b3081bb3 100644 --- a/SilKit/source/services/logging/Logger.cpp +++ b/SilKit/source/services/logging/Logger.cpp @@ -72,7 +72,7 @@ class epoch_formatter_flag : public spdlog::custom_flag_formatter }; -std::string KeyValuesToSimpleString(const std::vector>& input) +static std::string KeyValuesToSimpleString(const std::vector>& input) { std::string result; result.reserve(input.size() * 2); @@ -91,7 +91,7 @@ std::string KeyValuesToSimpleString(const std::vector>& input) +static std::string KeyValuesToJsonString(const std::vector>& input) { std::string result; result.reserve(input.size() * 2); @@ -293,9 +293,8 @@ Logger::Logger(const std::string& participantName, Config::Logging config) case Config::Sink::Type::Stdout: { -#if _WIN32 +#if defined(_WIN32) auto stdoutSink = std::make_shared(); - #else auto stdoutSink = std::make_shared(); #endif diff --git a/SilKit/source/services/metrics/Test_MetricsJsonSink.cpp b/SilKit/source/services/metrics/Test_MetricsJsonSink.cpp index 5f3806169..65260fba5 100644 --- a/SilKit/source/services/metrics/Test_MetricsJsonSink.cpp +++ b/SilKit/source/services/metrics/Test_MetricsJsonSink.cpp @@ -18,7 +18,7 @@ namespace VSilKit { -bool read(const ryml::ConstNodeRef& node, MetricData* obj) +static bool read(const ryml::ConstNodeRef& node, MetricData* obj) { std::string kind; node["ts"] >> obj->timestamp; @@ -47,7 +47,9 @@ bool read(const ryml::ConstNodeRef& node, MetricData* obj) throw SilKit::ConfigurationError{"Invalid MetricData.kind " + kind}; return true; } + } // namespace VSilKit + namespace { using VSilKit::MetricData; diff --git a/SilKit/source/util/LabelMatching.cpp b/SilKit/source/util/LabelMatching.cpp index 6e2b969ac..92facff74 100644 --- a/SilKit/source/util/LabelMatching.cpp +++ b/SilKit/source/util/LabelMatching.cpp @@ -10,7 +10,7 @@ namespace Util { using namespace SilKit::Services; -std::optional TryFindLabelByKey(const std::string& key, const std::vector& labels) +static std::optional TryFindLabelByKey(const std::string& key, const std::vector& labels) { for (auto it : labels) { @@ -22,7 +22,7 @@ std::optional TryFindLabelByKey(const std::string& key, const std return std::optional(); } -bool LabelMatchesLabelList(MatchingLabel label, const std::vector& labels) +static bool LabelMatchesLabelList(MatchingLabel label, const std::vector& labels) { auto foundLabel = TryFindLabelByKey(label.key, labels); diff --git a/SilKit/source/util/SetThreadName.cpp b/SilKit/source/util/SetThreadName.cpp index 5901bbf21..eceb964e1 100644 --- a/SilKit/source/util/SetThreadName.cpp +++ b/SilKit/source/util/SetThreadName.cpp @@ -7,8 +7,8 @@ #include "silkit/capi/SilKitMacros.h" -#if _WIN32 -#include // HANDLE, PCWSTR +#if defined(_WIN32) +#include // HANDLE, PCWSTR #else // posix #include #endif diff --git a/SilKit/source/util/SetThreadName.hpp b/SilKit/source/util/SetThreadName.hpp index fde2b5192..96e7a6c85 100644 --- a/SilKit/source/util/SetThreadName.hpp +++ b/SilKit/source/util/SetThreadName.hpp @@ -2,9 +2,10 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include -#pragma once namespace SilKit { namespace Util { diff --git a/SilKit/source/util/SignalHandler.cpp b/SilKit/source/util/SignalHandler.cpp index 85d25a9f8..5bcf3eaa4 100644 --- a/SilKit/source/util/SignalHandler.cpp +++ b/SilKit/source/util/SignalHandler.cpp @@ -18,8 +18,8 @@ static std::unique_ptr gSignalMonitor; //////////////////////////////////////////// // Inline Platform Specific Implementations //////////////////////////////////////////// -#if WIN32 -#include +#if defined(_WIN32) +#include namespace { using namespace SilKit::Util; diff --git a/SilKit/source/util/SignalHandler.hpp b/SilKit/source/util/SignalHandler.hpp index 526b1d115..c86dd4b38 100644 --- a/SilKit/source/util/SignalHandler.hpp +++ b/SilKit/source/util/SignalHandler.hpp @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include namespace SilKit { diff --git a/SilKit/source/util/tests/Test_CommandlineParser.cpp b/SilKit/source/util/tests/Test_CommandlineParser.cpp index ee5c6e0cf..8e5f8828d 100644 --- a/SilKit/source/util/tests/Test_CommandlineParser.cpp +++ b/SilKit/source/util/tests/Test_CommandlineParser.cpp @@ -22,7 +22,7 @@ using ::testing::InSequence; using ::testing::NiceMock; using ::testing::Throw; -auto BuildArguments(const std::vector& arguments) -> std::vector +static auto BuildArguments(const std::vector& arguments) -> std::vector { std::vector argv; for (const auto& arg : arguments) diff --git a/Utilities/SilKitMonitor/PassiveSystemMonitor.cpp b/Utilities/SilKitMonitor/PassiveSystemMonitor.cpp index 84c3f4a56..975d4aacb 100644 --- a/Utilities/SilKitMonitor/PassiveSystemMonitor.cpp +++ b/Utilities/SilKitMonitor/PassiveSystemMonitor.cpp @@ -28,14 +28,14 @@ using namespace std::chrono_literals; using CliParser = SilKit::Util::CommandlineParser; -std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) +static std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) { auto seconds = std::chrono::duration_cast>>(timestamp); out << seconds.count() << "s"; return out; } -auto getConfig(const std::string& configurationFilename, const std::string& logLevel) +static auto getConfig(const std::string& configurationFilename, const std::string& logLevel) { if (!configurationFilename.empty()) { diff --git a/Utilities/SilKitSystemController/SystemController.cpp b/Utilities/SilKitSystemController/SystemController.cpp index baa16bfc6..8320dc958 100644 --- a/Utilities/SilKitSystemController/SystemController.cpp +++ b/Utilities/SilKitSystemController/SystemController.cpp @@ -33,13 +33,6 @@ using CliParser = SilKit::Util::CommandlineParser; using namespace std::chrono_literals; -std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) -{ - auto seconds = std::chrono::duration_cast>>(timestamp); - out << seconds.count() << "s"; - return out; -} - namespace { class SilKitController From 56f046820e74b3f6ae794d7d2e90403d924aa940 Mon Sep 17 00:00:00 2001 From: Daniel Edwards Date: Thu, 7 May 2026 10:59:28 +0200 Subject: [PATCH 2/5] quality: use more warning flags Signed-off-by: Daniel Edwards --- SilKit/cmake/SilKitBuildSettings.cmake | 39 ++++++++++++------------- SilKit/source/extensions/CMakeLists.txt | 10 +++---- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/SilKit/cmake/SilKitBuildSettings.cmake b/SilKit/cmake/SilKitBuildSettings.cmake index bfad13d28..db35764a5 100644 --- a/SilKit/cmake/SilKitBuildSettings.cmake +++ b/SilKit/cmake/SilKitBuildSettings.cmake @@ -88,38 +88,35 @@ function(silkit_enable_warnings isOn) /wd4389 # too many bogus signed/unsigned warnings in VS2017 Win32 ) endif() - elseif(MINGW) - set(_flags - -pedantic - -Wall - -Wextra - -Wcast-align - -Wpacked - -Wno-implicit-fallthrough - -Wno-error=dangling-reference - - -Wno-shadow # Appears in ThirdParty/spdlog/include/spdlog/common.h:214:9 - -Wno-format # MinGW-gcc does not recognize %zu - -Wno-unused-parameter # follow up of the %zu format bug, a lot of unused parameters - -Wstrict-overflow=1 # > 1 fails in fmt-6.1.0 - ${_warnAsError} - ) else() set(_flags -pedantic -Wall -Wextra + -Wcast-align -Wpacked - -Wno-implicit-fallthrough -Wformat=2 + -Wmissing-declarations + -Wundef + -Wunused + -Wstrict-overflow=2 - -Wno-shadow # Appears in ThirdParty/spdlog/include/spdlog/common.h:214:9 - -Wno-format-nonliteral # Warning in fmt-6.1.0/include/fmt/chrono.h:392:48 - -Wstrict-overflow=1 # > 1 fails in fmt-6.1.0 ${_warnAsError} - ) + ) + endif() + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(_flags ${_flags} + -Wimplicit-fallthrough=2 + ) + endif() + + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + set(_flags ${_flags} + -Wno-implicit-fallthrough + -Wno-undef + ) endif() # Suppress flaky dangling-reference warning diff --git a/SilKit/source/extensions/CMakeLists.txt b/SilKit/source/extensions/CMakeLists.txt index b1d25ec20..83d899ce9 100755 --- a/SilKit/source/extensions/CMakeLists.txt +++ b/SilKit/source/extensions/CMakeLists.txt @@ -56,12 +56,10 @@ if(UNIX) #make sure we don't compile obviously bad code target_compile_options(O_SilKit_Extensions PRIVATE - -pedantic -Wall -Wextra - -Wcast-align -Wformat=2 -Wmissing-declarations - -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-overflow=5 - -Wundef -Wno-unused - -Wpacked - -Werror -Wfatal-errors + -Wshadow + -Wsign-conversion + -Wsign-promo + -Wstrict-overflow=5 ) elseif(MSVC OR MINGW) From 02f661cb7b9d81c3976f3b9736cdbd1d9bf312de Mon Sep 17 00:00:00 2001 From: Daniel Edwards Date: Fri, 8 May 2026 08:44:03 +0200 Subject: [PATCH 3/5] fixup! quality: use more warning flags Signed-off-by: Daniel Edwards --- SilKit/cmake/SilKitBuildSettings.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SilKit/cmake/SilKitBuildSettings.cmake b/SilKit/cmake/SilKitBuildSettings.cmake index db35764a5..0b8488857 100644 --- a/SilKit/cmake/SilKitBuildSettings.cmake +++ b/SilKit/cmake/SilKitBuildSettings.cmake @@ -112,7 +112,7 @@ function(silkit_enable_warnings isOn) ) endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") set(_flags ${_flags} -Wno-implicit-fallthrough -Wno-undef From 7753ac2329ba8a5c23952fcdf67b24920eff1b54 Mon Sep 17 00:00:00 2001 From: Daniel Edwards Date: Fri, 8 May 2026 08:44:24 +0200 Subject: [PATCH 4/5] fixup! quality: pragma once, static linkage for TUs, inline definitions for headers, ifdefs, dummy source Signed-off-by: Daniel Edwards --- Demos/tools/Benchmark/BenchmarkDemo.cpp | 7 ------- Demos/tools/Benchmark/LatencyDemo.cpp | 7 ------- 2 files changed, 14 deletions(-) diff --git a/Demos/tools/Benchmark/BenchmarkDemo.cpp b/Demos/tools/Benchmark/BenchmarkDemo.cpp index 64801c4b1..c4cad666c 100644 --- a/Demos/tools/Benchmark/BenchmarkDemo.cpp +++ b/Demos/tools/Benchmark/BenchmarkDemo.cpp @@ -102,13 +102,6 @@ static std::ostream& operator<<(std::ostream& outStream, const ServiceType& serv return outStream; } -static std::string to_string(const ServiceType& service) -{ - std::stringstream outStream; - outStream << service; - return outStream.str(); -} - struct BenchmarkConfig { uint32_t numberOfSimulationRuns = 4; diff --git a/Demos/tools/Benchmark/LatencyDemo.cpp b/Demos/tools/Benchmark/LatencyDemo.cpp index 01578b208..35b47dc05 100644 --- a/Demos/tools/Benchmark/LatencyDemo.cpp +++ b/Demos/tools/Benchmark/LatencyDemo.cpp @@ -42,13 +42,6 @@ using namespace SilKit::Config; using namespace SilKit::Services::PubSub; using namespace std::chrono_literals; -static std::ostream& operator<<(std::ostream& out, std::chrono::nanoseconds timestamp) -{ - const auto seconds = std::chrono::duration_cast>>(timestamp); - out << seconds.count() << "s"; - return out; -} - static void PrintUsage(const std::string& executableName) { std::cout From 87c5f6798f59c9a3c3f49eb0c055dfbe37270391 Mon Sep 17 00:00:00 2001 From: Daniel Edwards Date: Fri, 8 May 2026 08:47:25 +0200 Subject: [PATCH 5/5] docs: update changelog Signed-off-by: Daniel Edwards --- docs/changelog/versions/latest.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog/versions/latest.md b/docs/changelog/versions/latest.md index 7a50ef557..4f495bca1 100644 --- a/docs/changelog/versions/latest.md +++ b/docs/changelog/versions/latest.md @@ -4,3 +4,8 @@ - `cmake`: merged almost all internal CMake `INTERFACE` libraries into `I_SilKit` - `third-party`: update `oatpp` to version 1.3.1 +- `quality`: following small improvements + - add missing `#pragma one` + - add `static` to some TU-local functions + - add `inline` to some header-defined functions + - remove an obsolete source file