File indexing completed on 2025-03-26 01:51:13
0001 #ifndef FWCore_ParameterSet_ANDGroupDescription_h
0002 #define FWCore_ParameterSet_ANDGroupDescription_h
0003
0004 #include "FWCore/ParameterSet/interface/ParameterDescriptionNode.h"
0005
0006 #include "FWCore/Utilities/interface/value_ptr.h"
0007
0008 #include <memory>
0009 #include <iosfwd>
0010 #include <set>
0011 #include <string>
0012
0013 namespace edm {
0014
0015 class ParameterSet;
0016 class DocFormatHelper;
0017
0018 class ANDGroupDescription : public ParameterDescriptionNode {
0019 public:
0020 ANDGroupDescription(ParameterDescriptionNode const& node_left, ParameterDescriptionNode const& node_right);
0021
0022 ANDGroupDescription(std::unique_ptr<ParameterDescriptionNode> node_left,
0023 ParameterDescriptionNode const& node_right);
0024
0025 ANDGroupDescription(ParameterDescriptionNode const& node_left,
0026 std::unique_ptr<ParameterDescriptionNode> node_right);
0027
0028 ANDGroupDescription(std::unique_ptr<ParameterDescriptionNode> node_left,
0029 std::unique_ptr<ParameterDescriptionNode> node_right);
0030
0031 ParameterDescriptionNode* clone() const override { return new ANDGroupDescription(*this); }
0032
0033 private:
0034 void checkAndGetLabelsAndTypes_(std::set<std::string>& usedLabels,
0035 std::set<ParameterTypes>& parameterTypes,
0036 std::set<ParameterTypes>& wildcardTypes) const override;
0037
0038 void validate_(ParameterSet& pset, std::set<std::string>& validatedLabels, Modifier modifier) const override;
0039
0040 void writeCfi_(std::ostream& os,
0041 Modifier modifier,
0042 bool& startWithComma,
0043 int indentation,
0044 CfiOptions&,
0045 bool& wroteSomething) const override;
0046
0047 void print_(std::ostream& os, Modifier modifier, bool writeToCfi, DocFormatHelper& dfh) const override;
0048
0049 bool hasNestedContent_() const override { return true; }
0050
0051 void printNestedContent_(std::ostream& os, bool optional, DocFormatHelper& dfh) const override;
0052
0053 bool exists_(ParameterSet const& pset) const override;
0054
0055 bool partiallyExists_(ParameterSet const& pset) const override;
0056
0057 int howManyXORSubNodesExist_(ParameterSet const& pset) const override;
0058
0059 void throwIfDuplicateLabels(std::set<std::string> const& labelsLeft,
0060 std::set<std::string> const& labelsRight) const;
0061
0062 void throwIfDuplicateTypes(std::set<ParameterTypes> const& types1, std::set<ParameterTypes> const& types2) const;
0063
0064 edm::value_ptr<ParameterDescriptionNode> node_left_;
0065 edm::value_ptr<ParameterDescriptionNode> node_right_;
0066 };
0067 }
0068 #endif