My Project
usiRecord.cc
Go to the documentation of this file.
1/* usiRecord.cc
2 */
4#include "osl/usi.h"
5#include <boost/algorithm/string/replace.hpp>
6#include <iostream>
7#include <fstream>
8#include <sstream>
9#include <cctype>
10
12escape(std::string& str)
13{
14 boost::algorithm::replace_all(str, "/", "_");
15 boost::algorithm::replace_all(str, "+", "@");
16 boost::algorithm::replace_all(str, " ", ".");
17}
18
20unescape(std::string& str)
21{
22 boost::algorithm::replace_all(str, "_", "/");
23 boost::algorithm::replace_all(str, "@", "+");
24 boost::algorithm::replace_all(str, ".", " ");
25}
26
27
29UsiFile::UsiFile(const std::string& filename)
30{
31 std::ifstream is(filename.c_str());
32 std::string line;
33 if (! std::getline(is, line))
34 {
35 const std::string msg = "UsiFile::UsiFile file cannot read ";
36 std::cerr << msg << filename << "\n";
37 throw usi::ParseError(msg + filename);
38 }
39 ::osl::usi::parse(line, record.record.initial_state, record.record.moves);
40 assert(record.record.initial_state.isConsistent());
41}
42
47
48/* ------------------------------------------------------------------------- */
49// ;;; Local Variables:
50// ;;; mode:c++
51// ;;; c-basic-offset:2
52// ;;; End:
UsiFile(const std::string &filename)
Definition usiRecord.cc:29
void unescape(std::string &str)
escapeされた文字を元に戻す.
Definition usiRecord.cc:20
void parse(const std::string &line, NumEffectState &)
[sfen <sfenstring> | startpos ] moves <move1> ... <movei>
Definition usi.cc:301
void escape(std::string &str)
URIやFile systemとして使えるように、文字をescape.
Definition usiRecord.cc:12