X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmisc.cpp;h=04c3c939f76d98229db4c570e089f92375657d31;hp=daafd3fb650cbd009cee475402474f2786d43871;hb=5066e17eba4b9d4217a8d173de56e40e0e05fc6d;hpb=098f645d26675bcf2180b290be77fe64a63de3ae diff --git a/src/misc.cpp b/src/misc.cpp index daafd3fb..04c3c939 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -17,7 +17,6 @@ along with this program. If not, see . */ -#include #include #include #include @@ -27,7 +26,6 @@ #include "thread.h" using namespace std; -using namespace std::chrono; namespace { @@ -35,41 +33,37 @@ namespace { /// DD-MM-YY and show in engine_info. const string Version = ""; -/// Debug counters -int64_t hits[2], means[2]; - /// Our fancy logging facility. The trick here is to replace cin.rdbuf() and /// cout.rdbuf() with two Tie objects that tie cin and cout to a file stream. We /// can toggle the logging of std::cout and std:cin at runtime whilst preserving -/// usual i/o functionality, all without changing a single line of code! +/// usual I/O functionality, all without changing a single line of code! /// Idea from http://groups.google.com/group/comp.lang.c++/msg/1d941c0f26ea0d81 struct Tie: public streambuf { // MSVC requires splitted streambuf for cin and cout - Tie(streambuf* b, ofstream* f) : buf(b), file(f) {} + Tie(streambuf* b, streambuf* l) : buf(b), logBuf(l) {} - int sync() { return file->rdbuf()->pubsync(), buf->pubsync(); } + int sync() { return logBuf->pubsync(), buf->pubsync(); } int overflow(int c) { return log(buf->sputc((char)c), "<< "); } int underflow() { return buf->sgetc(); } int uflow() { return log(buf->sbumpc(), ">> "); } - streambuf* buf; - ofstream* file; + streambuf *buf, *logBuf; int log(int c, const char* prefix) { - static int last = '\n'; + static int last = '\n'; // Single log file if (last == '\n') - file->rdbuf()->sputn(prefix, 3); + logBuf->sputn(prefix, 3); - return last = file->rdbuf()->sputc((char)c); + return last = logBuf->sputc((char)c); } }; class Logger { - Logger() : in(cin.rdbuf(), &file), out(cout.rdbuf(), &file) {} + Logger() : in(cin.rdbuf(), file.rdbuf()), out(cout.rdbuf(), file.rdbuf()) {} ~Logger() { start(false); } ofstream file; @@ -82,7 +76,7 @@ public: if (b && !l.file.is_open()) { - l.file.open("io_log.txt", ifstream::out | ifstream::app); + l.file.open("io_log.txt", ifstream::out); cin.rdbuf(&l.in); cout.rdbuf(&l.out); } @@ -119,20 +113,14 @@ const string engine_info(bool to_uci) { ss << (Is64Bit ? " 64" : "") << (HasPext ? " BMI2" : (HasPopCnt ? " POPCNT" : "")) << (to_uci ? "\nid author ": " by ") - << "Tord Romstad, Marco Costalba and Joona Kiiski"; + << "T. Romstad, M. Costalba, J. Kiiski, G. Linscott"; return ss.str(); } -/// Convert system time to milliseconds. That's all we need. - -Time::point Time::now() { - return duration_cast(steady_clock::now().time_since_epoch()).count(); -} - - /// Debug functions used mainly to collect run-time statistics +static int64_t hits[2], means[2]; void dbg_hit_on(bool b) { ++hits[0]; if (b) ++hits[1]; } void dbg_hit_on(bool c, bool b) { if (c) dbg_hit_on(b); } @@ -155,7 +143,7 @@ void dbg_print() { std::ostream& operator<<(std::ostream& os, SyncCout sc) { - static std::mutex m; + static Mutex m; if (sc == IO_LOCK) m.lock();