Go to the documentation of this file.00001
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
00090
00091
00092
00093
00094