説明を見る。00001
00002
00003 #include "osl/record/usiRecord.h"
00004 #include "osl/usi.h"
00005 #include <boost/algorithm/string/replace.hpp>
00006 #include <iostream>
00007 #include <fstream>
00008 #include <sstream>
00009 #include <cctype>
00010
00011 void osl::usi::
00012 escape(std::string& str)
00013 {
00014 boost::algorithm::replace_all(str, "/", "_");
00015 boost::algorithm::replace_all(str, "+", "@");
00016 boost::algorithm::replace_all(str, " ", ".");
00017 }
00018
00019 void osl::usi::
00020 unescape(std::string& str)
00021 {
00022 boost::algorithm::replace_all(str, "_", "/");
00023 boost::algorithm::replace_all(str, "@", "+");
00024 boost::algorithm::replace_all(str, ".", " ");
00025 }
00026
00027
00028 osl::usi::
00029 UsiFile::UsiFile(const std::string& filename)
00030 {
00031 std::ifstream is(filename.c_str());
00032 std::string line;
00033 if (! std::getline(is, line))
00034 {
00035 const std::string msg = "UsiFile::UsiFile file cannot read ";
00036 std::cerr << msg << filename << "\n";
00037 throw usi::ParseError(msg + filename);
00038 }
00039 ::osl::usi::parse(line, record.record.initial_state, record.record.moves);
00040 assert(record.record.initial_state.isConsistent());
00041 }
00042
00043 osl::usi::
00044 UsiFile::~UsiFile()
00045 {
00046 }
00047
00048
00049
00050
00051
00052