Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }  // namespace edm
0068 #endif