File indexing completed on 2023-03-17 11:03:19
0001 #ifndef FWCore_ParameterSet_AllowedLabelsDescriptionBase_h
0002 #define FWCore_ParameterSet_AllowedLabelsDescriptionBase_h
0003
0004 #include "FWCore/ParameterSet/interface/ParameterDescriptionNode.h"
0005 #include "FWCore/ParameterSet/interface/ParameterDescription.h"
0006
0007 #include <vector>
0008 #include <string>
0009 #include <set>
0010 #include <iosfwd>
0011
0012 namespace edm {
0013
0014 class ParameterSet;
0015
0016 class AllowedLabelsDescriptionBase : public ParameterDescriptionNode {
0017 public:
0018 ~AllowedLabelsDescriptionBase() override;
0019
0020 ParameterTypes type() const { return type_; }
0021 bool isTracked() const { return isTracked_; }
0022
0023 protected:
0024 AllowedLabelsDescriptionBase(std::string const& label, ParameterTypes iType, bool isTracked);
0025
0026 AllowedLabelsDescriptionBase(char const* label, ParameterTypes iType, bool isTracked);
0027
0028 void printNestedContentBase_(std::ostream& os, bool optional, DocFormatHelper& dfh) const;
0029
0030 private:
0031 void checkAndGetLabelsAndTypes_(std::set<std::string>& usedLabels,
0032 std::set<ParameterTypes>& parameterTypes,
0033 std::set<ParameterTypes>& wildcardTypes) const override;
0034
0035 void validate_(ParameterSet& pset, std::set<std::string>& validatedLabels, bool optional) const override;
0036
0037 void writeCfi_(
0038 std::ostream& os, bool optional, bool& startWithComma, int indentation, bool& wroteSomething) const override;
0039
0040 void print_(std::ostream& os, bool optional, bool writeToCfi, DocFormatHelper& dfh) const override;
0041
0042 bool hasNestedContent_() const override;
0043
0044 void printNestedContent_(std::ostream& os, bool optional, DocFormatHelper& dfh) const override;
0045
0046 bool exists_(ParameterSet const& pset) const override;
0047
0048 bool partiallyExists_(ParameterSet const& pset) const override;
0049
0050 int howManyXORSubNodesExist_(ParameterSet const& pset) const override;
0051
0052 virtual void validateAllowedLabel_(std::string const& allowedLabel,
0053 ParameterSet& pset,
0054 std::set<std::string>& validatedLabels) const = 0;
0055
0056 ParameterDescription<std::vector<std::string> > parameterHoldingLabels_;
0057 ParameterTypes type_;
0058 bool isTracked_;
0059 };
0060 }
0061
0062 #endif