quiescenceLog.cc
Go to the documentation of this file.
00001 /* quiescenceLog.cc
00002  */
00003 #include "osl/search/quiescenceLog.h"
00004 #include "osl/search/quiescenceRecord.h"
00005 #include <boost/scoped_ptr.hpp>
00006 #include <fstream>
00007 #include <iostream>
00008 
00009 namespace 
00010 {
00011   boost::scoped_ptr<std::ofstream> os;
00012 } // anonymous namespace
00013 
00014 std::ostream* osl::search::QuiescenceLog::
00015 os()
00016 {
00017   return ::os.get();
00018 }
00019 
00020 void osl::search::QuiescenceLog::
00021 init(const char *filename)
00022 {
00023   ::os.reset(new std::ofstream(filename));
00024 }
00025 
00026 void osl::search::QuiescenceLog::
00027 close()
00028 {
00029   ::os.reset();
00030 }
00031 
00032 void osl::search::QuiescenceLog::
00033 enter(const SimpleState& state)
00034 {
00035   if (os())
00036   {
00037     *os() << '*' << "new node\n";
00038     *os() << state;
00039   }
00040 }
00041 
00042 void osl::search::QuiescenceLog::
00043 pushMove(int depth, Move move, const QuiescenceRecord *record)
00044 {
00045   if (os())
00046   {
00047     *os() << std::string(2+std::max(0,QSearchTraits::MaxDepth-depth), '*') 
00048           << move << "\n" << std::flush;
00049     if (record)
00050       record->dump(*os());
00051   }
00052 }
00053 
00054 void osl::search::QuiescenceLog::
00055 staticValue(int depth, int value)
00056 {
00057   if (os())
00058     *os() << std::string(2+std::max(0,QSearchTraits::MaxDepth-depth), '*') 
00059         <<" static " << value << "\n" << std::flush;
00060 }
00061 
00062 void osl::search::QuiescenceLog::
00063 node(int depth, int alpha, int beta, int result)
00064 {
00065   if (os())
00066     *os() << std::string(1+std::max(0,QSearchTraits::MaxDepth-depth), '*')
00067           << alpha << " " << beta << " => " << result << "\n" << std::flush;
00068 };
00069 
00070 
00071 /* ------------------------------------------------------------------------- */
00072 // ;;; Local Variables:
00073 // ;;; mode:c++
00074 // ;;; c-basic-offset:2
00075 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines