My Project
core
osl
mobility
mobilityTable.h
Go to the documentation of this file.
1
/* mobilityTable.h
2
*/
3
#ifndef _MOBILITY_TABLE_H
4
#define _MOBILITY_TABLE_H
5
#include "
osl/basic_type.h
"
6
#include "
osl/simpleState.h
"
7
#include <cassert>
8
#include <iosfwd>
9
10
namespace
osl
11
{
12
namespace
mobility
13
{
14
union
V4
{
15
unsigned
int
lv
;
16
CArray<unsigned char,4>
uc
;
17
}
18
#ifdef __GNUC__
19
__attribute__
((aligned(4)))
20
#endif
21
;
29
class
MobilityContent
30
{
31
V4
v
;
32
public
:
33
MobilityContent
() {
34
clear
();
35
}
36
void
clear
(){
37
v
.
lv
=0u;
38
}
39
const
Square
get
(
Direction
d)
const
{
40
return
Square::makeDirect
(
v
.
uc
[((
unsigned
int
)d)>>1]);
41
}
42
void
set
(
Direction
d,
Square
pos){
43
v
.
uc
[((
unsigned
int)d)>>1]=
static_cast<
unsigned
char
>
(pos.
uintValue
());
44
}
45
};
46
std::ostream&
operator<<
(std::ostream& os,MobilityContent
const
& mc);
47
51
class
MobilityTable
52
{
53
CArray<MobilityContent,8>
table
54
#ifdef __GNUC__
55
__attribute__
((aligned(16)))
56
#endif
57
;
58
public
:
59
MobilityTable
(){}
60
MobilityTable
(
SimpleState
const
& state);
61
void
set
(
Direction
d,
int
num,
Square
pos){
62
assert(0<=(
int
)d && (
int
)d<=7);
63
return
table
[num-32].set(d,pos);
64
}
65
const
Square
get
(
Direction
d,
int
num)
const
{
66
assert(0<=(
int
)d && (
int
)d<=7);
67
return
table
[num-32].get(d);
68
}
69
friend
bool
operator==
(
const
MobilityTable
& mt1,
const
MobilityTable
& mt2);
70
};
71
std::ostream&
operator<<
(std::ostream& os,
MobilityTable
const
& mt);
72
bool
operator==
(
const
MobilityTable
&,
const
MobilityTable
&);
73
}
74
using
mobility::MobilityTable
;
75
}
76
#endif
/* _MOBILITY_TABLE_H */
77
// ;;; Local Variables:
78
// ;;; mode:c++
79
// ;;; c-basic-offset:2
80
// ;;; End:
basic_type.h
osl::CArray
Definition
container.h:20
osl::SimpleState
Definition
simpleState.h:35
osl::Square
Definition
basic_type.h:532
osl::Square::uintValue
unsigned int uintValue() const
Definition
basic_type.h:539
osl::Square::makeDirect
static const Square makeDirect(int value)
Definition
basic_type.h:538
osl::mobility::MobilityContent
駒毎に指定の方向の利きを持つ最後のSquare.
Definition
mobilityTable.h:30
osl::mobility::MobilityContent::clear
void clear()
Definition
mobilityTable.h:36
osl::mobility::MobilityContent::set
void set(Direction d, Square pos)
Definition
mobilityTable.h:42
osl::mobility::MobilityContent::MobilityContent
MobilityContent()
Definition
mobilityTable.h:33
osl::mobility::MobilityContent::get
const Square get(Direction d) const
Definition
mobilityTable.h:39
osl::mobility::MobilityContent::v
V4 v
Definition
mobilityTable.h:31
osl::mobility::MobilityTable
駒番号からMobilityContentを得る
Definition
mobilityTable.h:52
osl::mobility::MobilityTable::operator==
friend bool operator==(const MobilityTable &mt1, const MobilityTable &mt2)
osl::mobility::MobilityTable::get
const Square get(Direction d, int num) const
Definition
mobilityTable.h:65
osl::mobility::MobilityTable::set
void set(Direction d, int num, Square pos)
Definition
mobilityTable.h:61
osl::mobility::MobilityTable::MobilityTable
MobilityTable()
Definition
mobilityTable.h:59
osl::mobility::MobilityTable::table
CArray< MobilityContent, 8 > table
Definition
mobilityTable.h:57
osl::mobility::operator<<
std::ostream & operator<<(std::ostream &os, MobilityContent const &mc)
Definition
mobilityTable.cc:28
osl::mobility::__attribute__
long long v2di __attribute__((vector_size(16)))
Definition
kingMobility.h:22
osl::mobility::operator==
bool operator==(const MobilityTable &, const MobilityTable &)
Definition
mobilityTable.cc:49
osl
Definition
additionalEffect.h:6
osl::Direction
Direction
Definition
basic_type.h:310
simpleState.h
osl::mobility::V4
Definition
mobilityTable.h:14
osl::mobility::V4::uc
CArray< unsigned char, 4 > uc
Definition
mobilityTable.h:16
osl::mobility::V4::lv
unsigned int lv
Definition
mobilityTable.h:15
Generated by
1.9.8