1 #ifndef FWCore_ParameterSet_ParameterSetDescription_h
2 #define FWCore_ParameterSet_ParameterSetDescription_h
44 class ParameterWildcardBase;
45 class ParameterDescriptionNode;
49 class ParameterDescriptionCases;
50 class DocFormatHelper;
63 return node_.operator->();
94 template <
typename T,
typename U>
96 return add<T, U>(iLabel,
value,
true,
false,
true);
99 template <
typename T,
typename U>
101 return add<T, U>(iLabel,
value,
false,
false,
true);
104 template <
typename T,
typename U>
106 return add<T, U>(iLabel,
value,
true,
true,
true);
109 template <
typename T,
typename U>
111 return add<T, U>(iLabel,
value,
false,
true,
true);
117 template <
typename T,
typename U>
119 return add<T, U>(iLabel,
true,
false,
true);
122 template <
typename T,
typename U>
124 return add<T, U>(iLabel,
false,
false,
true);
127 template <
typename T,
typename U>
129 return add<T, U>(iLabel,
true,
true,
true);
132 template <
typename T,
typename U>
134 return add<T, U>(iLabel,
false,
true,
true);
148 template <
typename U>
151 std::vector<ParameterSet>
const&
defaults) {
152 return addVPSet<U>(iLabel, validator,
defaults,
true,
false,
true);
155 template <
typename U>
158 std::vector<ParameterSet>
const&
defaults) {
159 return addVPSet<U>(iLabel, validator,
defaults,
false,
false,
true);
162 template <
typename U>
165 std::vector<ParameterSet>
const&
defaults) {
166 return addVPSet<U>(iLabel, validator,
defaults,
true,
true,
true);
169 template <
typename U>
172 std::vector<ParameterSet>
const&
defaults) {
173 return addVPSet<U>(iLabel, validator,
defaults,
false,
true,
true);
176 template <
typename U>
178 return addVPSet<U>(iLabel, validator,
true,
false,
true);
181 template <
typename U>
183 return addVPSet<U>(iLabel, validator,
false,
false,
true);
186 template <
typename U>
188 return addVPSet<U>(iLabel, validator,
true,
true,
true);
191 template <
typename U>
193 return addVPSet<U>(iLabel, validator,
false,
true,
true);
198 template <
typename T,
typename U>
200 return addWildcard<T, U>(
pattern,
true);
203 template <
typename T,
typename U>
205 return addWildcard<T, U>(
pattern,
false);
219 template <
typename T>
222 return ifValue<T>(switchParameter,
std::move(cases),
false,
true);
225 template <
typename T>
229 return ifValue<T>(switchParameter,
std::move(cases),
true, writeToCfi);
234 return ifExists(node1, node2,
false,
true);
240 return ifExists(node1, node2,
true, writeToCfi);
244 template <
typename T,
typename U>
246 return labelsFrom<T, U>(iLabel,
true,
false,
true);
249 template <
typename T,
typename U>
251 return labelsFrom<T, U>(iLabel,
false,
false,
true);
254 template <
typename T,
typename U>
256 return labelsFrom<T, U>(iLabel,
true,
true, writeToCfi);
259 template <
typename T,
typename U>
261 return labelsFrom<T, U>(iLabel,
false,
true, writeToCfi);
272 template <
typename T,
typename U,
typename V>
274 return labelsFrom<T, U, V>(iLabel,
true,
false,
true,
desc);
277 template <
typename T,
typename U,
typename V>
279 return labelsFrom<T, U, V>(iLabel,
false,
false,
true,
desc);
282 template <
typename T,
typename U,
typename V>
284 return labelsFrom<T, U, V>(iLabel,
true,
true, writeToCfi,
desc);
287 template <
typename T,
typename U,
typename V>
289 return labelsFrom<T, U, V>(iLabel,
false,
true, writeToCfi,
desc);
312 template <
typename T,
typename U>
315 template <
typename T,
typename U>
318 template <
typename U>
321 std::vector<ParameterSet>
const&
defaults,
326 template <
typename U>
330 template <
typename T,
typename U>
335 template <
typename T>
346 template <
typename T,
typename U>
349 template <
typename T,
typename U,
typename V>
354 std::set<std::string>& validatedNames);
357 std::set<std::string>
const& validatedNames);
361 bool& startWithComma,
363 bool& wroteSomething);
369 std::set<ParameterTypes>
const& nodeWildcardTypes);
389 template <
typename T,
typename U>
391 U const& iLabel,
T const&
value,
bool isTracked,
bool isOptional,
bool writeToCfi) {
392 std::unique_ptr<ParameterDescriptionNode> node =
393 std::make_unique<ParameterDescription<T>>(iLabel,
value, isTracked);
395 return static_cast<ParameterDescriptionBase*>(pnode);
398 template <
typename T,
typename U>
403 std::unique_ptr<ParameterDescriptionNode> node = std::make_unique<ParameterDescription<T>>(iLabel, isTracked);
405 return static_cast<ParameterDescriptionBase*>(pnode);
408 template <
typename U>
411 std::vector<ParameterSet>
const&
defaults,
415 std::unique_ptr<ParameterDescriptionNode> node =
416 std::make_unique<ParameterDescription<std::vector<ParameterSet>>>(iLabel, validator, isTracked,
defaults);
418 return static_cast<ParameterDescriptionBase*>(pnode);
421 template <
typename U>
424 std::unique_ptr<ParameterDescriptionNode> node =
425 std::make_unique<ParameterDescription<std::vector<ParameterSet>>>(iLabel, validator, isTracked);
427 return static_cast<ParameterDescriptionBase*>(pnode);
430 template <
typename T,
typename U>
432 std::unique_ptr<ParameterDescriptionNode> node =
435 return static_cast<ParameterWildcardBase*>(pnode);
438 template <
typename T>
443 std::unique_ptr<ParameterDescriptionNode> pdswitch =
444 std::make_unique<ParameterSwitch<T>>(switchParameter,
std::move(cases));
448 template <
typename T,
typename U>
453 std::unique_ptr<ParameterDescriptionNode> pd = std::make_unique<AllowedLabelsDescription<T>>(iLabel, isTracked);
457 template <
typename T,
typename U,
typename V>
459 U const& iLabel,
bool isTracked,
bool optional,
bool writeToCfi,
V const&
desc) {
460 std::unique_ptr<ParameterDescriptionNode> pd =
461 std::make_unique<AllowedLabelsDescription<T>>(iLabel,
desc, isTracked);