00001
00002
00003 #ifndef OSL_CHECKMATESEARCHERHOLDER_H
00004 #define OSL_CHECKMATESEARCHERHOLDER_H
00005
00006 #include <boost/scoped_ptr.hpp>
00007 #include <boost/shared_ptr.hpp>
00008 #include <boost/utility.hpp>
00009
00010 namespace osl
00011 {
00012 namespace search
00013 {
00014 class Worker;
00018 template <class Checkmate>
00019 class CheckmateSearcherHolder : boost::noncopyable
00020 {
00021 class Table;
00022 boost::scoped_ptr<Table> table;
00023 public:
00024 explicit CheckmateSearcherHolder(const Checkmate& seed);
00025 ~CheckmateSearcherHolder();
00026
00027 Checkmate *clone(const Worker *key);
00028 boost::shared_ptr<Checkmate> cloneShared(const Worker *key);
00029 void clear();
00030 size_t totalNodeCount() const;
00031 };
00032
00033 }
00034 }
00035
00036 #endif
00037
00038
00039
00040