Home
|
Main Page
|
Modules
|
Namespace List
|
Class Hierarchy
|
Alphabetical List
|
Data Structures
|
File List
|
Namespace Members
|
Data Fields
|
Globals
|
Related Pages
Loading...
Searching...
No Matches
Core
Main
elxForEachSupportedImageType.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright UMC Utrecht and contributors
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0.txt
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*=========================================================================*/
18
19
#ifndef elxForEachSupportedImageType_h
20
#define elxForEachSupportedImageType_h
21
22
#include <
elxSupportedImageTypes.h
>
23
24
#include <utility>
// For index_sequence.
25
26
27
namespace
elastix
28
{
29
30
template
<
typename
TFunction, std::size_t... VIndexSequence>
31
void
32
ForEachSupportedImageType
(
const
TFunction & func,
const
std::index_sequence<VIndexSequence...> &)
33
{
34
struct
Empty
35
{};
36
37
const
auto
supportImageTypeWithIndex = [&func](
const
auto
index) {
38
// Use `index + 1` instead of `index`, because the indices from SupportedImageTypes start with 1, while the sequence
39
// returned by `std::make_index_sequence()` starts with zero.
40
func(
elx::ElastixTypedef<index + 1>
{});
41
return
Empty{};
42
};
43
44
// Expand the "variadic template" index sequence by the initialization of a dummy array.
45
const
Empty dummyArray[] = { supportImageTypeWithIndex(std::integral_constant<std::size_t, VIndexSequence>{})... };
46
(void)dummyArray;
47
}
48
49
51
template
<
typename
TFunction>
52
void
53
ForEachSupportedImageType
(
const
TFunction & func)
54
55
{
56
ForEachSupportedImageType
(func, std::make_index_sequence<elx::NrOfSupportedImageTypes>());
57
}
58
59
}
// namespace elastix
60
61
62
#endif
elastix::ElastixTypedef
Definition
elxPrepareImageTypeSupport.h:35
elxSupportedImageTypes.h
elastix
Definition
elxDefaultConstruct.h:25
elastix::ForEachSupportedImageType
void ForEachSupportedImageType(const TFunction &func, const std::index_sequence< VIndexSequence... > &)
Definition
elxForEachSupportedImageType.h:32
Generated on 1687403667 for elastix by
1.9.8