00001 #ifndef INTERSECTIONCELLSET_H 00002 #define INTERSECTIONCELLSET_H 00003 00004 #include "SundanceDefs.h" 00005 #include "BinaryOpCellSet.h" 00006 #include "CellSet.h" 00007 00008 namespace Sundance 00009 { 00010 00011 using namespace TSF; 00012 using std::string; 00013 00014 using std::ostream; 00015 00016 /** \ingroup LowLevelGeometry 00017 * IntersectionCellSet represents the intersection of two cell sets. 00018 * A cell is contained 00019 * in the set if it is contained in both of the two operands. 00020 */ 00021 00022 class IntersectionCellSet : public BinaryOpCellSet 00023 { 00024 public: 00025 /** construct a union with two operand CellSets */ 00026 IntersectionCellSet(const CellSet& left, const CellSet& right) 00027 : BinaryOpCellSet(left, right) {;} 00028 00029 /** TUVD */ 00030 virtual ~IntersectionCellSet(){;} 00031 00032 /* determine if a cell is contained in this set */ 00033 virtual bool contains(const Cell& cell) const 00034 {return left_.contains(cell) && right_.contains(cell);} 00035 00036 protected: 00037 virtual string opType() const {return "IntersectionCellSet";} 00038 }; 00039 00040 00041 00042 } 00043 #endif