00001 #ifndef wali_MERGE_FN_GUARD 00002 #define wali_MERGE_FN_GUARD 1 00003 00004 /** 00005 * @author Akash Lal 00006 * @author Nicholas Kidd 00007 */ 00008 00009 #include "wali/Common.hpp" 00010 #include "wali/ref_ptr.hpp" 00011 #include "wali/IMergeFn.hpp" 00012 #include <iostream> 00013 00014 00015 namespace wali 00016 { 00017 class MergeFn; 00018 //typedef ref_ptr< MergeFn > merge_fn_t; 00019 00020 class MergeFn : public IMergeFn//public Printable, public Countable 00021 { 00022 public: 00023 //static const std::string XMLTag; 00024 00025 MergeFn(); 00026 00027 explicit MergeFn(sem_elem_t sr); 00028 00029 virtual ~MergeFn(); 00030 00031 virtual sem_elem_t apply_f(sem_elem_t w1, sem_elem_t w2); 00032 00033 virtual bool equal(merge_fn_t mf); 00034 00035 virtual MergeFn *parse_element(const char *s, sem_elem_t sem); 00036 00037 virtual std::ostream &print(std::ostream &o) const; 00038 00039 private: 00040 sem_elem_t sr_data; 00041 00042 }; 00043 00044 } // namespacw wali 00045 00046 #endif // wali_MERGE_FN_GUARD 00047