CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
edm::ParameterWildcardBase Class Reference

#include <ParameterWildcardBase.h>

Inheritance diagram for edm::ParameterWildcardBase:
edm::ParameterDescriptionNode edm::ParameterWildcard< T > edm::ParameterWildcard< ParameterSetDescription > edm::ParameterWildcard< std::vector< ParameterSet > >

Public Member Functions

WildcardValidationCriteria criteria () const
 
bool isTracked () const
 
ParameterTypes type () const
 
 ~ParameterWildcardBase () 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 &startWithComma, int indentation, bool &wroteSomething) const
 
virtual ~ParameterDescriptionNode ()
 

Protected Member Functions

 ParameterWildcardBase (ParameterTypes iType, bool isTracked, WildcardValidationCriteria criteria)
 
void throwIfInvalidPattern (char const *pattern) const
 
void throwIfInvalidPattern (std::string const &pattern) const
 
void validateMatchingNames (std::vector< std::string > const &matchingNames, std::set< std::string > &validatedLabels, bool optional) const
 
- Protected Member Functions inherited from edm::ParameterDescriptionNode
virtual bool exists_ (ParameterSet const &pset) const =0
 
virtual bool hasNestedContent_ () const
 
virtual void printNestedContent_ (std::ostream &, bool, DocFormatHelper &) const
 
virtual void validate_ (ParameterSet &pset, std::set< std::string > &validatedLabels, bool optional) const =0
 

Private Member Functions

void checkAndGetLabelsAndTypes_ (std::set< std::string > &usedLabels, std::set< ParameterTypes > &parameterTypes, std::set< ParameterTypes > &wildcardTypes) const override
 
int howManyXORSubNodesExist_ (ParameterSet const &pset) const override
 
bool partiallyExists_ (ParameterSet const &pset) const override
 
void print_ (std::ostream &os, bool optional, bool writeToCfi, DocFormatHelper &dfh) const override
 
void writeCfi_ (std::ostream &os, bool &startWithComma, int indentation, bool &wroteSomething) const override
 

Private Attributes

WildcardValidationCriteria criteria_
 
bool isTracked_
 
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 24 of file ParameterWildcardBase.h.

Constructor & Destructor Documentation

edm::ParameterWildcardBase::~ParameterWildcardBase ( )
override

Definition at line 13 of file ParameterWildcardBase.cc.

13 { }
edm::ParameterWildcardBase::ParameterWildcardBase ( ParameterTypes  iType,
bool  isTracked,
WildcardValidationCriteria  criteria 
)
protected

Definition at line 15 of file ParameterWildcardBase.cc.

References throwIfInvalidPattern().

Referenced by criteria().

18  :type_(iType),
21  }
WildcardValidationCriteria criteria_
WildcardValidationCriteria criteria() const

Member Function Documentation

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

Implements edm::ParameterDescriptionNode.

Definition at line 69 of file ParameterWildcardBase.cc.

References print_(), and type().

Referenced by criteria(), and validateMatchingNames().

71  {
72  wildcardTypes.insert(type());
73  }
ParameterTypes type() const
WildcardValidationCriteria edm::ParameterWildcardBase::criteria ( ) const
inline
int edm::ParameterWildcardBase::howManyXORSubNodesExist_ ( ParameterSet const &  pset) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 183 of file ParameterWildcardBase.cc.

References edm::ParameterDescriptionNode::exists().

Referenced by criteria(), and partiallyExists_().

183  {
184  return exists(pset) ? 1 : 0;
185  }
bool exists(ParameterSet const &pset) const
bool edm::ParameterWildcardBase::isTracked ( ) const
inline

Definition at line 30 of file ParameterWildcardBase.h.

References isTracked_.

Referenced by Types.PSet::clone(), Mixins._ParameterTypeBase::configTypeName(), criteria(), edm::ParameterWildcard< T >::exists_(), edm::ParameterWildcard< ParameterSetDescription >::exists_(), edm::ParameterWildcard< std::vector< ParameterSet > >::exists_(), Types.int32::insertInto(), Types.uint32::insertInto(), Types.int64::insertInto(), Types.uint64::insertInto(), Types.double::insertInto(), Mixins.UsingBlock::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(), edm::ParameterWildcard< T >::validate_(), edm::ParameterWildcard< ParameterSetDescription >::validate_(), and edm::ParameterWildcard< std::vector< ParameterSet > >::validate_().

bool edm::ParameterWildcardBase::partiallyExists_ ( ParameterSet const &  pset) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 177 of file ParameterWildcardBase.cc.

References edm::ParameterDescriptionNode::exists(), and howManyXORSubNodesExist_().

Referenced by criteria(), and writeCfi_().

177  {
178  return exists(pset);
179  }
bool exists(ParameterSet const &pset) const
void edm::ParameterWildcardBase::print_ ( std::ostream &  os,
bool  optional,
bool  writeToCfi,
DocFormatHelper dfh 
) const
overrideprivatevirtual

Reimplemented from edm::ParameterDescriptionNode.

Definition at line 77 of file ParameterWildcardBase.cc.

References edm::DocFormatHelper::brief(), edm::DocFormatHelper::column1(), edm::DocFormatHelper::column2(), edm::DocFormatHelper::column3(), edm::ParameterDescriptionNode::comment(), edm::DocFormatHelper::commentWidth(), edm::DocFormatHelper::counter(), criteria(), relativeConstraints::empty, edm::ParameterDescriptionNode::hasNestedContent(), edm::DocFormatHelper::indent(), edm::DocFormatHelper::indent2(), isTracked(), edm::parameterTypeEnumToString(), edm::DocFormatHelper::pass(), edm::RequireAtLeastOne, edm::RequireExactlyOne, edm::RequireZeroOrMore, edm::DocFormatHelper::section(), edm::DocFormatHelper::setAtLeast1(), edm::DocFormatHelper::setAtLeast2(), edm::DocFormatHelper::setAtLeast3(), findQualityFiles::size, edm::DocFormatHelper::startColumn2(), type(), mitigatedMETSequence_cff::U, edm::DocFormatHelper::wrapAndPrintText(), and writeCfi_().

Referenced by checkAndGetLabelsAndTypes_(), and criteria().

80  {
81  if(dfh.pass() == 0) {
82  dfh.setAtLeast1(11U);
83  if(isTracked()) {
84  dfh.setAtLeast2(parameterTypeEnumToString(type()).size());
85  } else {
86  dfh.setAtLeast2(parameterTypeEnumToString(type()).size() + 10U);
87  }
88  dfh.setAtLeast3(8U);
89  } else {
90 
91  if(dfh.brief()) {
92 
93  dfh.indent(os);
94  std::ios::fmtflags oldFlags = os.flags();
95  os << std::left << std::setw(dfh.column1()) << "wildcard: *" << " ";
96 
97  if(isTracked()) {
98  os << std::setw(dfh.column2()) << parameterTypeEnumToString(type());
99  } else {
100  std::stringstream ss;
101  ss << "untracked " << parameterTypeEnumToString(type());
102  os << ss.str();
103  }
104 
105  os << " ";
106  os << std::setw(dfh.column3());
107  if(optional) os << "optional";
108  else os << "";
109 
110  if(criteria() == RequireZeroOrMore) {
111  os << " (require zero or more)";
112  } else if(criteria() == RequireAtLeastOne) {
113  os << " (require at least one)";
114  } else if(criteria() == RequireExactlyOne) {
115  os << " (require exactly one)";
116  }
117  os << "\n";
118  if(hasNestedContent()) {
119  dfh.indent(os);
120  os << " (see Section " << dfh.section()
121  << "." << dfh.counter() << ")\n";
122  }
123  os.flags(oldFlags);
124  } else {
125  // not brief
126 
127  dfh.indent(os);
128  os << "labels must match this wildcard pattern: *\n";
129 
130  dfh.indent2(os);
131  os << "type: ";
132  if(isTracked()) {
134  } else {
135  os << "untracked " << parameterTypeEnumToString(type());
136  }
137 
138  if(optional) os << " optional";
139  os << "\n";
140 
141  dfh.indent2(os);
142  os << "criteria: ";
143  if(criteria() == RequireZeroOrMore) os << "require zero or more";
144  else if(criteria() == RequireAtLeastOne) os << "require at least one";
145  else if(criteria() == RequireExactlyOne) os << "require exactly one";
146  os << "\n";
147 
148  if(hasNestedContent()) {
149  dfh.indent2(os);
150  os << "(see Section " << dfh.section()
151  << "." << dfh.counter() << ")\n";
152  }
153 
154  if(!comment().empty()) {
156  comment(),
157  dfh.startColumn2(),
158  dfh.commentWidth());
159  }
160  os << "\n";
161  }
162  }
163  }
size
Write out results.
static void wrapAndPrintText(std::ostream &os, std::string const &text, size_t indent, size_t suggestedWidth)
ParameterTypes type() const
std::string parameterTypeEnumToString(ParameterTypes iType)
std::string const & comment() const
WildcardValidationCriteria criteria() const
void edm::ParameterWildcardBase::throwIfInvalidPattern ( char const *  pattern) const
protected
void edm::ParameterWildcardBase::throwIfInvalidPattern ( std::string const &  pattern) const
protected

Definition at line 32 of file ParameterWildcardBase.cc.

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

32  {
33  if(pattern != std::string("*")) {
35  << "Currently, the only supported wildcard in ParameterSetDescriptions\n"
36  << "is the single character \"*\". The configuration contains a wildcard\n"
37  << "with pattern \"" << pattern << "\" and type \"" << parameterTypeEnumToString(type()) << "\"\n"
38  << "At some future date, globbing or regular expression support may be added\n"
39  << "if there are any requests for it from users.\n";
40  }
41  }
ParameterTypes type() const
std::string parameterTypeEnumToString(ParameterTypes iType)
ParameterTypes edm::ParameterWildcardBase::type ( ) const
inline

Definition at line 29 of file ParameterWildcardBase.h.

References type_.

Referenced by checkAndGetLabelsAndTypes_(), print_(), throwIfInvalidPattern(), and validateMatchingNames().

29 { return type_; }
void edm::ParameterWildcardBase::validateMatchingNames ( std::vector< std::string > const &  matchingNames,
std::set< std::string > &  validatedLabels,
bool  optional 
) const
protected

Definition at line 45 of file ParameterWildcardBase.cc.

References checkAndGetLabelsAndTypes_(), edm::errors::Configuration, criteria_, Exception, edm::parameterTypeEnumToString(), edm::RequireAtLeastOne, edm::RequireExactlyOne, edm::RequireZeroOrMore, type(), and mitigatedMETSequence_cff::U.

Referenced by criteria(), throwIfInvalidPattern(), edm::ParameterWildcard< T >::validate_(), edm::ParameterWildcard< ParameterSetDescription >::validate_(), and edm::ParameterWildcard< std::vector< ParameterSet > >::validate_().

47  {
48  validatedLabels.insert(matchingNames.begin(), matchingNames.end());
49  if(criteria_ == RequireZeroOrMore) return;
50  if(criteria_ == RequireAtLeastOne && matchingNames.size() < 1U && !optional) {
52  << "Parameter wildcard of type \"" << parameterTypeEnumToString(type()) << "\" requires "
53  << "at least one match\n"
54  << "and there are no parameters in the configuration matching\n"
55  << "that type.\n";
56  } else if(criteria_ == RequireExactlyOne) {
57  if((matchingNames.size() < 1U && !optional) ||
58  matchingNames.size() > 1U) {
60  << "Parameter wildcard of type \"" << parameterTypeEnumToString(type()) << "\" requires\n"
61  << "exactly one match and there are " << matchingNames.size() << " matching parameters\n"
62  << "in the configuration.\n";
63  }
64  }
65  }
ParameterTypes type() const
std::string parameterTypeEnumToString(ParameterTypes iType)
WildcardValidationCriteria criteria_
void edm::ParameterWildcardBase::writeCfi_ ( std::ostream &  os,
bool &  startWithComma,
int  indentation,
bool &  wroteSomething 
) const
overrideprivatevirtual

Implements edm::ParameterDescriptionNode.

Definition at line 167 of file ParameterWildcardBase.cc.

References partiallyExists_().

Referenced by criteria(), and print_().

170  {
171  // Until we implement default labels and values there is nothing
172  // to do here.
173  }

Member Data Documentation

WildcardValidationCriteria edm::ParameterWildcardBase::criteria_
private

Definition at line 68 of file ParameterWildcardBase.h.

Referenced by criteria(), and validateMatchingNames().

bool edm::ParameterWildcardBase::isTracked_
private

Definition at line 67 of file ParameterWildcardBase.h.

Referenced by isTracked().

ParameterTypes edm::ParameterWildcardBase::type_
private