LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
ModuleTypeDeducer.h
Go to the documentation of this file.
1
#ifndef art_Framework_Core_detail_ModuleTypeDeducer_h
2
#define art_Framework_Core_detail_ModuleTypeDeducer_h
3
// vim: set sw=2 expandtab :
4
5
//
6
// Used by ModuleMacros.h to ascertain the correct
7
// ModuleType for a module.
8
//
9
10
#include "
art/Persistency/Provenance/ModuleType.h
"
11
12
namespace
art
{
13
class
EDAnalyzer;
14
class
EDProducer;
15
class
EDFilter;
16
class
OutputModule;
17
18
class
SharedAnalyzer;
19
class
SharedProducer;
20
class
SharedFilter;
21
class
SharedOutputModule;
22
23
class
ReplicatedAnalyzer;
24
class
ReplicatedProducer;
25
class
ReplicatedFilter;
26
class
ReplicatedOutputModule;
27
28
namespace
detail {
29
30
// Only specializations allowed so that errors can be caught at
31
// compile-time and not run-time.
32
template
<
typename
T>
33
struct
ModuleTypeDeducer
;
34
35
// Legacy modules
36
template
<>
37
struct
ModuleTypeDeducer
<
EDAnalyzer
> {
38
static
constexpr
auto
value
{
ModuleType::analyzer
};
39
};
40
41
template
<>
42
struct
ModuleTypeDeducer
<
EDFilter
> {
43
static
constexpr
auto
value
{
ModuleType::filter
};
44
};
45
46
template
<>
47
struct
ModuleTypeDeducer
<
OutputModule
> {
48
static
constexpr
auto
value
{
ModuleType::output_module
};
49
};
50
51
template
<>
52
struct
ModuleTypeDeducer
<
EDProducer
> {
53
static
constexpr
auto
value
{
ModuleType::producer
};
54
};
55
56
// Shared modules
57
template
<>
58
struct
ModuleTypeDeducer
<
SharedAnalyzer
> {
59
static
constexpr
auto
value
{
ModuleType::analyzer
};
60
};
61
62
template
<>
63
struct
ModuleTypeDeducer
<
SharedFilter
> {
64
static
constexpr
auto
value
{
ModuleType::filter
};
65
};
66
67
template
<>
68
struct
ModuleTypeDeducer
<SharedOutputModule> {
69
static
constexpr
auto
value
{
ModuleType::output_module
};
70
};
71
72
template
<>
73
struct
ModuleTypeDeducer
<
SharedProducer
> {
74
static
constexpr
auto
value
{
ModuleType::producer
};
75
};
76
77
// Replicated modules
78
template
<>
79
struct
ModuleTypeDeducer
<
ReplicatedAnalyzer
> {
80
static
constexpr
auto
value
{
ModuleType::analyzer
};
81
};
82
83
template
<>
84
struct
ModuleTypeDeducer
<
ReplicatedFilter
> {
85
static
constexpr
auto
value
{
ModuleType::filter
};
86
};
87
88
template
<>
89
struct
ModuleTypeDeducer
<ReplicatedOutputModule> {
90
static
constexpr
auto
value
{
ModuleType::output_module
};
91
};
92
93
template
<>
94
struct
ModuleTypeDeducer
<
ReplicatedProducer
> {
95
static
constexpr
auto
value
{
ModuleType::producer
};
96
};
97
98
// Only specializations allowed so that errors can be caught at
99
// compile-time and not run-time.
100
template
<
typename
T>
101
struct
ModuleThreadingTypeDeducer
;
102
103
// Legacy modules
104
template
<>
105
struct
ModuleThreadingTypeDeducer
<
EDAnalyzer
> {
106
static
constexpr
auto
value
{
ModuleThreadingType::legacy
};
107
};
108
109
template
<>
110
struct
ModuleThreadingTypeDeducer
<
EDFilter
> {
111
static
constexpr
auto
value
{
ModuleThreadingType::legacy
};
112
};
113
114
template
<>
115
struct
ModuleThreadingTypeDeducer
<
OutputModule
> {
116
static
constexpr
auto
value
{
ModuleThreadingType::legacy
};
117
};
118
119
template
<>
120
struct
ModuleThreadingTypeDeducer
<
EDProducer
> {
121
static
constexpr
auto
value
{
ModuleThreadingType::legacy
};
122
};
123
124
// Shared modules
125
template
<>
126
struct
ModuleThreadingTypeDeducer
<
SharedAnalyzer
> {
127
static
constexpr
auto
value
{
ModuleThreadingType::shared
};
128
};
129
130
template
<>
131
struct
ModuleThreadingTypeDeducer
<
SharedFilter
> {
132
static
constexpr
auto
value
{
ModuleThreadingType::shared
};
133
};
134
135
template
<>
136
struct
ModuleThreadingTypeDeducer
<SharedOutputModule> {
137
static
constexpr
auto
value
{
ModuleThreadingType::shared
};
138
};
139
140
template
<>
141
struct
ModuleThreadingTypeDeducer
<
SharedProducer
> {
142
static
constexpr
auto
value
{
ModuleThreadingType::shared
};
143
};
144
145
// Replicated modules
146
template
<>
147
struct
ModuleThreadingTypeDeducer
<
ReplicatedAnalyzer
> {
148
static
constexpr
auto
value
{
ModuleThreadingType::replicated
};
149
};
150
151
template
<>
152
struct
ModuleThreadingTypeDeducer
<
ReplicatedFilter
> {
153
static
constexpr
auto
value
{
ModuleThreadingType::replicated
};
154
};
155
156
template
<>
157
struct
ModuleThreadingTypeDeducer
<ReplicatedOutputModule> {
158
static
constexpr
auto
value
{
ModuleThreadingType::replicated
};
159
};
160
161
template
<>
162
struct
ModuleThreadingTypeDeducer
<
ReplicatedProducer
> {
163
static
constexpr
auto
value
{
ModuleThreadingType::replicated
};
164
};
165
166
}
// namespace detail
167
}
// namespace art
168
169
#endif
/* art_Framework_Core_detail_ModuleTypeDeducer_h */
170
171
// Local Variables:
172
// mode: c++
173
// End:
art::EDFilter
Definition:
EDFilter.h:16
art::detail::ModuleThreadingTypeDeducer
Definition:
ModuleTypeDeducer.h:101
art::ReplicatedAnalyzer
Definition:
ReplicatedAnalyzer.h:22
art::SharedFilter
Definition:
SharedFilter.h:17
art::ModuleType::analyzer
art::SharedProducer
Definition:
SharedProducer.h:18
art::ModuleType::output_module
art::ModuleThreadingType::legacy
art::ModuleThreadingType::shared
art::OutputModule
Definition:
OutputModule.h:49
art::ModuleType::filter
art::EDProducer
Definition:
EDProducer.h:15
value
double value
Definition:
spectrum.C:18
art::ModuleThreadingType::replicated
art::ReplicatedFilter
Definition:
ReplicatedFilter.h:17
art::detail::ModuleTypeDeducer
Definition:
ModuleTypeDeducer.h:33
art::EDAnalyzer
Definition:
EDAnalyzer.h:20
art::ReplicatedProducer
Definition:
ReplicatedProducer.h:19
art
Definition:
MVAAlg.h:12
ModuleType.h
art::ModuleType::producer
art::SharedAnalyzer
Definition:
SharedAnalyzer.h:21
art
Framework
Core
detail
ModuleTypeDeducer.h
Generated on Thu May 2 2024 20:59:28 for LArSoft by
1.8.11