Alexandria
2.18
Please provide a description of the project.
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
SourceCatalog
SourceCatalog
_impl
Source.icpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012-2021 Euclid Science Ground Segment
3
*
4
* This library is free software; you can redistribute it and/or modify it under
5
* the terms of the GNU Lesser General Public License as published by the Free
6
* Software Foundation; either version 3.0 of the License, or (at your option)
7
* any later version.
8
*
9
* This library is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12
* details.
13
*
14
* You should have received a copy of the GNU Lesser General Public License
15
* along with this library; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
26
#include <memory>
27
28
#ifdef SOURCE_IMPL
29
30
template
<
typename
T>
31
std::shared_ptr<T>
Source::getAttribute()
const
{
32
std::shared_ptr<T>
result{};
33
// loop over all source attribute
34
for
(
auto
attribute_ptr : m_attribute_vector) {
35
result =
std::dynamic_pointer_cast
<T>(attribute_ptr);
36
// check whether there is a source attribute that can be successfully casted in Type T
37
if
(result) {
38
break
;
39
}
40
}
41
return
result;
42
}
43
44
#endif
/* SOURCE_IMPL */
std::shared_ptr
std::dynamic_pointer_cast
T dynamic_pointer_cast(T...args)
Generated by
1.8.5