00001 #include "osl/annotate/facade.h" 00002 #include "osl/annotate/analyzer.h" 00003 #include "osl/progress/ml/newProgress.h" 00004 #include "osl/eval/ml/openMidEndingEval.h" 00005 #include <boost/ptr_container/ptr_vector.hpp> 00006 #include <boost/foreach.hpp> 00007 00008 void osl::annotate:: 00009 analyze(const NumEffectState& src, const vector<Move>& moves, 00010 int last_move, 00011 AnalysesResult& result) 00012 { 00013 static boost::ptr_vector<Analyzer> analyzers; 00014 static bool initialized = false; 00015 if (! initialized) 00016 { 00017 analyzers.push_back(new CheckmateAnalyzer); 00018 analyzers.push_back(new CheckmateWin); 00019 analyzers.push_back(new EscapeFromCheck); 00020 analyzers.push_back(new CheckmateForCapture); 00021 analyzers.push_back(new ThreatmateAnalyzer); 00022 analyzers.push_back(new CheckmateForEscape); 00023 analyzers.push_back(new ThreatmateIfMorePieces); 00024 analyzers.push_back(new Vision3); 00025 progress::ml::NewProgress::setUp(); 00026 eval::ml::OpenMidEndingEval::setUp(); 00027 initialized = true; 00028 } 00029 result = AnalysesResult(); 00030 BOOST_FOREACH(Analyzer& a, analyzers) 00031 { 00032 a.match(result, src, moves, last_move); 00033 if (result.checkmate == True) 00034 break; 00035 } 00036 } 00037 00038 // ;;; Local Variables: 00039 // ;;; mode:c++ 00040 // ;;; c-basic-offset:2 00041 // ;;; End: