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) template<> ParameterTypes ParameterTypeToEnum::toEnum<type >(){ return e_val; }
14 #define TYPE_TO_NAME(type) case k_ ## type: return #type
15 
16 namespace edm {
17 
18  class EventID;
19  class LuminosityBlockID;
21  class EventRange;
22  class InputTag;
23  class FileInPath;
24 
26  TYPE_TO_ENUM(std::vector<int>,k_vint32)
28  TYPE_TO_ENUM(std::vector<unsigned>,k_vuint32)
29  TYPE_TO_ENUM(long long,k_int64)
30  TYPE_TO_ENUM(std::vector<long long>,k_vint64)
31  TYPE_TO_ENUM(unsigned long long,k_uint64)
32  TYPE_TO_ENUM(std::vector<unsigned long long>,k_vuint64)
34  TYPE_TO_ENUM(std::vector<double>,k_vdouble)
37  TYPE_TO_ENUM(std::vector<std::string>,k_vstring)
39  TYPE_TO_ENUM(std::vector<EventID>,k_VEventID)
41  TYPE_TO_ENUM(std::vector<LuminosityBlockID>,k_VLuminosityBlockID)
43  TYPE_TO_ENUM(std::vector<InputTag>,k_VInputTag)
46  TYPE_TO_ENUM(std::vector<LuminosityBlockRange>,k_VLuminosityBlockRange)
48  TYPE_TO_ENUM(std::vector<EventRange>,k_VEventRange)
49  // These are intentionally not implemented to prevent one
50  // from calling add<ParameterSet>. One should call
51  // add<ParameterSetDescription> instead.
52  // TYPE_TO_ENUM(ParameterSet,k_PSet)
53  // TYPE_TO_ENUM(std::vector<ParameterSet>,k_VPSet)
54 
56  switch(iType) {
57  TYPE_TO_NAME(int32);
58  TYPE_TO_NAME(vint32);
60  TYPE_TO_NAME(vuint32);
61  TYPE_TO_NAME(int64);
62  TYPE_TO_NAME(vint64);
64  TYPE_TO_NAME(vuint64);
65  TYPE_TO_NAME(double);
67  TYPE_TO_NAME(bool);
68  TYPE_TO_NAME(string);
70  TYPE_TO_NAME(EventID);
71  TYPE_TO_NAME(VEventID);
72  TYPE_TO_NAME(LuminosityBlockID);
73  TYPE_TO_NAME(VLuminosityBlockID);
74  TYPE_TO_NAME(InputTag);
75  TYPE_TO_NAME(VInputTag);
76  TYPE_TO_NAME(FileInPath);
77  TYPE_TO_NAME(PSet);
79  TYPE_TO_NAME(LuminosityBlockRange);
80  TYPE_TO_NAME(VLuminosityBlockRange);
81  TYPE_TO_NAME(EventRange);
82  TYPE_TO_NAME(VEventRange);
83  default:
84  assert(false);
85  }
86  return "";
87  }
88 
90  Comment::Comment(std::string const& iComment) : comment_(iComment) {}
91  Comment::Comment(char const* iComment) : comment_(iComment) {}
92 
94  }
95 
96  void
98  comment_ = value;
99  }
100 
101  void
103  comment_ = value;
104  }
105 
106  void
108  bool optional,
109  bool writeToCfi,
110  DocFormatHelper& dfh) const {
111  if (hasNestedContent()) {
112  dfh.incrementCounter();
113  }
114  print_(os, optional, writeToCfi, dfh);
115  }
116 
117  void
119  bool optional,
120  DocFormatHelper& dfh) const {
121  if (hasNestedContent()) {
122  dfh.incrementCounter();
123  printNestedContent_(os, optional, dfh);
124  }
125  }
126 
127  void
128  ParameterDescriptionNode::printSpaces(std::ostream& os, int n) {
129  char oldFill = os.fill(' ');
130  os.width(n);
131  os << "";
132  os.fill(oldFill);
133  }
134 
135  // operator>> ---------------------------------------------
136 
137  std::unique_ptr<ParameterDescriptionCases<bool>>
138  operator>>(bool caseValue,
139  ParameterDescriptionNode const& node) {
140  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
141  return caseValue >> std::move(clonedNode);
142  }
143 
144  std::unique_ptr<ParameterDescriptionCases<int>>
145  operator>>(int caseValue,
146  ParameterDescriptionNode const& node) {
147  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
148  return caseValue >> std::move(clonedNode);
149  }
150 
151  std::unique_ptr<ParameterDescriptionCases<std::string>>
152  operator>>(std::string const& caseValue,
153  ParameterDescriptionNode const& node) {
154  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
155  return caseValue >> std::move(clonedNode);
156  }
157 
158  std::unique_ptr<ParameterDescriptionCases<std::string>>
159  operator>>(char const* caseValue,
160  ParameterDescriptionNode const& node) {
161  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
162  return caseValue >> std::move(clonedNode);
163  }
164 
165  std::unique_ptr<ParameterDescriptionCases<bool>>
166  operator>>(bool caseValue,
167  std::unique_ptr<ParameterDescriptionNode> node) {
168  return std::unique_ptr<ParameterDescriptionCases<bool>>(
169  new ParameterDescriptionCases<bool>(caseValue, std::move(node)));
170  }
171 
172  std::unique_ptr<ParameterDescriptionCases<int>>
173  operator>>(int caseValue,
174  std::unique_ptr<ParameterDescriptionNode> node) {
175  return std::unique_ptr<ParameterDescriptionCases<int>>(
176  new ParameterDescriptionCases<int>(caseValue, std::move(node)));
177  }
178 
179  std::unique_ptr<ParameterDescriptionCases<std::string>>
180  operator>>(std::string const& caseValue,
181  std::unique_ptr<ParameterDescriptionNode> node) {
182  return std::unique_ptr<ParameterDescriptionCases<std::string>>(
183  new ParameterDescriptionCases<std::string>(caseValue, std::move(node)));
184  }
185 
186  std::unique_ptr<ParameterDescriptionCases<std::string>>
187  operator>>(char const* caseValue,
188  std::unique_ptr<ParameterDescriptionNode> node) {
189  std::string caseValueString(caseValue);
190  return std::unique_ptr<ParameterDescriptionCases<std::string>>(
191  new ParameterDescriptionCases<std::string>(caseValue, std::move(node)));
192  }
193 
194  // operator&& ---------------------------------------------
195 
196  std::unique_ptr<ParameterDescriptionNode>
198  ParameterDescriptionNode const& node_right) {
199  return std::make_unique<ANDGroupDescription>(node_left, node_right);
200  }
201 
202  std::unique_ptr<ParameterDescriptionNode>
203  operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
204  ParameterDescriptionNode const& node_right) {
205  return std::make_unique<ANDGroupDescription>(std::move(node_left), node_right);
206  }
207 
208  std::unique_ptr<ParameterDescriptionNode>
210  std::unique_ptr<ParameterDescriptionNode> node_right) {
211  return std::make_unique<ANDGroupDescription>(node_left, std::move(node_right));
212  }
213 
214  std::unique_ptr<ParameterDescriptionNode>
215  operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
216  std::unique_ptr<ParameterDescriptionNode> node_right) {
217  return std::make_unique<ANDGroupDescription>(std::move(node_left), std::move(node_right));
218  }
219 
220  // operator|| ---------------------------------------------
221 
222  std::unique_ptr<ParameterDescriptionNode>
224  ParameterDescriptionNode const& node_right) {
225  return std::make_unique<ORGroupDescription>(node_left, node_right);
226  }
227 
228  std::unique_ptr<ParameterDescriptionNode>
229  operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
230  ParameterDescriptionNode const& node_right) {
231  return std::make_unique<ORGroupDescription>(std::move(node_left), node_right);
232  }
233 
234  std::unique_ptr<ParameterDescriptionNode>
236  std::unique_ptr<ParameterDescriptionNode> node_right) {
237  return std::make_unique<ORGroupDescription>(node_left, std::move(node_right));
238  }
239 
240  std::unique_ptr<ParameterDescriptionNode>
241  operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
242  std::unique_ptr<ParameterDescriptionNode> node_right) {
243  return std::make_unique<ORGroupDescription>(std::move(node_left), std::move(node_right));
244  }
245 
246  // operator^ ---------------------------------------------
247 
248  std::unique_ptr<ParameterDescriptionNode>
250  ParameterDescriptionNode const& node_right) {
251  return std::make_unique<XORGroupDescription>(node_left, node_right);
252  }
253 
254  std::unique_ptr<ParameterDescriptionNode>
255  operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
256  ParameterDescriptionNode const& node_right) {
257  return std::make_unique<XORGroupDescription>(std::move(node_left), node_right);
258  }
259 
260  std::unique_ptr<ParameterDescriptionNode>
262  std::unique_ptr<ParameterDescriptionNode> node_right) {
263  return std::make_unique<XORGroupDescription>(node_left, std::move(node_right));
264  }
265 
266  std::unique_ptr<ParameterDescriptionNode>
267  operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
268  std::unique_ptr<ParameterDescriptionNode> node_right) {
269  return std::make_unique<XORGroupDescription>(std::move(node_left), std::move(node_right));
270  }
271 }
void setComment(std::string const &value)
std::istream & operator>>(std::istream &is, FileInPath &fip)
Definition: FileInPath.h:153
void printNestedContent(std::ostream &os, bool optional, DocFormatHelper &dfh) const
#define TYPE_TO_ENUM(type, e_val)
std::string parameterTypeEnumToString(ParameterTypes iType)
std::unique_ptr< ParameterDescriptionNode > operator&&(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)
std::ostream & print_(std::ostream &os, value_type const &hash)
Definition: Hash.cc:106
void print(std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh) const
Definition: value.py:1
static void printSpaces(std::ostream &os, int n)
unsigned int uint32
Definition: MsgTools.h:13
std::vector< double > vdouble
std::unique_ptr< ParameterDescriptionCases< bool > > operator||(std::unique_ptr< ParameterDescriptionCases< bool > >, std::unique_ptr< ParameterDescriptionCases< bool > >)
unsigned long long uint64
Definition: MsgTools.h:14
virtual ParameterDescriptionNode * clone() const =0
#define TYPE_TO_NAME(type)
HLT enums.
std::unique_ptr< ParameterDescriptionNode > operator^(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)
bool hasNestedContent(int const &value)
std::vector< std::string > vstring
Definition: Schedule.cc:435
def move(src, dest)
Definition: eostools.py:511