The Gaudi Framework  v40r0 (475e45c1)
ToolSvc::ToolList Class Reference

Common Tools. More...

Collaboration diagram for ToolSvc::ToolList:

Public Member Functions

void remove (IAlgTool *tool)
 
void push_back (IAlgTool *tool)
 
bool contains (std::string_view name) const
 
bool contains (IAlgTool const *tool) const
 
auto size () const
 
auto begin () const
 
auto end () const
 
auto find (std::string_view name, const IInterface *parent) const
 
std::vector< IAlgTool * > grab () &&
 

Private Attributes

std::vector< IAlgTool * > m_tools
 
std::unordered_multimap< std::string_view, IAlgTool * > m_map
 

Detailed Description

Common Tools.

Definition at line 109 of file ToolSvc.cpp.

Member Function Documentation

◆ begin()

auto ToolSvc::ToolList::begin ( ) const
inline

Definition at line 154 of file ToolSvc.cpp.

154 { return m_tools.begin(); }

◆ contains() [1/2]

bool ToolSvc::ToolList::contains ( IAlgTool const *  tool) const
inline

Definition at line 149 of file ToolSvc.cpp.

149  {
150  return m_tools.rend() != std::find( m_tools.rbegin(), m_tools.rend(), tool );
151  // return tool == find( tool->name(), tool->parent() ); //FIXME: is this faster?
152  }

◆ contains() [2/2]

bool ToolSvc::ToolList::contains ( std::string_view  name) const
inline

Definition at line 148 of file ToolSvc.cpp.

148 { return m_map.find( name ) != m_map.end(); }

◆ end()

auto ToolSvc::ToolList::end ( ) const
inline

Definition at line 155 of file ToolSvc.cpp.

155 { return m_tools.end(); }

◆ find()

auto ToolSvc::ToolList::find ( std::string_view  name,
const IInterface parent 
) const
inline

Definition at line 156 of file ToolSvc.cpp.

156  {
157  auto range = m_map.equal_range( name );
158 #ifdef __cpp_lib_generic_unordered_lookup
159  auto it = std::find_if( range.first, range.second, [&]( auto const& p ) { return p->parent() == parent; } );
160  return it != range.second ? *it : nullptr;
161 #else
162  auto it =
163  std::find_if( range.first, range.second, [&]( auto const& p ) { return p.second->parent() == parent; } );
164  return it != range.second ? it->second : nullptr;
165 #endif
166  }

◆ grab()

std::vector<IAlgTool*> ToolSvc::ToolList::grab ( ) &&
inline

Definition at line 167 of file ToolSvc.cpp.

167  {
168  m_map.clear();
169  auto tools = std::move( m_tools );
170  return tools;
171  }

◆ push_back()

void ToolSvc::ToolList::push_back ( IAlgTool tool)
inline

Definition at line 139 of file ToolSvc.cpp.

139  {
140  m_tools.push_back( tool );
141 #ifdef __cpp_lib_generic_unordered_lookup
142  m_map.emplace( tool );
143 #else
144  m_map.emplace( tool->name(), tool );
145 #endif
146  }

◆ remove()

void ToolSvc::ToolList::remove ( IAlgTool tool)
inline

Definition at line 129 of file ToolSvc.cpp.

129  {
130  m_tools.erase( std::remove( std::begin( m_tools ), std::end( m_tools ), tool ), std::end( m_tools ) );
131  auto range = m_map.equal_range( tool->name() );
132 #ifdef __cpp_lib_generic_unordered_lookup
133  auto itm = std::find_if( range.first, range.second, [&]( auto const& p ) { return p == tool; } );
134 #else
135  auto itm = std::find_if( range.first, range.second, [&]( auto const& p ) { return p.second == tool; } );
136 #endif
137  if ( itm != range.second ) m_map.erase( itm );
138  }

◆ size()

auto ToolSvc::ToolList::size ( ) const
inline

Definition at line 153 of file ToolSvc.cpp.

153 { return m_tools.size(); }

Member Data Documentation

◆ m_map

std::unordered_multimap<std::string_view, IAlgTool*> ToolSvc::ToolList::m_map
private

Definition at line 125 of file ToolSvc.cpp.

◆ m_tools

std::vector<IAlgTool*> ToolSvc::ToolList::m_tools
private

Definition at line 110 of file ToolSvc.cpp.


The documentation for this class was generated from the following file:
ToolSvc::ToolList::m_map
std::unordered_multimap< std::string_view, IAlgTool * > m_map
Definition: ToolSvc.cpp:125
Service::tools
const std::vector< IAlgTool * > & tools() const
Definition: Service.cpp:411
bug_34121.tool
tool
Definition: bug_34121.py:18
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:135
Service::name
const std::string & name() const override
Retrieve name of the service
Definition: Service.cpp:333
IOTest.end
end
Definition: IOTest.py:125
ToolSvc::ToolList::m_tools
std::vector< IAlgTool * > m_tools
Definition: ToolSvc.cpp:110
Gaudi::Functional::details::zip::range
decltype(auto) range(Args &&... args)
Zips multiple containers together to form a single range.
Definition: details.h:102