CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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)
36  TYPE_TO_ENUM(std::string,k_string)
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);
66  TYPE_TO_NAME(vdouble);
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);
78  TYPE_TO_NAME(VPSet);
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  }
91 
92  void
94  comment_ = value;
95  }
96 
97  void
99  comment_ = value;
100  }
101 
102  void
104  bool optional,
105  bool writeToCfi,
106  DocFormatHelper& dfh) {
107  if (hasNestedContent()) {
108  dfh.incrementCounter();
109  }
110  print_(os, optional, writeToCfi, dfh);
111  }
112 
113  void
115  bool optional,
116  DocFormatHelper& dfh) {
117  if (hasNestedContent()) {
118  dfh.incrementCounter();
119  printNestedContent_(os, optional, dfh);
120  }
121  }
122 
123  void
124  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::auto_ptr<ParameterDescriptionCases<bool> >
134  operator>>(bool caseValue,
136  std::auto_ptr<ParameterDescriptionNode> clonedNode(node.clone());
137  return caseValue >> clonedNode;
138  }
139 
140  std::auto_ptr<ParameterDescriptionCases<int> >
141  operator>>(int caseValue,
143  std::auto_ptr<ParameterDescriptionNode> clonedNode(node.clone());
144  return caseValue >> clonedNode;
145  }
146 
147  std::auto_ptr<ParameterDescriptionCases<std::string> >
148  operator>>(std::string const& caseValue,
150  std::auto_ptr<ParameterDescriptionNode> clonedNode(node.clone());
151  return caseValue >> clonedNode;
152  }
153 
154  std::auto_ptr<ParameterDescriptionCases<std::string> >
155  operator>>(char const* caseValue,
157  std::auto_ptr<ParameterDescriptionNode> clonedNode(node.clone());
158  return caseValue >> clonedNode;
159  }
160 
161  std::auto_ptr<ParameterDescriptionCases<bool> >
162  operator>>(bool caseValue,
163  std::auto_ptr<ParameterDescriptionNode> node) {
164  return std::auto_ptr<ParameterDescriptionCases<bool> >(
165  new ParameterDescriptionCases<bool>(caseValue, node));
166  }
167 
168  std::auto_ptr<ParameterDescriptionCases<int> >
169  operator>>(int caseValue,
170  std::auto_ptr<ParameterDescriptionNode> node) {
171  return std::auto_ptr<ParameterDescriptionCases<int> >(
172  new ParameterDescriptionCases<int>(caseValue, node));
173  }
174 
175  std::auto_ptr<ParameterDescriptionCases<std::string> >
176  operator>>(std::string const& caseValue,
177  std::auto_ptr<ParameterDescriptionNode> node) {
178  return std::auto_ptr<ParameterDescriptionCases<std::string> >(
180  }
181 
182  std::auto_ptr<ParameterDescriptionCases<std::string> >
183  operator>>(char const* caseValue,
184  std::auto_ptr<ParameterDescriptionNode> node) {
185  std::string caseValueString(caseValue);
186  return std::auto_ptr<ParameterDescriptionCases<std::string> >(
188  }
189 
190  // operator&& ---------------------------------------------
191 
192  std::auto_ptr<ParameterDescriptionNode>
194  ParameterDescriptionNode const& node_right) {
195  return std::auto_ptr<ParameterDescriptionNode>(new ANDGroupDescription(node_left, node_right));
196  }
197 
198  std::auto_ptr<ParameterDescriptionNode>
199  operator&&(std::auto_ptr<ParameterDescriptionNode> node_left,
200  ParameterDescriptionNode const& node_right) {
201  return std::auto_ptr<ParameterDescriptionNode>(new ANDGroupDescription(node_left, node_right));
202  }
203 
204  std::auto_ptr<ParameterDescriptionNode>
206  std::auto_ptr<ParameterDescriptionNode> node_right) {
207  return std::auto_ptr<ParameterDescriptionNode>(new ANDGroupDescription(node_left, node_right));
208  }
209 
210  std::auto_ptr<ParameterDescriptionNode>
211  operator&&(std::auto_ptr<ParameterDescriptionNode> node_left,
212  std::auto_ptr<ParameterDescriptionNode> node_right) {
213  return std::auto_ptr<ParameterDescriptionNode>(new ANDGroupDescription(node_left, node_right));
214  }
215 
216  // operator|| ---------------------------------------------
217 
218  std::auto_ptr<ParameterDescriptionNode>
220  ParameterDescriptionNode const& node_right) {
221  return std::auto_ptr<ParameterDescriptionNode>(new ORGroupDescription(node_left, node_right));
222  }
223 
224  std::auto_ptr<ParameterDescriptionNode>
225  operator||(std::auto_ptr<ParameterDescriptionNode> node_left,
226  ParameterDescriptionNode const& node_right) {
227  return std::auto_ptr<ParameterDescriptionNode>(new ORGroupDescription(node_left, node_right));
228  }
229 
230  std::auto_ptr<ParameterDescriptionNode>
232  std::auto_ptr<ParameterDescriptionNode> node_right) {
233  return std::auto_ptr<ParameterDescriptionNode>(new ORGroupDescription(node_left, node_right));
234  }
235 
236  std::auto_ptr<ParameterDescriptionNode>
237  operator||(std::auto_ptr<ParameterDescriptionNode> node_left,
238  std::auto_ptr<ParameterDescriptionNode> node_right) {
239  return std::auto_ptr<ParameterDescriptionNode>(new ORGroupDescription(node_left, node_right));
240  }
241 
242  // operator^ ---------------------------------------------
243 
244  std::auto_ptr<ParameterDescriptionNode>
246  ParameterDescriptionNode const& node_right) {
247  return std::auto_ptr<ParameterDescriptionNode>(new XORGroupDescription(node_left, node_right));
248  }
249 
250  std::auto_ptr<ParameterDescriptionNode>
251  operator^(std::auto_ptr<ParameterDescriptionNode> node_left,
252  ParameterDescriptionNode const& node_right) {
253  return std::auto_ptr<ParameterDescriptionNode>(new XORGroupDescription(node_left, node_right));
254  }
255 
256  std::auto_ptr<ParameterDescriptionNode>
258  std::auto_ptr<ParameterDescriptionNode> node_right) {
259  return std::auto_ptr<ParameterDescriptionNode>(new XORGroupDescription(node_left, node_right));
260  }
261 
262  std::auto_ptr<ParameterDescriptionNode>
263  operator^(std::auto_ptr<ParameterDescriptionNode> node_left,
264  std::auto_ptr<ParameterDescriptionNode> node_right) {
265  return std::auto_ptr<ParameterDescriptionNode>(new XORGroupDescription(node_left, node_right));
266  }
267 }
void setComment(std::string const &value)
virtual ParameterDescriptionNode * clone() const =0
std::vector< std::string > vstring
Definition: Schedule.cc:147
virtual void print_(std::ostream &, bool, bool, DocFormatHelper &)
boost::enable_if_c< has_match< A >::value &&has_match< B >::value, AndHelper< A, B > >::type operator&&(A const &a, B const &b)
Definition: Selector.h:185
std::istream & operator>>(std::istream &is, FileInPath &fip)
Definition: FileInPath.h:152
virtual void printNestedContent_(std::ostream &, bool, DocFormatHelper &)
#define TYPE_TO_ENUM(type, e_val)
std::string parameterTypeEnumToString(ParameterTypes iType)
tuple node
Definition: Node.py:50
void printNestedContent(std::ostream &os, bool optional, DocFormatHelper &dfh)
static void printSpaces(std::ostream &os, int n)
unsigned int uint32
Definition: MsgTools.h:13
unsigned long long uint64
Definition: MsgTools.h:14
boost::enable_if_c< has_match< A >::value &&has_match< B >::value, OrHelper< A, B > >::type operator||(A const &a, B const &b)
Definition: Selector.h:214
void print(std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh)
#define TYPE_TO_NAME(type)
std::auto_ptr< ParameterDescriptionNode > operator^(ParameterDescriptionNode const &node_left, ParameterDescriptionNode const &node_right)