CMS 3D CMS Logo

ParameterDescriptionNode.cc
Go to the documentation of this file.
1 
8 
9 #include <vector>
10 #include <cassert>
11 #include <ostream>
12 
13 #define TYPE_TO_ENUM(type, e_val) \
14  template <> \
15  ParameterTypes ParameterTypeToEnum::toEnum<type>() { \
16  return e_val; \
17  }
18 #define TYPE_TO_NAME(type) \
19  case k_##type: \
20  return #type
21 
22 namespace edm {
23 
24  class EventID;
25  class LuminosityBlockID;
27  class EventRange;
28  class InputTag;
29  class ESInputTag;
30  class FileInPath;
31 
33  TYPE_TO_ENUM(std::vector<int>, k_vint32)
35  TYPE_TO_ENUM(std::vector<unsigned>, k_vuint32)
36  TYPE_TO_ENUM(long long, k_int64)
37  TYPE_TO_ENUM(std::vector<long long>, k_vint64)
38  TYPE_TO_ENUM(unsigned long long, k_uint64)
39  TYPE_TO_ENUM(std::vector<unsigned long long>, k_vuint64)
41  TYPE_TO_ENUM(std::vector<double>, k_vdouble)
44  TYPE_TO_ENUM(std::vector<std::string>, k_vstring)
58  // These are intentionally not implemented to prevent one
59  // from calling add<ParameterSet>. One should call
60  // add<ParameterSetDescription> instead.
61  // TYPE_TO_ENUM(ParameterSet,k_PSet)
62  // TYPE_TO_ENUM(std::vector<ParameterSet>,k_VPSet)
63 
65  switch (iType) {
66  TYPE_TO_NAME(int32);
67  TYPE_TO_NAME(vint32);
69  TYPE_TO_NAME(vuint32);
70  TYPE_TO_NAME(int64);
71  TYPE_TO_NAME(vint64);
73  TYPE_TO_NAME(vuint64);
74  TYPE_TO_NAME(double);
76  TYPE_TO_NAME(bool);
77  TYPE_TO_NAME(string);
80  TYPE_TO_NAME(VEventID);
82  TYPE_TO_NAME(VLuminosityBlockID);
84  TYPE_TO_NAME(VInputTag);
86  TYPE_TO_NAME(VESInputTag);
88  TYPE_TO_NAME(PSet);
91  TYPE_TO_NAME(VLuminosityBlockRange);
93  TYPE_TO_NAME(VEventRange);
94  default:
95  assert(false);
96  }
97  return "";
98  }
99 
101  Comment::Comment(std::string const& iComment) : comment_(iComment) {}
102  Comment::Comment(char const* iComment) : comment_(iComment) {}
103 
105 
107 
109 
110  void ParameterDescriptionNode::print(std::ostream& os, bool optional, bool writeToCfi, DocFormatHelper& dfh) const {
111  if (hasNestedContent()) {
112  dfh.incrementCounter();
113  }
114  print_(os, optional, writeToCfi, dfh);
115  }
116 
117  void ParameterDescriptionNode::printNestedContent(std::ostream& os, bool optional, DocFormatHelper& dfh) const {
118  if (hasNestedContent()) {
119  dfh.incrementCounter();
120  printNestedContent_(os, optional, dfh);
121  }
122  }
123 
124  void ParameterDescriptionNode::printSpaces(std::ostream& os, int n) {
125  char oldFill = os.fill(' ');
126  os.width(n);
127  os << "";
128  os.fill(oldFill);
129  }
130 
131  // operator>> ---------------------------------------------
132 
133  std::unique_ptr<ParameterDescriptionCases<bool>> operator>>(bool caseValue, ParameterDescriptionNode const& node) {
134  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
135  return caseValue >> std::move(clonedNode);
136  }
137 
138  std::unique_ptr<ParameterDescriptionCases<int>> operator>>(int caseValue, ParameterDescriptionNode const& node) {
139  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
140  return caseValue >> std::move(clonedNode);
141  }
142 
143  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(std::string const& caseValue,
144  ParameterDescriptionNode const& node) {
145  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
146  return caseValue >> std::move(clonedNode);
147  }
148 
149  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(char const* caseValue,
150  ParameterDescriptionNode const& node) {
151  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
152  return caseValue >> std::move(clonedNode);
153  }
154 
155  std::unique_ptr<ParameterDescriptionCases<bool>> operator>>(bool caseValue,
156  std::unique_ptr<ParameterDescriptionNode> node) {
157  return std::unique_ptr<ParameterDescriptionCases<bool>>(
158  new ParameterDescriptionCases<bool>(caseValue, std::move(node)));
159  }
160 
161  std::unique_ptr<ParameterDescriptionCases<int>> operator>>(int caseValue,
162  std::unique_ptr<ParameterDescriptionNode> node) {
163  return std::unique_ptr<ParameterDescriptionCases<int>>(
164  new ParameterDescriptionCases<int>(caseValue, std::move(node)));
165  }
166 
167  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(std::string const& caseValue,
168  std::unique_ptr<ParameterDescriptionNode> node) {
169  return std::unique_ptr<ParameterDescriptionCases<std::string>>(
170  new ParameterDescriptionCases<std::string>(caseValue, std::move(node)));
171  }
172 
173  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(char const* caseValue,
174  std::unique_ptr<ParameterDescriptionNode> node) {
175  std::string caseValueString(caseValue);
176  return std::unique_ptr<ParameterDescriptionCases<std::string>>(
177  new ParameterDescriptionCases<std::string>(caseValue, std::move(node)));
178  }
179 
180  // operator&& ---------------------------------------------
181 
182  std::unique_ptr<ParameterDescriptionNode> operator&&(ParameterDescriptionNode const& node_left,
183  ParameterDescriptionNode const& node_right) {
184  return std::make_unique<ANDGroupDescription>(node_left, node_right);
185  }
186 
187  std::unique_ptr<ParameterDescriptionNode> operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
188  ParameterDescriptionNode const& node_right) {
189  return std::make_unique<ANDGroupDescription>(std::move(node_left), node_right);
190  }
191 
192  std::unique_ptr<ParameterDescriptionNode> operator&&(ParameterDescriptionNode const& node_left,
193  std::unique_ptr<ParameterDescriptionNode> node_right) {
194  return std::make_unique<ANDGroupDescription>(node_left, std::move(node_right));
195  }
196 
197  std::unique_ptr<ParameterDescriptionNode> operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
198  std::unique_ptr<ParameterDescriptionNode> node_right) {
199  return std::make_unique<ANDGroupDescription>(std::move(node_left), std::move(node_right));
200  }
201 
202  // operator|| ---------------------------------------------
203 
204  std::unique_ptr<ParameterDescriptionNode> operator||(ParameterDescriptionNode const& node_left,
205  ParameterDescriptionNode const& node_right) {
206  return std::make_unique<ORGroupDescription>(node_left, node_right);
207  }
208 
209  std::unique_ptr<ParameterDescriptionNode> operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
210  ParameterDescriptionNode const& node_right) {
211  return std::make_unique<ORGroupDescription>(std::move(node_left), node_right);
212  }
213 
214  std::unique_ptr<ParameterDescriptionNode> operator||(ParameterDescriptionNode const& node_left,
215  std::unique_ptr<ParameterDescriptionNode> node_right) {
216  return std::make_unique<ORGroupDescription>(node_left, std::move(node_right));
217  }
218 
219  std::unique_ptr<ParameterDescriptionNode> operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
220  std::unique_ptr<ParameterDescriptionNode> node_right) {
221  return std::make_unique<ORGroupDescription>(std::move(node_left), std::move(node_right));
222  }
223 
224  // operator^ ---------------------------------------------
225 
226  std::unique_ptr<ParameterDescriptionNode> operator^(ParameterDescriptionNode const& node_left,
227  ParameterDescriptionNode const& node_right) {
228  return std::make_unique<XORGroupDescription>(node_left, node_right);
229  }
230 
231  std::unique_ptr<ParameterDescriptionNode> operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
232  ParameterDescriptionNode const& node_right) {
233  return std::make_unique<XORGroupDescription>(std::move(node_left), node_right);
234  }
235 
236  std::unique_ptr<ParameterDescriptionNode> operator^(ParameterDescriptionNode const& node_left,
237  std::unique_ptr<ParameterDescriptionNode> node_right) {
238  return std::make_unique<XORGroupDescription>(node_left, std::move(node_right));
239  }
240 
241  std::unique_ptr<ParameterDescriptionNode> operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
242  std::unique_ptr<ParameterDescriptionNode> node_right) {
243  return std::make_unique<XORGroupDescription>(std::move(node_left), std::move(node_right));
244  }
245 } // namespace edm
edm::k_VInputTag
Definition: ParameterDescriptionNode.h:52
edm::k_vuint64
Definition: ParameterDescriptionNode.h:41
edm::k_vdouble
Definition: ParameterDescriptionNode.h:43
edm::ESInputTag
Definition: ESInputTag.h:87
edm::ParameterDescriptionNode::print
void print(std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh) const
Definition: ParameterDescriptionNode.cc:110
edm::k_VESInputTag
Definition: ParameterDescriptionNode.h:54
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
edm::ParameterDescriptionNode::~ParameterDescriptionNode
virtual ~ParameterDescriptionNode()
Definition: ParameterDescriptionNode.cc:104
edm::k_VEventRange
Definition: ParameterDescriptionNode.h:59
edm::k_VLuminosityBlockID
Definition: ParameterDescriptionNode.h:50
edm::operator||
std::unique_ptr< ParameterDescriptionCases< bool > > operator||(std::unique_ptr< ParameterDescriptionCases< bool > >, std::unique_ptr< ParameterDescriptionCases< bool > >)
Definition: ParameterDescriptionCases.cc:6
edm::ParameterTypes
ParameterTypes
Definition: ParameterDescriptionNode.h:33
ESInputTag
ANDGroupDescription.h
edm
HLT enums.
Definition: AlignableModifier.h:19
TYPE_TO_ENUM
#define TYPE_TO_ENUM(type, e_val)
Definition: ParameterDescriptionNode.cc:13
edm::k_FileInPath
Definition: ParameterDescriptionNode.h:55
edm::k_LuminosityBlockRange
Definition: ParameterDescriptionNode.h:56
Types.optional
optional
Definition: Types.py:167
edm::k_InputTag
Definition: ParameterDescriptionNode.h:51
cms::cuda::assert
assert(be >=bs)
edm::DocFormatHelper::incrementCounter
void incrementCounter()
Definition: DocFormatHelper.h:68
edm::parameterTypeEnumToString
std::string parameterTypeEnumToString(ParameterTypes iType)
Definition: ParameterDescriptionNode.cc:64
edm::k_string
Definition: ParameterDescriptionNode.h:45
edm::k_uint64
Definition: ParameterDescriptionNode.h:40
edm::k_ESInputTag
Definition: ParameterDescriptionNode.h:53
uint32
unsigned int uint32
Definition: MsgTools.h:13
XORGroupDescription.h
edm::k_double
Definition: ParameterDescriptionNode.h:42
ORGroupDescription.h
edm::FileInPath
Definition: FileInPath.h:64
edm::DocFormatHelper
Definition: DocFormatHelper.h:15
edm::operator&&
std::unique_ptr< ParameterDescriptionNode > operator&&(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)
Definition: ParameterDescriptionNode.cc:182
edm::vstring
std::vector< std::string > vstring
Definition: Schedule.cc:580
edm::k_vint32
Definition: ParameterDescriptionNode.h:35
edm::k_VLuminosityBlockRange
Definition: ParameterDescriptionNode.h:57
edm::ParameterDescriptionCases
Definition: ParameterDescriptionCases.h:35
ParameterDescriptionNode.h
edm::operator>>
std::istream & operator>>(std::istream &is, FileInPath &fip)
Definition: FileInPath.h:134
edm::LuminosityBlockID
Definition: LuminosityBlockID.h:31
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::k_int64
Definition: ParameterDescriptionNode.h:38
edm::k_bool
Definition: ParameterDescriptionNode.h:44
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::k_vstring
Definition: ParameterDescriptionNode.h:46
edm::ParameterDescriptionNode::printNestedContent_
virtual void printNestedContent_(std::ostream &, bool, DocFormatHelper &) const
Definition: ParameterDescriptionNode.h:229
edm::ParameterDescriptionNode::hasNestedContent
bool hasNestedContent() const
Definition: ParameterDescriptionNode.h:123
edm::Comment::Comment
Comment()
Definition: ParameterDescriptionNode.cc:100
edm::ParameterDescriptionNode::printNestedContent
void printNestedContent(std::ostream &os, bool optional, DocFormatHelper &dfh) const
Definition: ParameterDescriptionNode.cc:117
TYPE_TO_NAME
#define TYPE_TO_NAME(type)
Definition: ParameterDescriptionNode.cc:18
edm::k_int32
Definition: ParameterDescriptionNode.h:34
value
Definition: value.py:1
edm::k_EventRange
Definition: ParameterDescriptionNode.h:58
edm::k_vuint32
Definition: ParameterDescriptionNode.h:37
LuminosityBlockRange
dqmoffline::l1t::vdouble
std::vector< double > vdouble
Definition: HistDefinition.cc:8
edm::ParameterDescriptionNode::printSpaces
static void printSpaces(std::ostream &os, int n)
Definition: ParameterDescriptionNode.cc:124
HistogramManager_cfi.VPSet
def VPSet(*args)
Definition: HistogramManager_cfi.py:401
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::ParameterDescriptionNode::print_
virtual void print_(std::ostream &, bool, bool, DocFormatHelper &) const
Definition: ParameterDescriptionNode.h:225
DocFormatHelper.h
edm::k_vint64
Definition: ParameterDescriptionNode.h:39
relativeConstraints.value
value
Definition: relativeConstraints.py:53
edm::ParameterDescriptionNode::comment_
std::string comment_
Definition: ParameterDescriptionNode.h:237
uint64
unsigned long long uint64
Definition: MsgTools.h:14
edm::k_uint32
Definition: ParameterDescriptionNode.h:36
edm::k_VEventID
Definition: ParameterDescriptionNode.h:48
edm::k_LuminosityBlockID
Definition: ParameterDescriptionNode.h:49
edm::operator^
std::unique_ptr< ParameterDescriptionNode > operator^(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)
Definition: ParameterDescriptionNode.cc:226
edm::ParameterDescriptionNode::setComment
void setComment(std::string const &value)
Definition: ParameterDescriptionNode.cc:106
edm::ParameterDescriptionNode::clone
virtual ParameterDescriptionNode * clone() const =0
ParameterDescriptionCases.h
edm::EventID
Definition: EventID.h:31
edm::k_EventID
Definition: ParameterDescriptionNode.h:47
edm::EventRange
Definition: EventRange.h:31
edm::ParameterDescriptionNode
Definition: ParameterDescriptionNode.h:82
edm::InputTag
Definition: InputTag.h:15
edm::LuminosityBlockRange
Definition: LuminosityBlockRange.h:32