00001
00002
00003 #ifndef _MOVE_CLASSIFIER_KING_OPEN_MOVE_H
00004 #define _MOVE_CLASSIFIER_KING_OPEN_MOVE_H
00005
00006 #include "osl/move_classifier/classifierTraits.h"
00007 #include "osl/position.h"
00008 #include "osl/player.h"
00009 #include "osl/ptype.h"
00010
00011 namespace osl
00012 {
00013 namespace state
00014 {
00015 class SimpleState;
00016 }
00017 namespace move_classifier
00018 {
00026 template <Player P>
00027 struct KingOpenMove
00028 {
00029 static bool isMember(const state::SimpleState& state,
00030 Ptype ptype,Position from,Position to);
00034 static bool isMember(const state::SimpleState& state,
00035 Ptype ptype,Position from,Position to,
00036 Position exceptFor);
00037 private:
00038 template <bool hasException>
00039 static bool isMember(const state::SimpleState& state,
00040 Ptype ptype,Position from,Position to,
00041 Position exceptFor);
00042 };
00043
00044 template <Player P> struct ClassifierTraits<KingOpenMove<P> >
00045 {
00046 static const bool drop_suitable = false;
00047 static const bool result_if_drop = false;
00048 };
00049
00050 }
00051 }
00052 #endif
00053
00054
00055
00056
00057