CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
edm::ParameterDescriptionBase Class Referenceabstract

#include <ParameterDescriptionBase.h>

Inheritance diagram for edm::ParameterDescriptionBase:
edm::ParameterDescriptionNode edm::ParameterDescription< T > edm::ParameterDescription< ParameterSetDescription > edm::ParameterDescription< std::vector< ParameterSet > > edm::ParameterDescription< std::vector< std::string > >

Public Member Functions

bool hasDefault () const
 
bool isTracked () const
 
std::string const & label () const
 
virtual ParameterSetDescription const * parameterSetDescription () const
 
virtual ParameterSetDescriptionparameterSetDescription ()
 
ParameterTypes type () const
 
 ~ParameterDescriptionBase () override
 
- Public Member Functions inherited from edm::ParameterDescriptionNode
void checkAndGetLabelsAndTypes (std::set< std::string > &usedLabels, std::set< ParameterTypes > &parameterTypes, std::set< ParameterTypes > &wildcardTypes) const
 
virtual ParameterDescriptionNodeclone () const =0
 
std::string const & comment () const
 
bool exists (ParameterSet const &pset) const
 
bool hasNestedContent () const
 
int howManyXORSubNodesExist (ParameterSet const &pset) const
 
virtual bool isWildcard () const
 
 ParameterDescriptionNode ()
 
 ParameterDescriptionNode (Comment const &iComment)
 
bool partiallyExists (ParameterSet const &pset) const
 
void print (std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh) const
 
void printNestedContent (std::ostream &os, bool optional, DocFormatHelper &dfh) const
 
void setComment (std::string const &value)
 
void setComment (char const *value)
 
void validate (ParameterSet &pset, std::set< std::string > &validatedLabels, bool optional) const
 
void writeCfi (std::ostream &os, bool optional, bool &startWithComma, int indentation, bool &wroteSomething) const
 
virtual ~ParameterDescriptionNode ()
 

Protected Member Functions

 ParameterDescriptionBase (std::string const &iLabel, ParameterTypes iType, bool isTracked, bool hasDefault, Comment const &iComment)
 
 ParameterDescriptionBase (char const *iLabel, ParameterTypes iType, bool isTracked, bool hasDefault, Comment const &iComment)
 
void throwMissingRequiredNoDefault () const
 
void throwParameterWrongTrackiness () const
 
void throwParameterWrongType () const
 
- Protected Member Functions inherited from edm::ParameterDescriptionNode
virtual bool exists_ (ParameterSet const &pset) const =0
 
virtual bool hasNestedContent_ () const
 

Private Member Functions

void checkAndGetLabelsAndTypes_ (std::set< std::string > &usedLabels, std::set< ParameterTypes > &parameterTypes, std::set< ParameterTypes > &wildcardTypes) const override
 
virtual bool exists_ (ParameterSet const &pset) const=0
 
virtual bool exists_ (ParameterSet const &pset, bool isTracked) const =0
 
int howManyXORSubNodesExist_ (ParameterSet const &pset) const override
 
virtual void insertDefault_ (ParameterSet &pset) const =0
 
bool partiallyExists_ (ParameterSet const &pset) const override
 
void print_ (std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh) const override
 
virtual void printDefault_ (std::ostream &os, bool writeToCfi, DocFormatHelper &dfh) const
 
void printNestedContent_ (std::ostream &os, bool optional, DocFormatHelper &dfh) const override
 
void validate_ (ParameterSet &pset, std::set< std::string > &validatedLabels, bool optional) const override
 
void writeCfi_ (std::ostream &os, bool optional, bool &startWithComma, int indentation, bool &wroteSomething) const override
 
virtual void writeCfi_ (std::ostream &os, int indentation) const =0
 
virtual void writeDoc_ (std::ostream &os, int indentation) const =0
 

Private Attributes

bool hasDefault_
 
bool isTracked_
 
std::string label_
 
ParameterTypes type_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::ParameterDescriptionNode
static void printSpaces (std::ostream &os, int n)
 
- Protected Attributes inherited from edm::ParameterDescriptionNode
std::string comment_
 

Detailed Description

Definition at line 33 of file ParameterDescriptionBase.h.

Constructor & Destructor Documentation

◆ ~ParameterDescriptionBase()

ParameterDescriptionBase::~ParameterDescriptionBase ( )
override

Definition at line 50 of file ParameterDescriptionBase.cc.

50 {}

◆ ParameterDescriptionBase() [1/2]

ParameterDescriptionBase::ParameterDescriptionBase ( std::string const &  iLabel,
ParameterTypes  iType,
bool  isTracked,
bool  hasDefault,
Comment const &  iComment 
)
protected

Definition at line 24 of file ParameterDescriptionBase.cc.

References Exception, label_, and edm::errors::LogicError.

26  : ParameterDescriptionNode(iComment),
27  label_(iLabel),
28  type_(iType),
31  if (label_.empty()) {
32  throw Exception(errors::LogicError) << "Empty string used as a label for a parameter. This is\n"
33  "not allowed.\n";
34  }
35  }

◆ ParameterDescriptionBase() [2/2]

ParameterDescriptionBase::ParameterDescriptionBase ( char const *  iLabel,
ParameterTypes  iType,
bool  isTracked,
bool  hasDefault,
Comment const &  iComment 
)
protected

Definition at line 37 of file ParameterDescriptionBase.cc.

References Exception, label_, and edm::errors::LogicError.

39  : ParameterDescriptionNode(iComment),
40  label_(iLabel),
41  type_(iType),
44  if (label_.empty()) {
45  throw Exception(errors::LogicError) << "Empty string used as a label for a parameter. This is\n"
46  "not allowed.\n";
47  }
48  }

Member Function Documentation

◆ checkAndGetLabelsAndTypes_()

void ParameterDescriptionBase::checkAndGetLabelsAndTypes_ ( std::set< std::string > &  usedLabels,
std::set< ParameterTypes > &  parameterTypes,
std::set< ParameterTypes > &  wildcardTypes 
) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 91 of file ParameterDescriptionBase.cc.

References label(), and type().

93  {
94  usedLabels.insert(label());
95  parameterTypes.insert(type());
96  }
std::string const & label() const

◆ exists_() [1/2]

virtual bool edm::ParameterDescriptionNode::exists_
private

◆ exists_() [2/2]

virtual bool edm::ParameterDescriptionBase::exists_ ( ParameterSet const &  pset,
bool  isTracked 
) const
privatepure virtual

◆ hasDefault()

bool edm::ParameterDescriptionBase::hasDefault ( ) const
inline

◆ howManyXORSubNodesExist_()

int ParameterDescriptionBase::howManyXORSubNodesExist_ ( ParameterSet const &  pset) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 255 of file ParameterDescriptionBase.cc.

References edm::ParameterDescriptionNode::exists(), and muonDTDigis_cfi::pset.

255  {
256  return exists(pset) ? 1 : 0;
257  }
bool exists(ParameterSet const &pset) const

◆ insertDefault_()

virtual void edm::ParameterDescriptionBase::insertDefault_ ( ParameterSet pset) const
privatepure virtual

◆ isTracked()

bool edm::ParameterDescriptionBase::isTracked ( ) const
inline

Definition at line 39 of file ParameterDescriptionBase.h.

References isTracked_.

Referenced by Types.PSet::clone(), Mixins._ParameterTypeBase::configTypeName(), edm::ParameterDescription< std::vector< std::string > >::exists_(), edm::ParameterDescription< ParameterSetDescription >::exists_(), edm::ParameterDescription< std::vector< std::string > >::insertDefault_(), Mixins.UsingBlock::insertInto(), Types.int32::insertInto(), Types.uint32::insertInto(), Types.int64::insertInto(), Types.uint64::insertInto(), Types.double::insertInto(), Types.bool::insertInto(), Types.string::insertInto(), Types.EventID::insertInto(), Types.LuminosityBlockID::insertInto(), Types.LuminosityBlockRange::insertInto(), Types.EventRange::insertInto(), Types.InputTag::insertInto(), Types.ESInputTag::insertInto(), Types.FileInPath::insertInto(), Types.PSet::insertInto(), Types.vint32::insertInto(), Types.vuint32::insertInto(), Types.vint64::insertInto(), Types.vuint64::insertInto(), Types.vdouble::insertInto(), Types.vbool::insertInto(), Types.vstring::insertInto(), Types.VLuminosityBlockID::insertInto(), Types.VInputTag::insertInto(), Types.VESInputTag::insertInto(), Types.VEventID::insertInto(), Types.VLuminosityBlockRange::insertInto(), Types.VEventRange::insertInto(), Types.VPSet::insertInto(), print_(), Mixins._ParameterTypeBase::pythonTypeName(), throwMissingRequiredNoDefault(), throwParameterWrongTrackiness(), throwParameterWrongType(), validate_(), edm::ParameterDescription< ParameterSetDescription >::validate_(), and writeCfi_().

◆ label()

std::string const& edm::ParameterDescriptionBase::label ( ) const
inline

◆ parameterSetDescription() [1/2]

virtual ParameterSetDescription const* edm::ParameterDescriptionBase::parameterSetDescription ( ) const
inlinevirtual

◆ parameterSetDescription() [2/2]

virtual ParameterSetDescription* edm::ParameterDescriptionBase::parameterSetDescription ( )
inlinevirtual

◆ partiallyExists_()

bool ParameterDescriptionBase::partiallyExists_ ( ParameterSet const &  pset) const
overrideprivatevirtual

◆ print_()

void ParameterDescriptionBase::print_ ( std::ostream &  os,
bool  optional,
bool  writeToCfi,
DocFormatHelper dfh 
) const
overrideprivatevirtual

Reimplemented from edm::ParameterDescriptionNode.

Definition at line 154 of file ParameterDescriptionBase.cc.

References edm::DocFormatHelper::brief(), edm::DocFormatHelper::column1(), edm::DocFormatHelper::column2(), edm::DocFormatHelper::column3(), edm::ParameterDescriptionNode::comment(), edm::DocFormatHelper::commentWidth(), relativeConstraints::empty, edm::DocFormatHelper::indent(), edm::DocFormatHelper::indent2(), isTracked(), label(), Types::optional, edm::parameterTypeEnumToString(), edm::DocFormatHelper::pass(), printDefault_(), edm::DocFormatHelper::setAtLeast1(), edm::DocFormatHelper::setAtLeast2(), edm::DocFormatHelper::setAtLeast3(), contentValuesCheck::ss, edm::DocFormatHelper::startColumn2(), type(), mitigatedMETSequence_cff::U, and edm::DocFormatHelper::wrapAndPrintText().

154  {
155  if (dfh.pass() == 0) {
156  dfh.setAtLeast1(label().size());
157  if (isTracked()) {
158  dfh.setAtLeast2(parameterTypeEnumToString(type()).size());
159  } else {
160  dfh.setAtLeast2(parameterTypeEnumToString(type()).size() + 10U);
161  }
162  if (optional) {
163  dfh.setAtLeast3(8U);
164  }
165  } else {
166  if (dfh.brief()) {
167  std::ios::fmtflags oldFlags = os.flags();
168 
169  dfh.indent(os);
170  os << std::left << std::setw(dfh.column1()) << label() << " ";
171 
172  if (isTracked()) {
173  os << std::setw(dfh.column2()) << parameterTypeEnumToString(type());
174  } else {
175  std::stringstream ss;
176  ss << "untracked ";
178  os << std::setw(dfh.column2()) << ss.str();
179  }
180  os << " ";
181 
182  os << std::setw(dfh.column3());
183  if (optional) {
184  os << "optional";
185  } else {
186  os << "";
187  }
188  os << " ";
189  os.flags(oldFlags);
190  printDefault_(os, writeToCfi, dfh);
191  } else {
192  // not brief
193  dfh.indent(os);
194  os << label() << "\n";
195 
196  dfh.indent2(os);
197  os << "type: ";
198  if (!isTracked())
199  os << "untracked ";
200 
201  os << parameterTypeEnumToString(type()) << " ";
202 
203  if (optional)
204  os << "optional";
205  os << "\n";
206 
207  dfh.indent2(os);
208  printDefault_(os, writeToCfi, dfh);
209 
210  if (!comment().empty()) {
211  DocFormatHelper::wrapAndPrintText(os, comment(), dfh.startColumn2(), dfh.commentWidth());
212  }
213  os << "\n";
214  }
215  }
216  }
size
Write out results.
std::string const & label() const
static void wrapAndPrintText(std::ostream &os, std::string const &text, size_t indent, size_t suggestedWidth)
std::string parameterTypeEnumToString(ParameterTypes iType)
optional
Definition: Types.py:245
std::string const & comment() const
virtual void printDefault_(std::ostream &os, bool writeToCfi, DocFormatHelper &dfh) const

◆ printDefault_()

void ParameterDescriptionBase::printDefault_ ( std::ostream &  os,
bool  writeToCfi,
DocFormatHelper dfh 
) const
privatevirtual

Reimplemented in edm::ParameterDescription< std::vector< ParameterSet > >, and edm::ParameterDescription< ParameterSetDescription >.

Definition at line 218 of file ParameterDescriptionBase.cc.

References edm::DocFormatHelper::brief(), edm::DocFormatHelper::counter(), hasDefault(), edm::ParameterDescriptionNode::hasNestedContent(), edm::DocFormatHelper::indentation(), edm::DocFormatHelper::section(), edm::DocFormatHelper::startColumn2(), and writeDoc_().

Referenced by print_().

218  {
219  if (!dfh.brief())
220  os << "default: ";
221  if (writeToCfi && hasDefault()) {
222  if (hasNestedContent()) {
223  os << "see Section " << dfh.section() << "." << dfh.counter();
224  } else {
225  if (dfh.brief()) {
226  writeDoc_(os, dfh.indentation());
227  } else {
228  writeDoc_(os, dfh.startColumn2());
229  }
230  }
231  } else if (!writeToCfi) {
232  os << "none (do not write to cfi)";
233  } else {
234  os << "none";
235  }
236  os << "\n";
237  }
virtual void writeDoc_(std::ostream &os, int indentation) const =0

◆ printNestedContent_()

void ParameterDescriptionBase::printNestedContent_ ( std::ostream &  os,
bool  optional,
DocFormatHelper dfh 
) const
overrideprivatevirtual

Reimplemented from edm::ParameterDescriptionNode.

Definition at line 239 of file ParameterDescriptionBase.cc.

References edm::DocFormatHelper::brief(), edm::DocFormatHelper::counter(), printContent_cfi::indentation, edm::DocFormatHelper::indentation(), label(), edm::DocFormatHelper::offsetSectionContent(), edm::DocFormatHelper::parent(), edm::ParameterDescriptionNode::printSpaces(), edm::DocFormatHelper::section(), edm::DocFormatHelper::TOP, and writeDoc_().

239  {
240  int indentation = dfh.indentation();
241  if (dfh.parent() != DocFormatHelper::TOP) {
243  }
244 
246  os << "Section " << dfh.section() << "." << dfh.counter() << " " << label() << " default contents: ";
247  writeDoc_(os, indentation + 2);
248  os << "\n";
249  if (!dfh.brief())
250  os << "\n";
251  }
std::string const & label() const
static int offsetSectionContent()
static void printSpaces(std::ostream &os, int n)
virtual void writeDoc_(std::ostream &os, int indentation) const =0

◆ throwMissingRequiredNoDefault()

void ParameterDescriptionBase::throwMissingRequiredNoDefault ( ) const
protected

Definition at line 79 of file ParameterDescriptionBase.cc.

References edm::errors::Configuration, Exception, isTracked(), label(), edm::parameterTypeEnumToString(), AlCaHLTBitMon_QueryRunRegistry::string, and type().

Referenced by validate_().

79  {
80  std::string tr("untracked");
81  if (isTracked())
82  tr = "tracked";
83 
85  << "Missing required parameter. It should have label \"" << label() << "\" and have type \"" << tr << " "
86  << parameterTypeEnumToString(type()) << "\".\n"
87  << "The description has no default. The parameter must be defined "
88  "in the configuration\n";
89  }
std::string const & label() const
std::string parameterTypeEnumToString(ParameterTypes iType)

◆ throwParameterWrongTrackiness()

void ParameterDescriptionBase::throwParameterWrongTrackiness ( ) const
protected

Definition at line 52 of file ParameterDescriptionBase.cc.

References edm::errors::Configuration, Exception, isTracked(), label(), edm::parameterTypeEnumToString(), AlCaHLTBitMon_QueryRunRegistry::string, and type().

Referenced by validate_(), and edm::ParameterDescription< ParameterSetDescription >::validate_().

52  {
53  std::string tr("a tracked");
54  std::string shouldBe("untracked");
55  if (isTracked()) {
56  tr = "an untracked";
57  shouldBe = "tracked";
58  }
59 
60  throw Exception(errors::Configuration) << "In the configuration, parameter \"" << label()
61  << "\" is defined "
62  "as "
63  << tr << " " << parameterTypeEnumToString(type()) << ".\n"
64  << "It should be " << shouldBe << ".\n";
65  }
std::string const & label() const
std::string parameterTypeEnumToString(ParameterTypes iType)

◆ throwParameterWrongType()

void ParameterDescriptionBase::throwParameterWrongType ( ) const
protected

Definition at line 67 of file ParameterDescriptionBase.cc.

References edm::errors::Configuration, Exception, isTracked(), label(), edm::parameterTypeEnumToString(), AlCaHLTBitMon_QueryRunRegistry::string, and type().

Referenced by validate_(), and edm::ParameterDescription< ParameterSetDescription >::validate_().

67  {
68  std::string tr("an untracked");
69  if (isTracked())
70  tr = "a tracked";
71 
72  throw Exception(errors::Configuration) << "Parameter \"" << label()
73  << "\" should be defined "
74  "as "
75  << tr << " " << parameterTypeEnumToString(type()) << ".\n"
76  << "The type in the configuration is incorrect.\n";
77  }
std::string const & label() const
std::string parameterTypeEnumToString(ParameterTypes iType)

◆ type()

ParameterTypes edm::ParameterDescriptionBase::type ( ) const
inline

◆ validate_()

void ParameterDescriptionBase::validate_ ( ParameterSet pset,
std::set< std::string > &  validatedLabels,
bool  optional 
) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 98 of file ParameterDescriptionBase.cc.

References edm::ParameterDescriptionNode::exists(), exists_(), hasDefault(), insertDefault_(), isTracked(), label(), Types::optional, muonDTDigis_cfi::pset, throwMissingRequiredNoDefault(), throwParameterWrongTrackiness(), and throwParameterWrongType().

100  {
101  bool exists = exists_(pset, isTracked());
102 
103  if (exists) {
104  validatedLabels.insert(label());
105  } else if (exists_(pset, !isTracked())) {
107  } else if (pset.exists(label())) {
109  }
110 
111  if (!exists && !optional) {
112  if (hasDefault()) {
114  validatedLabels.insert(label());
115  } else {
117  }
118  }
119  }
std::string const & label() const
optional
Definition: Types.py:245
bool exists(ParameterSet const &pset) const
virtual bool exists_(ParameterSet const &pset, bool isTracked) const =0
virtual void insertDefault_(ParameterSet &pset) const =0

◆ writeCfi_() [1/2]

void ParameterDescriptionBase::writeCfi_ ( std::ostream &  os,
bool  optional,
bool &  startWithComma,
int  indentation,
bool &  wroteSomething 
) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 121 of file ParameterDescriptionBase.cc.

References relativeConstraints::empty, hasDefault(), printContent_cfi::indentation, isTracked(), label(), Types::optional, or, edm::parameterTypeEnumToString(), edm::ParameterDescriptionNode::printSpaces(), and type().

122  {
123  if (label().empty() or label()[0] == '@') {
124  return;
125  }
126  wroteSomething = true;
127  if (startWithComma)
128  os << ",";
129  startWithComma = true;
130 
131  os << "\n";
133 
134  os << label() << " = cms.";
135 
136  if (!hasDefault()) {
137  if (optional) {
138  os << "optional.";
139  } else {
140  os << "required.";
141  }
142  if (!isTracked())
143  os << "untracked.";
145  } else {
146  if (!isTracked())
147  os << "untracked.";
148  os << parameterTypeEnumToString(type()) << "(";
149  writeCfi_(os, indentation);
150  os << ")";
151  }
152  }
std::string const & label() const
void writeCfi_(std::ostream &os, bool optional, bool &startWithComma, int indentation, bool &wroteSomething) const override
std::string parameterTypeEnumToString(ParameterTypes iType)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
optional
Definition: Types.py:245
static void printSpaces(std::ostream &os, int n)

◆ writeCfi_() [2/2]

virtual void edm::ParameterDescriptionBase::writeCfi_ ( std::ostream &  os,
int  indentation 
) const
privatepure virtual

◆ writeDoc_()

virtual void edm::ParameterDescriptionBase::writeDoc_ ( std::ostream &  os,
int  indentation 
) const
privatepure virtual

Member Data Documentation

◆ hasDefault_

bool edm::ParameterDescriptionBase::hasDefault_
private

Definition at line 88 of file ParameterDescriptionBase.h.

Referenced by hasDefault().

◆ isTracked_

bool edm::ParameterDescriptionBase::isTracked_
private

Definition at line 87 of file ParameterDescriptionBase.h.

Referenced by isTracked().

◆ label_

std::string edm::ParameterDescriptionBase::label_
private

◆ type_

ParameterTypes edm::ParameterDescriptionBase::type_
private