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
 
 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 252 of file ParameterDescriptionBase.cc.

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

252  {
253  return exists(pset) ? 1 : 0;
254  }
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 151 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(), findQualityFiles::size, contentValuesCheck::ss, edm::DocFormatHelper::startColumn2(), type(), mitigatedMETSequence_cff::U, and edm::DocFormatHelper::wrapAndPrintText().

151  {
152  if (dfh.pass() == 0) {
153  dfh.setAtLeast1(label().size());
154  if (isTracked()) {
155  dfh.setAtLeast2(parameterTypeEnumToString(type()).size());
156  } else {
157  dfh.setAtLeast2(parameterTypeEnumToString(type()).size() + 10U);
158  }
159  if (optional) {
160  dfh.setAtLeast3(8U);
161  }
162  } else {
163  if (dfh.brief()) {
164  std::ios::fmtflags oldFlags = os.flags();
165 
166  dfh.indent(os);
167  os << std::left << std::setw(dfh.column1()) << label() << " ";
168 
169  if (isTracked()) {
170  os << std::setw(dfh.column2()) << parameterTypeEnumToString(type());
171  } else {
172  std::stringstream ss;
173  ss << "untracked ";
175  os << std::setw(dfh.column2()) << ss.str();
176  }
177  os << " ";
178 
179  os << std::setw(dfh.column3());
180  if (optional) {
181  os << "optional";
182  } else {
183  os << "";
184  }
185  os << " ";
186  os.flags(oldFlags);
187  printDefault_(os, writeToCfi, dfh);
188  } else {
189  // not brief
190  dfh.indent(os);
191  os << label() << "\n";
192 
193  dfh.indent2(os);
194  os << "type: ";
195  if (!isTracked())
196  os << "untracked ";
197 
198  os << parameterTypeEnumToString(type()) << " ";
199 
200  if (optional)
201  os << "optional";
202  os << "\n";
203 
204  dfh.indent2(os);
205  printDefault_(os, writeToCfi, dfh);
206 
207  if (!comment().empty()) {
208  DocFormatHelper::wrapAndPrintText(os, comment(), dfh.startColumn2(), dfh.commentWidth());
209  }
210  os << "\n";
211  }
212  }
213  }
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:198
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 215 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_().

215  {
216  if (!dfh.brief())
217  os << "default: ";
218  if (writeToCfi && hasDefault()) {
219  if (hasNestedContent()) {
220  os << "see Section " << dfh.section() << "." << dfh.counter();
221  } else {
222  if (dfh.brief()) {
223  writeDoc_(os, dfh.indentation());
224  } else {
225  writeDoc_(os, dfh.startColumn2());
226  }
227  }
228  } else if (!writeToCfi) {
229  os << "none (do not write to cfi)";
230  } else {
231  os << "none";
232  }
233  os << "\n";
234  }
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 236 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_().

236  {
237  int indentation = dfh.indentation();
238  if (dfh.parent() != DocFormatHelper::TOP) {
240  }
241 
243  os << "Section " << dfh.section() << "." << dfh.counter() << " " << label() << " default contents: ";
244  writeDoc_(os, indentation + 2);
245  os << "\n";
246  if (!dfh.brief())
247  os << "\n";
248  }
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:198
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 hasDefault(), printContent_cfi::indentation, isTracked(), label(), Types::optional, edm::parameterTypeEnumToString(), edm::ParameterDescriptionNode::printSpaces(), and type().

122  {
123  wroteSomething = true;
124  if (startWithComma)
125  os << ",";
126  startWithComma = true;
127 
128  os << "\n";
130 
131  os << label() << " = cms.";
132 
133  if (!hasDefault()) {
134  if (optional) {
135  os << "optional.";
136  } else {
137  os << "required.";
138  }
139  if (!isTracked())
140  os << "untracked.";
142  } else {
143  if (!isTracked())
144  os << "untracked.";
145  os << parameterTypeEnumToString(type()) << "(";
146  writeCfi_(os, indentation);
147  os << ")";
148  }
149  }
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)
optional
Definition: Types.py:198
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