#include "osl/config.h"
#include <type_traits>
#include <cassert>
#include <iosfwd>
#include "bits/directionTraits.h"
構成 | |
struct | osl::misc::Int2Type< v > |
struct | osl::misc::Type2Type< T > |
struct | osl::misc::Player2Type< P > |
struct | osl::misc::EmptyType |
class | osl::Offset |
座標の差分 [詳細] | |
class | osl::Square |
class | osl::Piece |
駒. [詳細] | |
class | osl::Move |
圧縮していない moveの表現 . [詳細] | |
struct | std::hash< osl::Move > |
ネームスペース | |
namespace | osl |
namespace | osl::misc |
namespace | std |
マクロ定義 | |
#define | NEW_PTYPEO(player, ptype) static_cast<PtypeO>(static_cast<int>(ptype)-(16&static_cast<int>(player))) |
#define | move_assert(x) |
move 関係でつかまえ所のないエラーがでるときに定義する | |
列挙型 | |
enum | osl::Player { osl::BLACK = 0, osl::WHITE = -1 } |
enum | osl::Ptype { osl::PTYPE_EMPTY = 0, osl::PTYPE_EDGE = 1, osl::PPAWN = 2, osl::PLANCE = 3, osl::PKNIGHT = 4, osl::PSILVER = 5, osl::PBISHOP = 6, osl::PROOK = 7, osl::KING = 8, osl::GOLD = 9, osl::PAWN = 10, osl::LANCE = 11, osl::KNIGHT = 12, osl::SILVER = 13, osl::BISHOP = 14, osl::ROOK = 15, osl::PTYPE_MIN = 0, osl::PTYPE_BASIC_MIN = KING, osl::PTYPE_PIECE_MIN = 2, osl::PTYPE_MAX = 15 } |
駒の種類を4ビットでコード化する [詳細] | |
enum | osl::PtypeO { osl::PTYPEO_MIN = PTYPE_EMPTY-16, osl::PTYPEO_MAX = 15 } |
Player + Ptype [-15, 15] PtypeO の O は Owner の O. [詳細] | |
enum | osl::Direction { osl::SHORT_DIRECTION_MIN = 0, osl::SHORT8_DIRECTION_MIN = 0, osl::UL = 0, osl::U = 1, osl::UR = 2, osl::L = 3, osl::R = 4, osl::DL = 5, osl::D = 6, osl::DR = 7, osl::SHORT8_DIRECTION_MAX = 7, osl::UUL = 8, osl::UUR = 9, osl::LONG_DIRECTION_MIN = 10, osl::LONG_UL = 10, osl::LONG_U = 11, osl::LONG_UR = 12, osl::LONG_L = 13, osl::LONG_R = 14, osl::LONG_DL = 15, osl::LONG_D = 16, osl::LONG_DR = 17, osl::LONG_DIRECTION_MAX = 17, osl::DIRECTION_MIN = 0, osl::SHORT_DIRECTION_MAX = 9, osl::SHORT_DIRECTION_SIZE = 10, osl::DIRECTION_MAX = 17, osl::DIRECTION_INVALID_VALUE = 18, osl::DIRECTION_SIZE = 18 } |
enum | osl::Move16 { osl::MOVE16_NONE = 0 } |
16bit 表現 [詳細] | |
関数 | |
constexpr Player | osl::alt (Player player) |
constexpr int | osl::playerToIndex (Player player) |
constexpr Player | osl::indexToPlayer (int n) |
constexpr int | osl::sign (Player player) |
constexpr int | osl::playerToMask (Player player) |
int | osl::operator+ (Player, int) |
int | osl::operator+ (int, Player) |
int | osl::operator- (Player, int) |
int | osl::operator- (int, Player) |
int | osl::operator* (Player, int) |
int | osl::operator* (int, Player) |
int | osl::operator/ (Player, int) |
int | osl::operator/ (int, Player) |
bool | osl::isValid (Player player) |
cast等で作られたplayerが正しいかどうかを返す | |
std::ostream & | osl::operator<< (std::ostream &os, Player player) |
std::istream & | osl::operator>> (std::istream &is, Ptype &ptype) |
std::ostream & | osl::operator<< (std::ostream &os, const Ptype ptype) |
bool | osl::isValid (Ptype ptype) |
int等からcastして作ったptypeが,正しい範囲に入っているかどうかのチェック | |
constexpr bool | osl::isPiece (Ptype ptype) |
ptypeが空白やEDGEでないかのチェック | |
bool | osl::isBasic (Ptype ptype) |
ptypeが基本型(promoteしていない)かのチェック | |
bool | osl::isPromoted (Ptype ptype) |
ptypeがpromote後の型かどうかのチェック | |
bool | osl::canPromote (Ptype ptype) |
ptypeがpromote可能な型かどうかのチェック promote済みの場合はfalseを返す | |
Ptype | osl::unpromote (Ptype ptype) |
ptypeがpromote後の型の時に,promote前の型を返す. promoteしていない型の時はそのまま返す | |
constexpr Ptype | osl::unpromoteSafe (Ptype ptype) |
Ptype | osl::promote (Ptype ptype) |
promote可能なptypeに対して,promote後の型を返す promote不可のptypeを与えてはいけない. | |
bool | osl::isMajorBasic (Ptype ptype) |
bool | osl::isMajor (Ptype ptype) |
bool | osl::isMajorNonPieceOK (Ptype ptype) |
unsigned int | osl::ptypeOIndex (PtypeO ptypeo) |
PtypeO | osl::newPtypeO (Player player, Ptype ptype) |
Ptype | osl::getPtype (PtypeO ptypeO) |
PtypeO | osl::promote (PtypeO ptypeO) |
pieceをpromoteさせる. | |
PtypeO | osl::promoteWithMask (PtypeO ptypeO, int promoteMask) |
pieceを引数次第でpromoteさせる | |
PtypeO | osl::unpromote (PtypeO ptypeO) |
pieceをunpromoteさせる. | |
bool | osl::isValidPtypeO (int ptypeO) |
bool | osl::isPiece (PtypeO ptypeO) |
EMPTY, EDGEではない. | |
Player | osl::getOwner (PtypeO ptypeO) |
PtypeO | osl::captured (PtypeO ptypeO) |
unpromoteすると共に,ownerを反転する. | |
PtypeO | osl::alt (PtypeO ptypeO) |
owner を反転する | |
PtypeO | osl::altIfPiece (PtypeO ptypeO) |
Pieceの時にはowner を反転する. | |
bool | osl::canPromote (PtypeO ptypeO) |
bool | osl::isPromoted (PtypeO ptypeO) |
ptypeOが promote済みかどうか | |
std::ostream & | osl::operator<< (std::ostream &os, const PtypeO ptypeO) |
constexpr bool | osl::isShort (Direction d) |
constexpr bool | osl::isShort8 (Direction d) |
constexpr bool | osl::isLong (Direction d) |
constexpr Direction | osl::inverseUnsafe (Direction d) |
constexpr Direction | osl::inverse (Direction d) |
constexpr Direction | osl::primDir (Direction d) |
8方向について,primitiveな4方向を求める | |
constexpr Direction | osl::primDirUnsafe (Direction d) |
8方向について,primitiveな4方向を求める dとしてknight, INVALIDなども来る | |
bool | osl::isValid (Direction d) |
constexpr Direction | osl::longToShort (Direction d) |
constexpr Direction | osl::shortToLong (Direction d) |
引数に longDirを与えてはいけない | |
constexpr int | osl::dirToMask (Direction dir) |
std::ostream & | osl::operator<< (std::ostream &os, const Direction d) |
bool | osl::operator== (Square l, Square r) |
Offset | osl::newOffset (int dx, int dy) |
| |
bool | osl::operator== (Offset l, Offset r) |
bool | osl::operator!= (Offset l, Offset r) |
bool | osl::operator< (Offset l, Offset r) |
std::ostream & | osl::operator<< (std::ostream &, Offset) |
bool | osl::operator!= (Square l, Square r) |
bool | osl::operator< (Square l, Square r) |
bool | osl::operator> (Square l, Square r) |
std::ostream & | osl::operator<< (std::ostream &, Square) |
bool | osl::operator== (Piece l, Piece r) |
bool | osl::operator< (Piece l, Piece r) |
bool | osl::operator!= (Piece l, Piece r) |
std::ostream & | osl::operator<< (std::ostream &os, const Piece piece) |
bool | osl::operator< (Move lhs, Move rhs) |
bool | osl::operator== (Move lhs, Move rhs) |
bool | osl::operator!= (Move lhs, Move rhs) |
std::ostream & | osl::operator<< (std::ostream &os, Move move) |
変数 | |
const int | osl::PTYPE_SIZE = PTYPE_MAX-PTYPE_MIN+1 |
const PtypeO | osl::PTYPEO_EMPTY = newPtypeO(BLACK,PTYPE_EMPTY) |
const PtypeO | osl::PTYPEO_EDGE = newPtypeO(WHITE,PTYPE_EDGE) |
const int | osl::PTYPEO_SIZE = PTYPEO_MAX-PTYPEO_MIN+1 |
const int | osl::EMPTY_NUM = 0x80 |
const int | osl::EDGE_NUM = 0x40 |
#define move_assert | ( | x | ) |
move 関係でつかまえ所のないエラーがでるときに定義する
basic_type.h の 1013 行で定義されています。
参照元 osl::Move::from(), osl::Move::Move(), osl::Move::oldPtype(), osl::Move::promote(), osl::Move::ptype(), osl::Move::to(), と osl::Move::unpromote().
#define NEW_PTYPEO | ( | player, | ||
ptype | ||||
) | static_cast<PtypeO>(static_cast<int>(ptype)-(16&static_cast<int>(player))) |