analyzer.h
Go to the documentation of this file.
00001 /* analyzer.h
00002  */
00003 #ifndef OSL_ANNOTATE_ANALYZER_H
00004 #define OSL_ANNOTATE_ANALYZER_H
00005 
00006 #include "osl/annotate/analysesResult.h"
00007 #include "osl/state/numEffectState.h"
00008 #include "osl/stl/vector.h"
00009 
00010 namespace osl
00011 {
00012   namespace annotate
00013   {
00014     class Analyzer
00015     {
00016     public:
00017       virtual ~Analyzer();
00018       virtual void match(AnalysesResult&,
00019                          const NumEffectState& src, const vector<Move>& moves,
00020                          int last_move)=0;
00021 
00022       static Trivalent isCheckmate(NumEffectState& state, Move& best_move, bool attack=true,
00023                                    size_t *node_count=0);
00024     };
00026     class CheckmateAnalyzer : public Analyzer
00027     {
00028     public:
00029       void match(AnalysesResult&,
00030                  const NumEffectState& src, const vector<Move>& moves,
00031                  int last_move);
00032     };
00034     class CheckmateWin : public Analyzer
00035     {
00036     public:
00037       void match(AnalysesResult&,
00038                  const NumEffectState& src, const vector<Move>& moves,
00039                  int last_move);
00040     };
00041     class EscapeFromCheck : public Analyzer
00042     {
00043     public:
00044       void match(AnalysesResult&,
00045                  const NumEffectState& src, const vector<Move>& moves,
00046                  int last_move);
00047       static bool matchMain(const NumEffectState& src, const vector<Move>& moves,
00048                             int last_move);
00049     };
00050     class ThreatmateAnalyzer : public Analyzer
00051     {
00052     public:
00053       void match(AnalysesResult&,
00054                  const NumEffectState& src, const vector<Move>& moves,
00055                  int last_move);
00056     };
00057     class CheckmateForCapture : public Analyzer
00058     {
00059     public:
00060       void match(AnalysesResult&,
00061                  const NumEffectState& src, const vector<Move>& moves,
00062                  int last_move);
00063     };
00064     class CheckmateForEscape : public Analyzer
00065     {
00066     public:
00067       void match(AnalysesResult&,
00068                  const NumEffectState& src, const vector<Move>& moves,
00069                  int last_move);
00070     };
00071     class ThreatmateIfMorePieces : public Analyzer
00072     {
00073     public:
00074       void match(AnalysesResult&,
00075                  const NumEffectState& src, const vector<Move>& moves,
00076                  int last_move);
00077       static bool suitable(const NumEffectState& state, Piece p);
00078     };
00079     class Vision3 : public Analyzer
00080     {
00081     public:
00082       void match(AnalysesResult&,
00083                  const NumEffectState& src, const vector<Move>& moves,
00084                  int last_move);
00085     };
00086   }
00087 }
00088 
00089 #endif /* OSL_ANNOTATE_ANALYZER_H */
00090 // ;;; Local Variables:
00091 // ;;; mode:c++
00092 // ;;; c-basic-offset:2
00093 // ;;; coding:utf-8
00094 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines