Go to the documentation of this file.00001
00002
00003 #ifndef OSL_SEE_H
00004 #define OSL_SEE_H
00005
00006 #include "osl/state/numEffectState.h"
00007 #include "osl/container/ptypeOSquareVector.h"
00008 namespace osl
00009 {
00010 namespace eval
00011 {
00012 class PtypeEvalTable;
00013 struct See
00014 {
00015 static int see(const NumEffectState& state, Move move,
00016 const PieceMask& my_pin=PieceMask(), const PieceMask& op_pin=PieceMask(), const PtypeEvalTable *table=0);
00017
00018
00019 template <Player P>
00020 static int seeInternal(const NumEffectState& state, Move move,
00021 const PieceMask& my_pin, const PieceMask& op_pin,
00022 const PtypeEvalTable &table);
00023 template <Player P>
00024 static void findEffectPieces(const NumEffectState& state, Square effect_to,
00025 const PieceMask& my_pin, const PieceMask& op_pin,
00026 PtypeOSquareVector& my_pieces, PtypeOSquareVector& op_pieces);
00027 template <osl::Player P>
00028 static void findEffectPiecesAfterMove(const NumEffectState& state, Move move,
00029 const PieceMask& my_pin, const PieceMask& op_pin,
00030 PtypeOSquareVector& my_pieces, PtypeOSquareVector& op_pieces);
00031 static void findAdditionalPieces(const NumEffectState& state, Player attack, Square target,
00032 Square direct_attack_from,
00033 PtypeOSquareVector& out);
00040 template <Player P>
00041 static int computeValue(Square target, PtypeO ptypeO,
00042 const PtypeOSquareVector& my_pieces,
00043 const PtypeOSquareVector& op_pieces,
00044 const PtypeEvalTable &table);
00045 struct StorePtypeO;
00046 struct FindEffectMore;
00047
00048 };
00049 };
00050 using eval::See;
00051 }
00052
00053 #endif
00054
00055
00056
00057