00001 #ifndef HISTORY_HPP 00002 #define HISTORY_HPP 00003 00004 #include <vector> 00005 #include "Game/Move.hpp" 00006 #include "Game/Boards/ChessBoard.hpp" 00007 00008 template <typename DataType> 00009 class History 00010 { 00011 private: 00012 00013 std::vector<DataType > m_history; 00015 public: 00016 00020 void add(const DataType& data); 00021 }; 00022 00023 template <> 00024 class History<Move<ChessBoard::Coords> > 00025 { 00026 typedef std::pair<Move<ChessBoard::Coords>,Move<ChessBoard::Coords> > TurnData; 00027 00028 private: 00029 00030 std::vector< TurnData > m_history; 00031 TurnData m_tmpData; 00033 public: 00034 00035 00041 void add(const Move<ChessBoard::Coords>& data); 00042 00046 size_t size()const { return m_history.size(); } 00047 00053 const Move<ChessBoard::Coords>& get(size_t i, int color)const; 00054 00059 const TurnData& get(size_t i)const; 00060 }; 00061 00085 #endif