CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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
 
virtual ~ParameterDescriptionBase ()
 
- 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 ()
 
int howManyXORSubNodesExist (ParameterSet const &pset) const
 
bool partiallyExists (ParameterSet const &pset) const
 
void print (std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh)
 
void printNestedContent (std::ostream &os, bool optional, DocFormatHelper &dfh)
 
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 &startWithComma, int indentation, bool &wroteSomething) const
 
virtual ~ParameterDescriptionNode ()
 

Protected Member Functions

 ParameterDescriptionBase (std::string const &iLabel, ParameterTypes iType, bool isTracked, bool hasDefault)
 
 ParameterDescriptionBase (char const *iLabel, ParameterTypes iType, bool isTracked, bool hasDefault)
 
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_ ()
 

Private Member Functions

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

Definition at line 55 of file ParameterDescriptionBase.cc.

55 { }
ParameterDescriptionBase::ParameterDescriptionBase ( std::string const &  iLabel,
ParameterTypes  iType,
bool  isTracked,
bool  hasDefault 
)
protected

Definition at line 23 of file ParameterDescriptionBase.cc.

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

27  :label_(iLabel),
28  type_(iType),
31  {
32  if(label_.empty()) {
34  << "Empty string used as a label for a parameter. This is\n"
35  "not allowed.\n";
36  }
37  }
ParameterDescriptionBase::ParameterDescriptionBase ( char const *  iLabel,
ParameterTypes  iType,
bool  isTracked,
bool  hasDefault 
)
protected

Definition at line 39 of file ParameterDescriptionBase.cc.

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

43  :label_(iLabel),
44  type_(iType),
47  {
48  if (label_.empty()) {
50  << "Empty string used as a label for a parameter. This is\n"
51  "not allowed.\n";
52  }
53  }

Member Function Documentation

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

Implements edm::ParameterDescriptionNode.

Definition at line 99 of file ParameterDescriptionBase.cc.

References label(), and type().

101  {
102  usedLabels.insert(label());
103  parameterTypes.insert(type());
104  }
std::string const & label() const
virtual bool edm::ParameterDescriptionBase::exists_ ( ParameterSet const &  pset,
bool  isTracked 
) const
privatepure virtual
bool edm::ParameterDescriptionBase::hasDefault ( ) const
inline
int ParameterDescriptionBase::howManyXORSubNodesExist_ ( ParameterSet const &  pset) const
privatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 290 of file ParameterDescriptionBase.cc.

References edm::ParameterDescriptionNode::exists().

290  {
291  return exists(pset) ? 1 : 0;
292  }
tuple pset
Definition: CrabTask.py:85
bool exists(ParameterSet const &pset) const
virtual void edm::ParameterDescriptionBase::insertDefault_ ( ParameterSet pset) const
privatepure virtual
bool edm::ParameterDescriptionBase::isTracked ( ) const
inline

Definition at line 40 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_(), Types.int32::insertInto(), Types.uint32::insertInto(), Types.int64::insertInto(), Types.uint64::insertInto(), Mixins.UsingBlock::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_().

std::string const& edm::ParameterDescriptionBase::label ( ) const
inline
virtual ParameterSetDescription const* edm::ParameterDescriptionBase::parameterSetDescription ( ) const
inlinevirtual
virtual ParameterSetDescription* edm::ParameterDescriptionBase::parameterSetDescription ( )
inlinevirtual
bool ParameterDescriptionBase::partiallyExists_ ( ParameterSet const &  pset) const
privatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 284 of file ParameterDescriptionBase.cc.

References edm::ParameterDescriptionNode::exists().

284  {
285  return exists(pset);
286  }
tuple pset
Definition: CrabTask.py:85
bool exists(ParameterSet const &pset) const
void ParameterDescriptionBase::print_ ( std::ostream &  os,
bool  optional,
bool  writeToCfi,
DocFormatHelper dfh 
)
privatevirtual

Reimplemented from edm::ParameterDescriptionNode.

Definition at line 162 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(), edm::parameterTypeEnumToString(), edm::DocFormatHelper::pass(), printDefault_(), edm::DocFormatHelper::setAtLeast1(), edm::DocFormatHelper::setAtLeast2(), edm::DocFormatHelper::setAtLeast3(), findQualityFiles::size, edm::DocFormatHelper::startColumn2(), type(), and edm::DocFormatHelper::wrapAndPrintText().

166  {
167  if (dfh.pass() == 0) {
168  dfh.setAtLeast1(label().size());
169  if (isTracked()) {
170  dfh.setAtLeast2(parameterTypeEnumToString(type()).size());
171  }
172  else {
173  dfh.setAtLeast2(parameterTypeEnumToString(type()).size() + 10U);
174  }
175  if (optional) {
176  dfh.setAtLeast3(8U);
177  }
178  }
179  else {
180 
181  if (dfh.brief()) {
182  std::ios::fmtflags oldFlags = os.flags();
183 
184  dfh.indent(os);
185  os << std::left << std::setw(dfh.column1()) << label() << " ";
186 
187  if (isTracked()) {
188  os << std::setw(dfh.column2()) << parameterTypeEnumToString(type());
189  }
190  else {
191  std::stringstream ss;
192  ss << "untracked ";
194  os << std::setw(dfh.column2()) << ss.str();
195  }
196  os << " ";
197 
198  os << std::setw(dfh.column3());
199  if (optional) {
200  os << "optional";
201  }
202  else {
203  os << "";
204  }
205  os << " ";
206  os.flags(oldFlags);
207  printDefault_(os, writeToCfi, dfh);
208  }
209  // not brief
210  else {
211 
212  dfh.indent(os);
213  os << label() << "\n";
214 
215  dfh.indent2(os);
216  os << "type: ";
217  if (!isTracked()) os << "untracked ";
218 
219  os << parameterTypeEnumToString(type()) << " ";
220 
221  if (optional) os << "optional";
222  os << "\n";
223 
224  dfh.indent2(os);
225  printDefault_(os, writeToCfi, dfh);
226 
227  if (!comment().empty()) {
229  comment(),
230  dfh.startColumn2(),
231  dfh.commentWidth());
232  }
233  os << "\n";
234  }
235  }
236  }
static void wrapAndPrintText(std::ostream &os, std::string const &text, size_t indent, size_t suggestedWidth)
std::string parameterTypeEnumToString(ParameterTypes iType)
virtual void printDefault_(std::ostream &os, bool writeToCfi, DocFormatHelper &dfh)
std::string const & comment() const
tuple size
Write out results.
std::string const & label() const
void ParameterDescriptionBase::printDefault_ ( std::ostream &  os,
bool  writeToCfi,
DocFormatHelper dfh 
)
privatevirtual

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

Definition at line 240 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_().

242  {
243  if (!dfh.brief()) os << "default: ";
244  if (writeToCfi && hasDefault()) {
245  if (hasNestedContent()) {
246  os << "see Section " << dfh.section()
247  << "." << dfh.counter();
248  }
249  else {
250  if (dfh.brief()) {
251  writeDoc_(os, dfh.indentation());
252  }
253  else {
254  writeDoc_(os, dfh.startColumn2());
255  }
256  }
257  }
258  else {
259  os << "none (do not write to cfi)";
260  }
261  os << "\n";
262  }
virtual void writeDoc_(std::ostream &os, int indentation) const =0
void ParameterDescriptionBase::printNestedContent_ ( std::ostream &  os,
bool  optional,
DocFormatHelper dfh 
)
privatevirtual

Reimplemented from edm::ParameterDescriptionNode.

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

Definition at line 266 of file ParameterDescriptionBase.cc.

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

268  {
269  int indentation = dfh.indentation();
270  if (dfh.parent() != DocFormatHelper::TOP) {
271  indentation -= DocFormatHelper::offsetSectionContent();
272  }
273 
274  printSpaces(os, indentation);
275  os << "Section " << dfh.section() << "." << dfh.counter()
276  << " " << label() << " default contents: ";
277  writeDoc_(os, indentation + 2);
278  os << "\n";
279  if (!dfh.brief()) os << "\n";
280  }
static int offsetSectionContent()
static void printSpaces(std::ostream &os, int n)
virtual void writeDoc_(std::ostream &os, int indentation) const =0
std::string const & label() const
void ParameterDescriptionBase::throwMissingRequiredNoDefault ( ) const
protected

Definition at line 84 of file ParameterDescriptionBase.cc.

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

Referenced by validate_().

84  {
85 
86  std::string tr("untracked");
87  if (isTracked()) tr = "tracked";
88 
90  << "Missing required parameter. It should have label \""
91  << label() << "\" and have type \""
92  << tr << " " << parameterTypeEnumToString(type()) << "\".\n"
93  << "The description has no default. The parameter must be defined "
94  "in the configuration\n";
95  }
std::string parameterTypeEnumToString(ParameterTypes iType)
std::string const & label() const
void ParameterDescriptionBase::throwParameterWrongTrackiness ( ) const
protected

Definition at line 58 of file ParameterDescriptionBase.cc.

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

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

58  {
59  std::string tr("a tracked");
60  std::string shouldBe("untracked");
61  if (isTracked()) {
62  tr = "an untracked";
63  shouldBe = "tracked";
64  }
65 
67  << "In the configuration, parameter \"" << label() << "\" is defined "
68  "as " << tr << " " << parameterTypeEnumToString(type()) << ".\n"
69  << "It should be " << shouldBe << ".\n";
70  }
std::string parameterTypeEnumToString(ParameterTypes iType)
std::string const & label() const
void ParameterDescriptionBase::throwParameterWrongType ( ) const
protected

Definition at line 73 of file ParameterDescriptionBase.cc.

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

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

73  {
74  std::string tr("an untracked");
75  if (isTracked()) tr = "a tracked";
76 
78  << "Parameter \"" << label() << "\" should be defined "
79  "as " << tr << " " << parameterTypeEnumToString(type()) << ".\n"
80  << "The type in the configuration is incorrect.\n";
81  }
std::string parameterTypeEnumToString(ParameterTypes iType)
std::string const & label() const
ParameterTypes edm::ParameterDescriptionBase::type ( ) const
inline
void ParameterDescriptionBase::validate_ ( ParameterSet pset,
std::set< std::string > &  validatedLabels,
bool  optional 
) const
privatevirtual

Implements edm::ParameterDescriptionNode.

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

Definition at line 108 of file ParameterDescriptionBase.cc.

References edm::ParameterDescriptionNode::exists(), edm::ParameterSet::exists(), exists_(), hasDefault(), insertDefault_(), isTracked(), label(), throwMissingRequiredNoDefault(), throwParameterWrongTrackiness(), and throwParameterWrongType().

110  {
111 
112  bool exists = exists_(pset, isTracked());
113 
114  if (exists) {
115  validatedLabels.insert(label());
116  }
117  else if (exists_(pset, !isTracked())) {
119  }
120  else if (pset.exists(label())) {
122  }
123 
124  if (!exists && !optional) {
125  if (hasDefault()) {
126  insertDefault_(pset);
127  validatedLabels.insert(label());
128  }
129  else {
131  }
132  }
133  }
bool exists(ParameterSet const &pset) const
virtual bool exists_(ParameterSet const &pset, bool isTracked) const =0
virtual void insertDefault_(ParameterSet &pset) const =0
std::string const & label() const
void ParameterDescriptionBase::writeCfi_ ( std::ostream &  os,
bool &  startWithComma,
int  indentation,
bool &  wroteSomething 
) const
privatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 137 of file ParameterDescriptionBase.cc.

References hasDefault(), isTracked(), label(), edm::parameterTypeEnumToString(), edm::ParameterDescriptionNode::printSpaces(), and type().

140  {
141 
142  if (!hasDefault()) return;
143 
144  wroteSomething = true;
145  if (startWithComma) os << ",";
146  startWithComma = true;
147 
148  os << "\n";
149  printSpaces(os, indentation);
150 
151  os << label()
152  << " = cms.";
153  if (!isTracked()) os << "untracked.";
155  << "(";
156  writeCfi_(os, indentation);
157  os << ")";
158  }
std::string parameterTypeEnumToString(ParameterTypes iType)
static void printSpaces(std::ostream &os, int n)
virtual void writeCfi_(std::ostream &os, bool &startWithComma, int indentation, bool &wroteSomething) const
std::string const & label() const
virtual void edm::ParameterDescriptionBase::writeCfi_ ( std::ostream &  os,
int  indentation 
) const
privatepure virtual
virtual void edm::ParameterDescriptionBase::writeDoc_ ( std::ostream &  os,
int  indentation 
) const
privatepure virtual

Member Data Documentation

bool edm::ParameterDescriptionBase::hasDefault_
private

Definition at line 106 of file ParameterDescriptionBase.h.

Referenced by hasDefault().

bool edm::ParameterDescriptionBase::isTracked_
private

Definition at line 105 of file ParameterDescriptionBase.h.

Referenced by isTracked().

std::string edm::ParameterDescriptionBase::label_
private
ParameterTypes edm::ParameterDescriptionBase::type_
private