00001 /* kajiMove.h 00002 */ 00003 #ifndef _KANJIMOVE_H 00004 #define _KANJIMOVE_H 00005 00006 #include "osl/ptype.h" 00007 #include "osl/position.h" 00008 #include "osl/move.h" 00009 #include "osl/stl/hash_map.h" 00010 #include "osl/state/numEffectState.h" 00011 #include <string> 00012 #include <list> 00013 #include <boost/functional/hash.hpp> 00014 00015 namespace osl 00016 { 00017 namespace state 00018 { 00019 class SimpleState; 00020 } 00021 namespace record 00022 { 00027 class KanjiMove 00028 { 00029 public: 00030 KanjiMove(); 00031 ~KanjiMove(); 00032 00036 const osl::Move strToMove(const std::string&, 00037 const osl::NumEffectState& state, 00038 const Move& last_move) const; 00039 void setVerbose(bool verbose) {this->verbose = verbose;} 00040 private: 00041 typedef std::list<osl::Move> found_moves_t; 00042 void selectCandidates(found_moves_t& found, 00043 std::string& str, 00044 const Position& to_pos, 00045 const Player& player) const; 00046 const static std::string BLACK_SIGN; 00047 const static std::string WHITE_SIGN; 00048 mutable osl::hash_map<const std::string, Position, boost::hash<const std::string> > str2position; 00049 mutable osl::stl::hash_map<const std::string, osl::Ptype, boost::hash<const std::string> > str2piece; 00050 bool verbose; 00051 }; 00052 00053 } // record 00054 } // osl 00055 00056 #endif /* _KANJIMOVE_H */ 00057 // ;;; Local Variables: 00058 // ;;; mode:c++ 00059 // ;;; c-basic-offset:2 00060 // ;;; End: