00001
00002
00003 #ifndef _STANDARD_MOVE_GENERATOR_H
00004 #define _STANDARD_MOVE_GENERATOR_H
00005
00006 #include "osl/category/categoryList.h"
00007 #include "osl/category/takeBack.h"
00008 #include "osl/category/check.h"
00009 #include "osl/category/kingEscape.h"
00010 #include "osl/category/capture.h"
00011 #include "osl/category/addEffect.h"
00012 #include "osl/category/promote.h"
00013 #include "osl/category/escape.h"
00014 #include "osl/category/defense.h"
00015 #include "osl/category/ptypePosition.h"
00016 #include "osl/category/pawn.h"
00017 #include "osl/category/lance.h"
00018 #include "osl/category/silver.h"
00019 #include "osl/category/mate.h"
00020 #include "osl/category/bigramPosition.h"
00021 #include "osl/category/classify.h"
00022 #include "osl/category/pass.h"
00023 #include "osl/category/gold.h"
00024 #include "osl/category/majorPiece.h"
00025 #include "osl/category/knight.h"
00026 #include "osl/category/breakThreatmate.h"
00027
00028 #define CL(x,y) CategoryList<x,y >
00029 namespace osl
00030 {
00031 namespace category
00032 {
00037 typedef
00038 Classify<
00039 CL(OpenAttack,
00040 CL(Escape<GOLD>,
00041 CL(Escape<SILVER>,
00042 CL(Capture<PAWN>,
00043 CL(AddEffectToLastEffect,
00044 CL(StabInTheBack,
00045 CL(Promote,
00046 CL(KnightDoubleAttack,
00047 CL(SideAttack,
00048 CL(SideAttackDrop,
00049 CL(AddEffect,
00050 CL(OpenBishop,
00051 CL(AddSupport,
00052 CL(RookAddPawnSupport,
00053 CL(LureKingToBottom,
00054 CL(LanceAttackMinoGold,
00055 CL(KnightToAttack,
00056 CL(JoiningKnights,
00057 CL(RookAddLanceSupport,
00058 CL(DirectAttackToKing8,
00059 CL(PrepareRookPromotion,
00060 CL(DirectDefenseToKing8,
00061 CL(SilverHeadOfKnight,
00062 CL(SlowApproach,
00063 CL(LureGoldDiagonally,
00064 CL(PrepareForkGold,
00065 CL(BlockLong,
00066 CL(TrapRook,
00067 CL(DanglingPawn,
00068 CL(GambitPawn,
00069 CL(PawnAttackBase,
00070 CL(MoveSaGWithPawn,
00071 CL(LanceAttackKing,
00072 CL(LanceSacrifice,
00073 CL(KnightAttackYagura,
00074 CL(SilverNextToKing,
00075
00076 CL(Escape<KNIGHT>,
00077 CL(Escape<LANCE>,
00078 CL(PawnStopBishopEffect,
00079 CL(PawnOnSilver,
00080 CL(PawnOnLance,
00081 CL(Escape<PAWN>,
00082 CL(AntiPromotion,
00083 CL(AnchorPawn,
00084 CL(ForwardPawnWithRookSupport,
00085 CL(DropPieceOnEscapeRoute,
00086 CL(ForcePawnAdvanceOnRook,
00087 CL(EnteringKing,
00088 CL(PtypePosition,
00089 NullCategory
00090 )))))))))))))))))))))))))))))))))))))))))))))))))>
00091 StandardClassifier_t;
00092 struct StandardClassifier : public StandardClassifier_t
00093 {
00094 };
00100 typedef
00101 CL(KingEscape,
00102 CL(BreakThreatmate,
00103 CL(TakeBack,
00104 CL(Capture<ROOK>,
00105 CL(ContinueCapture,
00106 CL(Capture<BISHOP>,
00107 CL(ImmediateEscape,
00108 CL(ImmediateAntiPawnPromotion,
00109 CL(Pass,
00110 CL(BigramAttack,
00111 CL(JoiningPawns,
00112 CL(DropAfterOpposingPawn,
00113 CL(SilverHeadOfLastKnight,
00114 CL(Check,
00115 CL(Escape<ROOK>,
00116 CL(Escape<BISHOP>,
00117 CL(Capture<GOLD>,
00118 CL(Capture<SILVER>,
00119 CL(Capture<KNIGHT>,
00120 CL(Capture<LANCE>,
00121 CL(AddEffectToLastMove,
00122 CL(SafeDropMajorPiece,
00123 CL(StandardClassifier,
00124 NullCategory
00125 )))))))))))))))))))))))
00126 StandardMoveGenerator_t;
00127 struct StandardMoveGenerator : public StandardMoveGenerator_t
00128 {
00129 };
00130 }
00131
00132 using category::StandardMoveGenerator;
00133
00134 }
00135 #undef CL
00136
00137 #endif
00138
00139
00140
00141