00001 #ifndef ParameterSet_OperatorNode_h 00002 #define ParameterSet_OperatorNode_h 00003 00004 00005 #include "FWCore/ParameterSet/interface/Node.h" 00006 00007 00008 namespace edm { 00009 namespace pset { 00010 00011 /* 00012 ----------------------------------------- 00013 Operators hold: and/comma type, left and right operands, which 00014 are modules/sequences or more operators 00015 */ 00016 00017 class OperatorNode : public Node 00018 { 00019 public: 00020 OperatorNode(const std::string& t, NodePtr left, NodePtr right, int line=-1); 00022 virtual Node * clone() const; 00023 virtual std::string type() const; 00024 virtual void print(std::ostream& ost, PrintOptions options) const; 00025 virtual bool findChild(const std::string & childName, NodePtr & result); 00026 NodePtr & left() {return left_;} 00027 NodePtr & right() {return right_;} 00028 const NodePtr & left() const {return left_;} 00029 const NodePtr & right() const {return right_;} 00030 00031 00032 virtual void accept(Visitor& v) const; 00033 00034 private: 00035 std::string type_; 00036 NodePtr left_; 00037 NodePtr right_; 00038 }; 00039 00040 00041 } 00042 } 00043 #endif