moveAdaptor.h
Go to the documentation of this file.
/* moveAdaptor.h
*/
#ifndef OSL_MOVE_CLASSIFIER_MOVE_ADAPTOR_H
#define OSL_MOVE_CLASSIFIER_MOVE_ADAPTOR_H
#include "osl/numEffectState.h"
#include "osl/move_classifier/classifierTraits.h"
namespace osl
{
namespace move_classifier
{
template <class Classifier>
struct MoveAdaptor
{
static bool isMember(const NumEffectState& state, Move m)
{
return Classifier::isMember(state, m.ptype(), m.from(), m.to());
}
};
template <template <Player> class Classifier>
struct PlayerMoveAdaptor
{
template <class State>
static bool isMember(const State& state, Move m)
{
assert(m.player() == state.turn());
if (state.turn() == BLACK)
return Classifier<BLACK>::isMember(state, m.ptype(), m.from(), m.to());
else
return Classifier<WHITE>::isMember(state, m.ptype(), m.from(), m.to());
}
};
template <template <Player> class Classifier>
struct ConditionAdaptor
{
template <class State>
static bool isMember(const State& state, Move m)
{
if (! ClassifierTraits<Classifier<BLACK> >::drop_suitable
&& m.isDrop())
return ClassifierTraits<Classifier<BLACK> >::result_if_drop;
return PlayerMoveAdaptor<Classifier>::isMember(state, m);
}
};
} // namespace move_classifier
} // namespace osl
#endif /* OSL_MOVE_CLASSIFIER_MOVE_ADAPTOR_H */
// ;;; Local Variables:
// ;;; mode:c++
// ;;; c-basic-offset:2
// ;;; End:
classifierTraits.h
osl::Move
圧縮していない moveの表現 .
Definition basic_type.h:1052
osl::Move::ptype
Ptype ptype() const
Definition basic_type.h:1155
osl::Move::player
Player player() const
Definition basic_type.h:1195
osl::Move::isDrop
bool isDrop() const
Definition basic_type.h:1150
osl::Move::to
const Square to() const
Definition basic_type.h:1132
osl::Move::from
const Square from() const
Definition basic_type.h:1125
osl::NumEffectState
利きを持つ局面
Definition numEffectState.h:34
osl::move_classifier
Definition check_.h:10
osl
Definition additionalEffect.h:6
osl::BLACK
@ BLACK
Definition basic_type.h:9
numEffectState.h
osl::move_classifier::ClassifierTraits
Definition classifierTraits.h:11
osl::move_classifier::ConditionAdaptor
drop の時は呼べないなどの条件を代わりにテスト
Definition moveAdaptor.h:38
osl::move_classifier::ConditionAdaptor::isMember
static bool isMember(const State &state, Move m)
Definition moveAdaptor.h:40
osl::move_classifier::MoveAdaptor
Definition moveAdaptor.h:14
osl::move_classifier::MoveAdaptor::isMember
static bool isMember(const NumEffectState &state, Move m)
Definition moveAdaptor.h:15
osl::move_classifier::PlayerMoveAdaptor
Definition moveAdaptor.h:23
osl::move_classifier::PlayerMoveAdaptor::isMember
static bool isMember(const State &state, Move m)
Definition moveAdaptor.h:25