00001 #ifndef moses_FFState_h 00002 #define moses_FFState_h 00003 00004 #include <vector> 00005 #include <stddef.h> 00006 #include "util/exception.hh" 00007 00008 namespace Moses 00009 { 00010 00011 class FFState 00012 { 00013 public: 00014 virtual ~FFState(); 00015 virtual size_t hash() const = 0; 00016 virtual bool operator==(const FFState& other) const = 0; 00017 00018 virtual bool operator!=(const FFState& other) const { 00019 return !(*this == other); 00020 } 00021 }; 00022 00023 class DummyState : public FFState 00024 { 00025 public: 00026 DummyState() {} 00027 00028 virtual size_t hash() const { 00029 return 0; 00030 } 00031 00032 virtual bool operator==(const FFState& other) const { 00033 return true; 00034 } 00035 00036 }; 00037 00038 } 00039 #endif