All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
kanjiMove.h
Go to the documentation of this file.
1 /* kajiMove.h
2  */
3 #ifndef OSL_RECORD_KANJIMOVE_H
4 #define OSL_RECORD_KANJIMOVE_H
5 
6 #include "osl/ptype.h"
7 #include "osl/square.h"
8 #include "osl/move.h"
9 #include "osl/stl/hash_map.h"
11 #include <string>
12 #include <list>
13 #include <boost/functional/hash.hpp>
14 
15 namespace osl
16 {
17  namespace state
18  {
19  class SimpleState;
20  }
21  namespace record
22  {
27  class KanjiMove
28  {
29  public:
30  KanjiMove();
31  ~KanjiMove();
32 
36  const Move strToMove(const std::string&,
37  const NumEffectState& state,
38  const Move& last_move) const;
39  void setVerbose(bool verbose) {this->verbose = verbose;}
40 
41  Square toSquare(const std::string&) const;
42  Ptype toPtype(const std::string&) const;
43 
44  static const KanjiMove& instance();
45  private:
46  typedef std::list<Move> found_moves_t;
47  void selectCandidates(found_moves_t& found,
48  std::string& str,
49  const Square& to_pos,
50  const Player& player) const;
51  typedef hash_map<std::string, Square, boost::hash<std::string> >
54  typedef hash_map<std::string, Ptype, boost::hash<std::string> > str2piece_t;
56  bool verbose;
57  };
58  } // record
59 } // osl
60 
61 #endif /* OSL_RECORD_KANJIMOVE_H */
62 // ;;; Local Variables:
63 // ;;; mode:c++
64 // ;;; c-basic-offset:2
65 // ;;; coding:utf-8
66 // ;;; End: