00001 00004 #ifndef EVAL_ENDGAME_DEFENSEKING_H 00005 #define EVAL_ENDGAME_DEFENSEKING_H 00006 00007 #include "osl/eval/endgame/kingPieceTable.h" 00008 #include "osl/state/simpleState.h" 00009 00010 namespace osl 00011 { 00012 namespace eval 00013 { 00014 namespace endgame 00015 { 00019 class DefenseKing 00020 { 00021 struct Table : public KingPieceTable 00022 { 00023 Table(); 00024 }; 00025 static const Table table; 00026 public: 00027 static int valueOf(const Piece king, const Piece defender) 00028 { 00029 return valueOf(king, defender.ptypeO(), defender.position()); 00030 } 00031 static int valueOf(Piece king, PtypeO ptypeo, Position position) 00032 { 00033 assert(king.ptype() == KING); 00034 if (getOwner(ptypeo) != king.owner()) 00035 return 0; 00036 return table.valueOf(king.position(), king.owner(), 00037 position, getPtype(ptypeo)); 00038 } 00039 }; 00040 } // namespace endgame 00041 } // namespace endgame 00042 } // namespace osl 00043 00044 #endif /* EVAL_ENDGAME_DEFENSEKING_H */ 00045 // ;;; Local Variables: 00046 // ;;; mode:c++ 00047 // ;;; c-basic-offset:2 00048 // ;;; End: