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 #define TYPE_TO_NAME2(e_val, type) \
22  case e_val: \
23  return #type
24 
25 namespace edm {
26 
27  class EventID;
28  class LuminosityBlockID;
30  class EventRange;
31  class InputTag;
32  class ESInputTag;
33  class FileInPath;
34 
39  TYPE_TO_ENUM(long long, k_int64)
41  TYPE_TO_ENUM(unsigned long long, k_uint64)
42  TYPE_TO_ENUM(std::vector<unsigned long long>, k_vuint64)
61  // These are intentionally not implemented to prevent one
62  // from calling add<ParameterSet>. One should call
63  // add<ParameterSetDescription> instead.
64  // TYPE_TO_ENUM(ParameterSet,k_PSet)
65  // TYPE_TO_ENUM(std::vector<ParameterSet>,k_VPSet)
66 
68  switch (iType) {
69  TYPE_TO_NAME(int32);
70  TYPE_TO_NAME(vint32);
72  TYPE_TO_NAME(vuint32);
73  TYPE_TO_NAME(int64);
74  TYPE_TO_NAME(vint64);
76  TYPE_TO_NAME(vuint64);
77  TYPE_TO_NAME(double);
79  TYPE_TO_NAME(bool);
80  TYPE_TO_NAME2(k_stringRaw, string);
83  TYPE_TO_NAME(VEventID);
85  TYPE_TO_NAME(VLuminosityBlockID);
89  TYPE_TO_NAME(VESInputTag);
94  TYPE_TO_NAME(VLuminosityBlockRange);
96  TYPE_TO_NAME(VEventRange);
97  default:
98  assert(false);
99  }
100  return "";
101  }
102 
104  Comment::Comment(std::string const& iComment) : comment_(iComment) {}
105  Comment::Comment(char const* iComment) : comment_(iComment) {}
106 
108 
110 
112 
113  void ParameterDescriptionNode::print(std::ostream& os, bool optional, bool writeToCfi, DocFormatHelper& dfh) const {
114  if (hasNestedContent()) {
115  dfh.incrementCounter();
116  }
117  print_(os, optional, writeToCfi, dfh);
118  }
119 
120  void ParameterDescriptionNode::printNestedContent(std::ostream& os, bool optional, DocFormatHelper& dfh) const {
121  if (hasNestedContent()) {
122  dfh.incrementCounter();
123  printNestedContent_(os, optional, dfh);
124  }
125  }
126 
127  void ParameterDescriptionNode::printSpaces(std::ostream& os, int n) {
128  char oldFill = os.fill(' ');
129  os.width(n);
130  os << "";
131  os.fill(oldFill);
132  }
133 
134  // operator>> ---------------------------------------------
135 
136  std::unique_ptr<ParameterDescriptionCases<bool>> operator>>(bool caseValue, ParameterDescriptionNode const& node) {
137  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
138  return caseValue >> std::move(clonedNode);
139  }
140 
141  std::unique_ptr<ParameterDescriptionCases<int>> operator>>(int caseValue, ParameterDescriptionNode const& node) {
142  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
143  return caseValue >> std::move(clonedNode);
144  }
145 
146  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(std::string const& caseValue,
147  ParameterDescriptionNode const& node) {
148  std::unique_ptr<ParameterDescriptionNode> clonedNode(node.clone());
149  return caseValue >> std::move(clonedNode);
150  }
151 
152  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(char 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<bool>> operator>>(bool caseValue,
159  std::unique_ptr<ParameterDescriptionNode> node) {
160  return std::unique_ptr<ParameterDescriptionCases<bool>>(
161  new ParameterDescriptionCases<bool>(caseValue, std::move(node)));
162  }
163 
164  std::unique_ptr<ParameterDescriptionCases<int>> operator>>(int caseValue,
165  std::unique_ptr<ParameterDescriptionNode> node) {
166  return std::unique_ptr<ParameterDescriptionCases<int>>(
167  new ParameterDescriptionCases<int>(caseValue, std::move(node)));
168  }
169 
170  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(std::string const& caseValue,
171  std::unique_ptr<ParameterDescriptionNode> node) {
172  return std::unique_ptr<ParameterDescriptionCases<std::string>>(
173  new ParameterDescriptionCases<std::string>(caseValue, std::move(node)));
174  }
175 
176  std::unique_ptr<ParameterDescriptionCases<std::string>> operator>>(char const* caseValue,
177  std::unique_ptr<ParameterDescriptionNode> node) {
178  std::string caseValueString(caseValue);
179  return std::unique_ptr<ParameterDescriptionCases<std::string>>(
180  new ParameterDescriptionCases<std::string>(caseValue, std::move(node)));
181  }
182 
183  // operator&& ---------------------------------------------
184 
185  std::unique_ptr<ParameterDescriptionNode> operator&&(ParameterDescriptionNode const& node_left,
186  ParameterDescriptionNode const& node_right) {
187  return std::make_unique<ANDGroupDescription>(node_left, node_right);
188  }
189 
190  std::unique_ptr<ParameterDescriptionNode> operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
191  ParameterDescriptionNode const& node_right) {
192  return std::make_unique<ANDGroupDescription>(std::move(node_left), node_right);
193  }
194 
195  std::unique_ptr<ParameterDescriptionNode> operator&&(ParameterDescriptionNode const& node_left,
196  std::unique_ptr<ParameterDescriptionNode> node_right) {
197  return std::make_unique<ANDGroupDescription>(node_left, std::move(node_right));
198  }
199 
200  std::unique_ptr<ParameterDescriptionNode> operator&&(std::unique_ptr<ParameterDescriptionNode> node_left,
201  std::unique_ptr<ParameterDescriptionNode> node_right) {
202  return std::make_unique<ANDGroupDescription>(std::move(node_left), std::move(node_right));
203  }
204 
205  // operator|| ---------------------------------------------
206 
207  std::unique_ptr<ParameterDescriptionNode> operator||(ParameterDescriptionNode const& node_left,
208  ParameterDescriptionNode const& node_right) {
209  return std::make_unique<ORGroupDescription>(node_left, node_right);
210  }
211 
212  std::unique_ptr<ParameterDescriptionNode> operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
213  ParameterDescriptionNode const& node_right) {
214  return std::make_unique<ORGroupDescription>(std::move(node_left), node_right);
215  }
216 
217  std::unique_ptr<ParameterDescriptionNode> operator||(ParameterDescriptionNode const& node_left,
218  std::unique_ptr<ParameterDescriptionNode> node_right) {
219  return std::make_unique<ORGroupDescription>(node_left, std::move(node_right));
220  }
221 
222  std::unique_ptr<ParameterDescriptionNode> operator||(std::unique_ptr<ParameterDescriptionNode> node_left,
223  std::unique_ptr<ParameterDescriptionNode> node_right) {
224  return std::make_unique<ORGroupDescription>(std::move(node_left), std::move(node_right));
225  }
226 
227  // operator^ ---------------------------------------------
228 
229  std::unique_ptr<ParameterDescriptionNode> operator^(ParameterDescriptionNode const& node_left,
230  ParameterDescriptionNode const& node_right) {
231  return std::make_unique<XORGroupDescription>(node_left, node_right);
232  }
233 
234  std::unique_ptr<ParameterDescriptionNode> operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
235  ParameterDescriptionNode const& node_right) {
236  return std::make_unique<XORGroupDescription>(std::move(node_left), node_right);
237  }
238 
239  std::unique_ptr<ParameterDescriptionNode> operator^(ParameterDescriptionNode const& node_left,
240  std::unique_ptr<ParameterDescriptionNode> node_right) {
241  return std::make_unique<XORGroupDescription>(node_left, std::move(node_right));
242  }
243 
244  std::unique_ptr<ParameterDescriptionNode> operator^(std::unique_ptr<ParameterDescriptionNode> node_left,
245  std::unique_ptr<ParameterDescriptionNode> node_right) {
246  return std::make_unique<XORGroupDescription>(std::move(node_left), std::move(node_right));
247  }
248 } // namespace edm
void setComment(std::string const &value)
virtual ParameterDescriptionNode * clone() const =0
std::unique_ptr< ParameterDescriptionNode > operator &&(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)
void print(std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh) const
std::unique_ptr< ParameterDescriptionCases< bool > > operator>>(bool caseValue, ParameterDescriptionNode const &node)
#define TYPE_TO_ENUM(type, e_val)
assert(be >=bs)
std::string parameterTypeEnumToString(ParameterTypes iType)
#define TYPE_TO_NAME2(e_val, type)
void printNestedContent(std::ostream &os, bool optional, DocFormatHelper &dfh) const
Definition: PSet.py:1
optional
Definition: Types.py:239
Definition: value.py:1
static void printSpaces(std::ostream &os, int n)
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:15
#define TYPE_TO_NAME(type)
HLT enums.
std::unique_ptr< ParameterDescriptionNode > operator^(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)
unsigned int uint32
Definition: MsgTools.h:14
virtual void print_(std::ostream &, bool, bool, DocFormatHelper &) const
virtual void printNestedContent_(std::ostream &, bool, DocFormatHelper &) const
std::vector< std::string > vstring
Definition: Schedule.cc:482
def move(src, dest)
Definition: eostools.py:511