// Common/StdOutStream.cpp #include "StdAfx.h" #include #include "StdOutStream.h" #include "IntToString.h" #include "StringConvert.h" #ifdef _MSC_VER // "was declared deprecated" disabling #pragma warning(disable : 4996 ) #endif static const char kNewLineChar = '\n'; static const char *kFileOpenMode = "wt"; CStdOutStream g_StdOut(stdout); CStdOutStream g_StdErr(stderr); bool CStdOutStream::Open(const char *fileName) { Close(); _stream = fopen(fileName, kFileOpenMode); _streamIsOpen = (_stream != 0); return _streamIsOpen; } bool CStdOutStream::Close() { if (!_streamIsOpen) return true; if (fclose(_stream) != 0) return false; _stream = 0; _streamIsOpen = false; return true; } bool CStdOutStream::Flush() { return (fflush(_stream) == 0); } CStdOutStream::~CStdOutStream () { Close(); } CStdOutStream & CStdOutStream::operator<<(CStdOutStream & (*aFunction)(CStdOutStream &)) { (*aFunction)(*this); return *this; } CStdOutStream & endl(CStdOutStream & outStream) { return outStream << kNewLineChar; } CStdOutStream & CStdOutStream::operator<<(const char *string) { fputs(string, _stream); return *this; } CStdOutStream & CStdOutStream::operator<<(const wchar_t *string) { *this << (const char *)UnicodeStringToMultiByte(string, CP_OEMCP); return *this; } CStdOutStream & CStdOutStream::operator<<(char c) { fputc(c, _stream); return *this; } CStdOutStream & CStdOutStream::operator<<(int number) { char textString[32]; ConvertInt64ToString(number, textString); return operator<<(textString); } CStdOutStream & CStdOutStream::operator<<(UInt64 number) { char textString[32]; ConvertUInt64ToString(number, textString); return operator<<(textString); }