| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- // Common/StdOutStream.cpp
- #include "StdAfx.h"
- #include <tchar.h>
- #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);
- }
|