00001 // See the file LICENSE in the some directory as this file for legal 00002 // notices about this software. 00003 // $Id: TripleAdder_8h-source.html,v 1.9 2001/10/10 20:40:58 sandro Exp $ 00004 #ifndef DEV_W3_ORG__2001_BLINDFOLD_SRC_TRIPLEADDER_H 00005 #define DEV_W3_ORG__2001_BLINDFOLD_SRC_TRIPLEADDER_H 00006 #include "config.h" 00007 00008 #include "TripleSink.h" 00009 class VariableScope; 00010 00014 class TripleAdder { 00015 00016 public: 00017 00018 // STANDARD MEMBER FUNCTIONS 00019 TripleAdder(); 00020 TripleAdder(const TripleAdder& other); 00021 const TripleAdder& operator=(const TripleAdder& other); 00022 bool operator==(const TripleAdder& other) const; 00023 bool operator<(const TripleAdder& other) const; 00024 size_t hash() const; 00025 friend std::ostream& operator<<(std::ostream& s, const TripleAdder& me); 00026 std::ostream& print_to(std::ostream& stream) const; 00027 virtual ~TripleAdder(); 00028 00029 // CLASS-SPECIFIC PUBLIC INTERFACE 00030 00034 TripleAdder(TripleSink* sink, VariableScope* scope=0) 00035 { 00036 this->sink = sink; 00037 if (!scope) { 00038 scopeForSink=sink->getScope(); 00039 } else { 00040 scopeForSink=scope; 00041 } 00042 } 00043 00044 00054 virtual void setSink(TripleSink* sink, VariableScope* scope=0) 00055 { 00056 this->sink = sink; 00057 if (!scope) { 00058 scopeForSink=sink->getScope(); 00059 } else { 00060 scopeForSink=scope; 00061 } 00062 } 00063 00067 virtual TripleSink* getSink() { return sink; } 00068 00069 protected: 00070 TripleSink* sink; 00071 VariableScope* scopeForSink; 00072 00073 private: 00074 00075 00076 00077 }; 00078 00079 00080 STANDARD_EXTERNAL(TripleAdder) 00081 00082 #endif /* TRIPLEADDER */ // -*-C++-*-