File: square.cc

package info (click to toggle)
libosl 0.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 273,976 kB
  • sloc: cpp: 129,625; ansic: 7,145; ruby: 1,290; makefile: 558; perl: 413; sh: 35
file content (53 lines) | stat: -rw-r--r-- 1,104 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* square.cc
 */
#include "osl/square.h"
#include "osl/boardTable.h"
#include <boost/static_assert.hpp>
#include <iostream>

BOOST_STATIC_ASSERT(sizeof(osl::Square) == 4);

bool osl::Square::isOnBoardSlow() const 
{
    return (1<=x() && x() <=9 
	    && 1<=y() && y() <=9);
}

bool osl::Square::isValid() const
{
  return isPieceStand() || isOnBoard();
}

const osl::Square osl::
Square::squareForBlackSlow(Player player) const
{
  if (player == BLACK) 
    return *this;
  return Square(reverseX(x()),reverseY(y()));
}


const osl::Square osl::
Square::neighbor(Player P, Direction D) const
{
  return Board_Table.nextSquare(P, *this, D);
}

const osl::Square osl::
Square::back(Player P, Direction D) const
{
  return Board_Table.nextSquare(alt(P), *this, D);
}

std::ostream& osl::operator<<(std::ostream& os, Square square)
{
  if (square.isPieceStand())
    return os << "OFF";
  return os << "Square(" << square.x() << square.y() << ")";
}

/* ------------------------------------------------------------------------- */
// ;;; Local Variables:
// ;;; mode:c++
// ;;; c-basic-offset:2
// ;;; End: