00001 // element for constraints 00002 00003 #ifndef constrElement_hh 00004 #define constrElement_hh 00005 00006 #include "space/element.hh" 00007 #include "space/elementPairs.hh" 00008 #include "space/tmatrix.hh" 00009 00010 namespace constraints { 00011 00012 // *************************************************************** Element ** 00013 00017 template<typename F> 00018 class Element : public concepts::Element<F>, 00019 public concepts::ElementPair<F> { 00020 public: 00025 Element(concepts::Element<F>& elm, concepts::TColumn<F>* T); 00026 virtual ~Element(); 00027 virtual const concepts::TMatrix<F>& T() const { return T_; } 00028 00030 const concepts::Element<F>& compElement() const { return elm_; } 00031 00032 virtual const concepts::Element<F>& elm1() const { return *this; } 00033 virtual const concepts::Element<F>& elm2() const { return elm_; } 00034 protected: 00035 virtual std::ostream& info(std::ostream& os) const; 00036 private: 00038 concepts::Element<F>& elm_; 00039 00041 concepts::TMatrix<F> T_; 00042 }; 00043 00044 } // namespace constraints 00045 00046 #endif // constrElement_hh