00001
00002
00003 #ifndef SEARCH_MOVESORTER_H
00004 #define SEARCH_MOVESORTER_H
00005 #include "osl/eval/evalCompareLarger.h"
00006 #include "osl/search/searchMove.h"
00007 #include "osl/stl/multimap.h"
00008
00009 namespace osl
00010 {
00011 namespace search
00012 {
00017 template<Player P>
00018 struct SearchMoveSorter
00019 : private multimap<int,const SearchMove*,eval::EvalCompareLarger<P> >
00020 {
00021 typedef multimap<int,const SearchMove*,eval::EvalCompareLarger<P> > base_t;
00022 typedef std::pair<int,const SearchMove*> pair_t;
00023 using base_t::iterator;
00024 using base_t::const_iterator;
00025 using base_t::const_reverse_iterator;
00026 using base_t::size;
00027 using base_t::empty;
00028 using base_t::begin;
00029 using base_t::rbegin;
00030 using base_t::end;
00031 using base_t::rend;
00032
00033
00034 SearchMoveSorter();
00035 ~SearchMoveSorter();
00036
00037 void insert(const pair_t&);
00038 void insert(typename base_t::iterator hint, const pair_t&);
00039 void insert(typename base_t::iterator first,
00040 typename base_t::iterator last);
00041 void erase(typename base_t::iterator first, typename base_t::iterator last);
00042 void clear();
00043 void swap(SearchMoveSorter& o);
00047 void dump(size_t show_elements=0) const;
00048 void summary(size_t show_elements=0) const;
00049 bool isValidAll() const;
00050 };
00051 }
00052 }
00053
00054
00055 #endif
00056
00057
00058
00059