説明を見る。00001 #ifndef _RECORD_H
00002 #define _RECORD_H
00003 #include "osl/record/searchInfo.h"
00004 #include "osl/numEffectState.h"
00005 #include "osl/csa.h"
00006 #include <boost/date_time/gregorian/gregorian_types.hpp>
00007 #include <boost/ptr_container/ptr_vector.hpp>
00008 #include <iosfwd>
00009
00010 namespace osl
00011 {
00012 namespace record
00013 {
00014 struct Record
00015 {
00016 RecordMinimal record;
00017 enum ResultType {
00018 Unknown=0,
00019 BlackWin=1,
00020 WhiteWin=2,
00021 Sennnichite=3,
00022 JiShogi=4,
00023 };
00024 std::vector<int> times;
00025 std::vector<std::string> comments;
00026 std::vector<SearchInfo> move_info;
00027
00028 std::string version, initial_comment, tournament_name;
00029 CArray<std::string,2> player;
00030 ResultType result;
00031 boost::gregorian::date start_date;
00032
00033 Record();
00034 ~Record();
00035 static void addWithNewLine(std::string& a, const std::string& b) {
00036 if (! a.empty())
00037 a += "\n";
00038 a += b;
00039 }
00040 NumEffectState initialState() const { return record.initial_state; }
00041 std::vector<Move> moves() const { return record.moves; }
00042
00043 void setDate(const std::string& date_str);
00044 void setMoveComment(const std::string&);
00045 void setMoveInfo(const SearchInfo&);
00046 void setMoveTime(int);
00047 Move lastMove() const { return moves().empty() ? Move() : moves().back(); }
00048
00049 void load(std::vector<Move>& moves, std::vector<int>& times) const {
00050 moves = record.moves;
00051 times = this->times;
00052 }
00053 void load(std::vector<Move>& moves, std::vector<int>& times,
00054 std::vector<std::string>& comments,
00055 std::vector<SearchInfo>& move_info) const {
00056 load(moves, times);
00057 comments = this->comments;
00058 move_info = this->move_info;
00059 }
00060 };
00061 std::ostream& operator<<(std::ostream& os, const Record & r);
00062
00063 class RecordFile
00064 {
00065 protected:
00066 Record record;
00067 public:
00068 virtual ~RecordFile();
00069 Record load() const { return record; }
00070 const NumEffectState initialState() const { return record.initialState(); }
00071 const std::vector<Move> moves() const { return record.moves(); }
00072 };
00073 }
00074 using record::SearchInfo;
00075 using record::Record;
00076 using record::RecordFile;
00077 }
00078 #endif
00079
00080
00081
00082