/usr/include/osl/effect/moveSignature.h is in libosl-dev 0.4.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #ifndef _MOVE_SIGNATURE_H
#define _MOVE_SIGNATURE_H
#include "osl/misc/carray.h"
#include "osl/ptype.h"
#include "osl/ptypeTraits.h"
#include <iosfwd>
namespace osl
{
namespace effect
{
/**
* マスの利きを表す型(SignatureEffectで使う予定).
* 動ける方向を示す8ビットの情報
*/
// enumにするとsizeof(MoveSignature)が1にならない可能性があるので
typedef unsigned char MoveSignature;
const int MS_PLAYER=(1<<7);
const int MS_LONG_U=(1<<5);
const int MS_U=(1<<4);
const int MS_UL_UR=(1<<3);
const int MS_L_R_D=(1<<2);
const int MS_DL_DR=(1<<1);
const int MS_UUL_UUR=(1<<0);
template<Player P>
inline MoveSignature getPlayerMask();
template<>
inline MoveSignature getPlayerMask<BLACK>(){ return 0; }
template<>
inline MoveSignature getPlayerMask<WHITE>(){ return MS_PLAYER; }
std::ostream& operator<<(std::ostream& os,const MoveSignature signature);
template<Ptype T>
struct SignatureTraits{
static const MoveSignature signature=
((PtypeTraits<T>::moveMask & DirectionTraits<LONG_U>::mask)!=0 ? MS_LONG_U : 0) |
((PtypeTraits<T>::moveMask & (DirectionTraits<LONG_U>::mask | DirectionTraits<U>::mask) )!=0 ? MS_U : 0) |
((PtypeTraits<T>::moveMask & (DirectionTraits<LONG_UL>::mask | DirectionTraits<UL>::mask) )!=0 ? MS_UL_UR : 0) |
((PtypeTraits<T>::moveMask & (DirectionTraits<LONG_L>::mask | DirectionTraits<L>::mask) )!=0 ? MS_L_R_D : 0) |
((PtypeTraits<T>::moveMask & (DirectionTraits<LONG_DL>::mask | DirectionTraits<DL>::mask) )!=0 ? MS_DL_DR : 0) |
((PtypeTraits<T>::moveMask & DirectionTraits<UUL>::mask)!=0 ? MS_UUL_UUR : 0);
};
const MoveSignature signature_EMPTY=getPlayerMask<BLACK>();
const MoveSignature signature_EDGE=getPlayerMask<WHITE>();
/**
* PtypeOからMoveSignatureを求めるテーブル.
*/
class MoveSignatureTable{
CArray<MoveSignature,PTYPEO_SIZE> signatures;
private:
template<Ptype T>
void setSignature();
template<Ptype T>
void setSignatures(Int2Type<T>);
public:
MoveSignatureTable();
MoveSignature getSignature(PtypeO ptypeo) const{
assert(isValidPtypeO(ptypeo));
return signatures[static_cast<int>(ptypeo)-PTYPEO_MIN];
}
};
extern const MoveSignatureTable Move_Signature_Table;
} // namespace effect
} // namespace osl
#endif // _MOVE_SIGNATURE_H
// ;;; Local Variables:
// ;;; mode:c++
// ;;; c-basic-offset:2
// ;;; End:
|