Alexandria
2.31.2
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
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::dynamic_pointer_cast
T dynamic_pointer_cast(T... args)
std::shared_ptr
Generated by
1.11.0