Files
secondo/Algebras/ChessB/PieceOps.hpp
2026-01-23 17:03:45 +08:00

42 lines
1017 B
C++

#ifndef SECONDO_ALGEBRAS_CHESS_PIECEOPS_HPP
#define SECONDO_ALGEBRAS_CHESS_PIECEOPS_HPP
#include <string>
#include <functional>
#include "Piece.hpp"
struct piece_ctor_op : std::unary_function< CcString, Piece* >
{
Piece* operator () ( const CcString& s )
{
return new Piece( Piece::from_agent( s.GetValue() ) );
}
};
struct iswhite_piece_op : std::unary_function< Piece, bool >
{
bool operator () ( const Piece& p ) { return p.is_white(); }
};
struct is_op : std::binary_function< Piece, Piece, bool >
{
bool operator () ( const Piece& p1, const Piece& p2 )
{ return p1.type() == p2.type(); }
};
struct samecolor_op : std::binary_function< Piece, Piece, bool >
{
bool operator () ( const Piece& p1, const Piece& p2 )
{ return p1.color() == p2.color(); }
};
struct piecevalue_op : std::unary_function< Piece, double >
{
double operator () ( const Piece& p )
{
return Piece::value( p.get() );
}
};
#endif // SECONDO_ALGEBRAS_CHESS_PIECEOPS_HPP