00001 #pragma once 00002 00003 #include <string> 00004 #include <iostream> 00005 00006 namespace Moses 00007 { 00008 00011 class PhraseProperty 00012 { 00013 friend std::ostream& operator<<(std::ostream &, const PhraseProperty &); 00014 00015 public: 00016 PhraseProperty() : m_value(NULL) {}; 00017 virtual ~PhraseProperty() { 00018 if ( m_value != NULL ) delete m_value; 00019 }; 00020 00021 virtual void ProcessValue(const std::string &value) { 00022 m_value = new std::string(value); 00023 }; 00024 00025 virtual const std::string *GetValueString() const { 00026 return m_value; 00027 }; 00028 00029 protected: 00030 00031 virtual void Print(std::ostream& out) const; 00032 00033 std::string *m_value; 00034 00035 }; 00036 00037 } // namespace Moses 00038