From 05fc12ef7a6f8a2c21be1c2b4eaf44d2ca61ec28 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 10 Apr 2025 14:45:18 +0200 Subject: [PATCH] Prototype input-range-of --- .../Summary/RiaSummaryAddressAnalyzer.cpp | 22 ------------ .../Tools/Summary/RiaSummaryAddressAnalyzer.h | 34 +++++++++++++++++-- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.cpp b/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.cpp index 642e636d991..206b747bd49 100644 --- a/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.cpp +++ b/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.cpp @@ -38,28 +38,6 @@ RiaSummaryAddressAnalyzer::RiaSummaryAddressAnalyzer() { } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RiaSummaryAddressAnalyzer::appendAddresses( const std::vector& allAddresses ) -{ - for ( const auto& adr : allAddresses ) - { - analyzeSingleAddress( adr ); - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RiaSummaryAddressAnalyzer::appendAddresses( const std::set& allAddresses ) -{ - for ( const auto& adr : allAddresses ) - { - analyzeSingleAddress( adr ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.h b/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.h index 4b92e31dca0..481d4ddf897 100644 --- a/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.h +++ b/ApplicationLibCode/Application/Tools/Summary/RiaSummaryAddressAnalyzer.h @@ -30,6 +30,23 @@ class RimSummaryCurveCollection; class QString; +// Concept to check if a type RangeType is an input range of elements convertible to type ElementType +// Example usage: +// +// Several overloaded functions +// myFunction(std::vector....); +// myFunciton(std::set....); +// myFunction(std::list....); +// +// Can be replaced by +// template RangeType> +// void myFunction(RangeType&& range) +// +// This allows you to use the same function for all input ranges of int +// +template +concept input_range_of = std::ranges::input_range && std::convertible_to, ElementType>; + //================================================================================================== // //================================================================================================== @@ -38,8 +55,9 @@ class RiaSummaryAddressAnalyzer public: RiaSummaryAddressAnalyzer(); - void appendAddresses( const std::set& allAddresses ); - void appendAddresses( const std::vector& allAddresses ); + template AddressRange> + void appendAddresses( AddressRange&& addresses ); + void appendAddresses( const std::vector& addresses ); void clear(); @@ -104,3 +122,15 @@ class RiaSummaryAddressAnalyzer bool m_onlyCrossPlotCurves; }; + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +template AddressRange> +void RiaSummaryAddressAnalyzer::appendAddresses( AddressRange&& addresses ) +{ + for ( const auto& adr : addresses ) + { + analyzeSingleAddress( adr ); + } +}