Go to the documentation of this file.00001
00002
00003
00004 #ifndef cellConditions_hh
00005 #define cellConditions_hh
00006
00007 #include <map>
00008 #include "toolbox/set.hh"
00009 #include "semantics.hh"
00010 #include "connector.hh"
00011 #include "continuityData.hh"
00012
00013 namespace concepts {
00014
00015
00016
00017
00018
00019
00020 class CellCondition : public OutputOperator {
00021 public:
00072 enum inactivTypes { ACTIVE = 0, INACTIVE, INACTIVEPLUS, SWITCH_ON,
00073 SWITCH_OFF, DIVIDE,
00074 MAX_TYPE };
00078 CellCondition();
00081 CellCondition(const enum inactivTypes type,
00082 Set<Attribute> attributes = Set<Attribute>());
00083
00085 CellCondition(const CellCondition& cnd);
00086
00087 virtual ~CellCondition();
00088
00090 enum inactivTypes type() const { return type_; }
00091
00093 concepts::Set<Attribute> attributes() const { return attributes_; }
00094
00096 std::string typeStr() const;
00097
00099 virtual CellCondition& operator=(const CellCondition& i);
00100
00104 bool active(const Connector2& cell, const Connector0& vertex) const;
00105 protected:
00106 virtual std::ostream& info(std::ostream& os) const;
00107 private:
00109 enum inactivTypes type_;
00111 concepts::Set<Attribute> attributes_;
00112
00116 const Attribute& getAttr_(const Connector0&, const Connector1&,
00117 const Connector1&) const;
00118 };
00119
00120
00121
00122
00123 class CellConditions : public Semantics<CellCondition> {
00124 public:
00130 CellConditions(const bool emptyElements = true);
00131
00134 CellConditions(const enum CellCondition::inactivTypes type);
00135
00137 CellConditions(const CellConditions& cnd);
00138
00144 virtual ~CellConditions();
00145
00153 virtual CellCondition operator() (Attribute attrib) const;
00154
00164 void add(const Attribute& attrib, const CellCondition& i);
00165
00166 inline bool emptyElements() const { return emptyElements_; }
00167 protected:
00168 virtual std::ostream& info(std::ostream& os) const;
00169 private:
00173 mutable std::map<uint, CellCondition> inactiveCells_;
00175 bool emptyElements_;
00176
00177 enum CellCondition::inactivTypes type_;
00178 };
00179
00180 }
00181
00182 #endif // cellConditions_hh