From 804e6efd12b26530cccf6245cdd215955cfdd9f6 Mon Sep 17 00:00:00 2001
From: Charles Leggett <charles.g.leggett@gmail.com>
Date: Thu, 22 Dec 2016 06:46:51 +0100
Subject: [PATCH] updates for Property modernization (TrigConfigSvc-01-01-75)

	* HLTJobOptionsSvc: added getClientProperty() for Gaudi v28 compat
	* don't forward declare Property
	* tag TrigConfigSvc-01-01-75

M       TrigConfigSvc/HLTJobOptionsSvc.h
M       TrigConfigSvc/JobOptionsCatalogue.h
M       TrigConfigSvc/JobOptionsList.h
M       src/HLTJobOptionsSvc.cxx

2016-12-16 Stewart Martin-Haugh <smh@cern.ch>
	* Pass strings by const reference (ATR-15683)
	* TrigConfigSvc-01-01-74


Former-commit-id: 200b7959e0a0c4d66f0198bfa3b2e5de41da8623
---
 .../TrigConfigSvc/HLTJobOptionsSvc.h           |  6 ++++++
 .../TrigConfigSvc/JobOptionsCatalogue.h        |  7 +++----
 .../TrigConfigSvc/JobOptionsList.h             |  8 +++-----
 .../TrigConfigSvc/src/HLTJobOptionsSvc.cxx     | 18 ++++++++++++++++++
 .../TrigConfigSvc/src/JobOptionsCatalogue.cxx  |  4 ++--
 .../TrigConfigSvc/src/JobOptionsList.cxx       |  4 ++--
 6 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/HLTJobOptionsSvc.h b/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/HLTJobOptionsSvc.h
index a8064c1b551..47e3d4580d4 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/HLTJobOptionsSvc.h
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/HLTJobOptionsSvc.h
@@ -70,6 +70,12 @@ namespace TrigConf {
       virtual const std::vector<Property*> & getProperties() const { return Service::getProperties(); }
 
 
+     /// Get a property for a client
+     virtual const Property* 
+     getClientProperty( const std::string& client,
+                        const std::string& name ) const;
+
+
       /// implementation of IJobOptionsSvc::getClients
       virtual std::vector<std::string> getClients() const;
     
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsCatalogue.h b/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsCatalogue.h
index 594e342649d..8c9eb9bf486 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsCatalogue.h
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsCatalogue.h
@@ -10,12 +10,11 @@
 #include <vector>
 
 #include "GaudiKernel/StatusCode.h"
+#include "GaudiKernel/Property.h"
 #include "TrigConfigSvc/JobOptionsList.h"
 
 class MsgStream;
 
-class Property;
-
 namespace TrigConf {
 
   /** @brief Collection of JobOptionsList 's, one for each algorithm*/
@@ -34,7 +33,7 @@ namespace TrigConf {
      *
      * @param[in] myOpt property to be added
      */
-    virtual void addOption( const std::string myAlg, const Property* const& myOpt );
+    virtual void addOption( const std::string& myAlg, const Property* const& myOpt );
 
     /**@brief retrieve all properties of an algorithm
      *
@@ -84,7 +83,7 @@ namespace TrigConf {
      *
      * @returns StatusCode about the success of the operation (success if it found the algorithm)
      */
-    StatusCode         findAlgorithm( const std::string myAlg, JobOptionsList*& myList ) const;
+    StatusCode         findAlgorithm( const std::string& myAlg, JobOptionsList*& myList ) const;
 
     // data members
     std::vector<JobOptionsList*>  m_algorithmoptions; ///< vector of JobOptionList 's, one for each algorithm
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsList.h b/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsList.h
index 9176add850d..2b22fabf9a2 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsList.h
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/TrigConfigSvc/JobOptionsList.h
@@ -11,9 +11,7 @@
 
 #include <string>
 #include <vector>
-//#include "GaudiKernel/Property.h"
-
-class Property;
+#include "GaudiKernel/Property.h"
 
 namespace TrigConf {
 
@@ -27,7 +25,7 @@ namespace TrigConf {
      *
      * @param myOpt first property
      */
-    JobOptionsList( const std::string myAlg, const Property* const& myOpt );
+    JobOptionsList( const std::string& myAlg, const Property* const& myOpt );
 
     /**@brief destructor
      *
@@ -47,7 +45,7 @@ namespace TrigConf {
      * 
      * @returns name of algorithm
      */
-    virtual std::string algorithmName() const;
+    virtual const std::string& algorithmName() const;
 
     /**@brief accessor to the vector of properties
      * 
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTJobOptionsSvc.cxx b/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTJobOptionsSvc.cxx
index f4615656a6c..3728f6511dc 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTJobOptionsSvc.cxx
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTJobOptionsSvc.cxx
@@ -502,6 +502,24 @@ TrigConf::HLTJobOptionsSvc::getProperties( const std::string& client) const
   }
   return 0;
 }
+
+//----------------------------------------------------------------------------
+const Property* 
+TrigConf::HLTJobOptionsSvc::getClientProperty( const std::string& client,
+                                                 const std::string& name ) const
+//----------------------------------------------------------------------------
+{
+  auto props = getProperties(client);
+  for (auto p: *props) {
+    if (p->name() == name) {
+      return p;
+    }
+  }
+
+  return nullptr;
+
+}
+
 //----------------------------------------------------------------------------
 std::vector<std::string>
 TrigConf::HLTJobOptionsSvc::getClients() const
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsCatalogue.cxx b/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsCatalogue.cxx
index 01384e48546..b0b0d339cfe 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsCatalogue.cxx
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsCatalogue.cxx
@@ -25,7 +25,7 @@ TrigConf::JobOptionsCatalogue::~JobOptionsCatalogue() {
 
 //----------------------------------------------------------------------------
 StatusCode
-TrigConf::JobOptionsCatalogue::findAlgorithm( const std::string myAlg, 
+TrigConf::JobOptionsCatalogue::findAlgorithm( const std::string& myAlg, 
                                                JobOptionsList*& myList ) const {
   std::vector<JobOptionsList*>::const_iterator iter;
 	for( iter = m_algorithmoptions.begin();
@@ -42,7 +42,7 @@ TrigConf::JobOptionsCatalogue::findAlgorithm( const std::string myAlg,
 
 //----------------------------------------------------------------------------
 void
-TrigConf::JobOptionsCatalogue::addOption( const std::string myAlg, 
+TrigConf::JobOptionsCatalogue::addOption( const std::string& myAlg, 
                                           const Property* const& myOpt ) {
 	JobOptionsList* myList;
 	StatusCode sc = this->findAlgorithm( myAlg, myList );
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsList.cxx b/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsList.cxx
index c912eb96482..81b3f60bb8b 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsList.cxx
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/src/JobOptionsList.cxx
@@ -17,12 +17,12 @@ TrigConf::JobOptionsList::~JobOptionsList() {
 	}
 }
 
-TrigConf::JobOptionsList::JobOptionsList( const std::string myAlg, const Property* const& myOpt ){
+TrigConf::JobOptionsList::JobOptionsList( const std::string& myAlg, const Property* const& myOpt ){
 	m_algorithmName = myAlg;
 	this->addOption( myOpt );
 }
 
-std::string
+const std::string&
 TrigConf::JobOptionsList::algorithmName() const {
 	return m_algorithmName;
 }
-- 
GitLab