SceneElement-inl.h
Go to the documentation of this file.
1 // This file is a part of the OpenSurgSim project.
2 // Copyright 2013, SimQuest Solutions Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #ifndef SURGSIM_FRAMEWORK_SCENEELEMENT_INL_H
17 #define SURGSIM_FRAMEWORK_SCENEELEMENT_INL_H
18 
19 namespace SurgSim
20 {
21 
22 namespace Framework
23 {
24 
27 template <class T>
28 std::vector<std::shared_ptr<T>> SceneElement::getComponents() const
29 {
30  std::vector<std::shared_ptr<T>> result;
31 
32  for (auto componentIt = m_components.begin(); componentIt != m_components.end(); ++componentIt)
33  {
34  std::shared_ptr<T> typedElement = std::dynamic_pointer_cast<T>(componentIt->second);
35  if (typedElement)
36  {
37  result.emplace_back(std::move(typedElement));
38  }
39  }
40  return result;
41 }
42 
43 }; // namespace Framework
44 
45 }; // namespace SurgSim
46 
47 #endif
Definition: DriveElementFromInputBehavior.cpp:27
std::vector< std::shared_ptr< Component > > getComponents() const
Gets all the components of this SceneElement.
Definition: SceneElement.cpp:156
std::unordered_map< std::string, std::shared_ptr< Component > > m_components
A collection of Components.
Definition: SceneElement.h:170