1*f6dc9357SAndroid Build Coastguard Worker // Common/StdOutStream.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_COMMON_STD_OUT_STREAM_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_COMMON_STD_OUT_STREAM_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include <stdio.h> 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "MyString.h" 9*f6dc9357SAndroid Build Coastguard Worker #include "MyTypes.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker class CStdOutStream 12*f6dc9357SAndroid Build Coastguard Worker { 13*f6dc9357SAndroid Build Coastguard Worker FILE *_stream; 14*f6dc9357SAndroid Build Coastguard Worker // bool _streamIsOpen; 15*f6dc9357SAndroid Build Coastguard Worker public: 16*f6dc9357SAndroid Build Coastguard Worker bool IsTerminalMode; 17*f6dc9357SAndroid Build Coastguard Worker CBoolPair ListPathSeparatorSlash; 18*f6dc9357SAndroid Build Coastguard Worker int CodePage; 19*f6dc9357SAndroid Build Coastguard Worker 20*f6dc9357SAndroid Build Coastguard Worker CStdOutStream(FILE *stream = NULL): _stream(stream)21*f6dc9357SAndroid Build Coastguard Worker _stream(stream), 22*f6dc9357SAndroid Build Coastguard Worker // _streamIsOpen(false), 23*f6dc9357SAndroid Build Coastguard Worker IsTerminalMode(false), 24*f6dc9357SAndroid Build Coastguard Worker CodePage(-1) 25*f6dc9357SAndroid Build Coastguard Worker { 26*f6dc9357SAndroid Build Coastguard Worker ListPathSeparatorSlash.Val = 27*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32 28*f6dc9357SAndroid Build Coastguard Worker false; 29*f6dc9357SAndroid Build Coastguard Worker #else 30*f6dc9357SAndroid Build Coastguard Worker true; 31*f6dc9357SAndroid Build Coastguard Worker #endif 32*f6dc9357SAndroid Build Coastguard Worker } 33*f6dc9357SAndroid Build Coastguard Worker 34*f6dc9357SAndroid Build Coastguard Worker // ~CStdOutStream() { Close(); } 35*f6dc9357SAndroid Build Coastguard Worker 36*f6dc9357SAndroid Build Coastguard Worker // void AttachStdStream(FILE *stream) { _stream = stream; _streamIsOpen = false; } 37*f6dc9357SAndroid Build Coastguard Worker // bool IsDefined() const { return _stream != NULL; } 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker operator FILE *() { return _stream; } 40*f6dc9357SAndroid Build Coastguard Worker /* 41*f6dc9357SAndroid Build Coastguard Worker bool Open(const char *fileName) throw(); 42*f6dc9357SAndroid Build Coastguard Worker bool Close() throw(); 43*f6dc9357SAndroid Build Coastguard Worker */ 44*f6dc9357SAndroid Build Coastguard Worker bool Flush() throw(); 45*f6dc9357SAndroid Build Coastguard Worker 46*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(CStdOutStream & (* func)(CStdOutStream &)) 47*f6dc9357SAndroid Build Coastguard Worker { 48*f6dc9357SAndroid Build Coastguard Worker (*func)(*this); 49*f6dc9357SAndroid Build Coastguard Worker return *this; 50*f6dc9357SAndroid Build Coastguard Worker } 51*f6dc9357SAndroid Build Coastguard Worker 52*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(const char *s) throw() 53*f6dc9357SAndroid Build Coastguard Worker { 54*f6dc9357SAndroid Build Coastguard Worker fputs(s, _stream); 55*f6dc9357SAndroid Build Coastguard Worker return *this; 56*f6dc9357SAndroid Build Coastguard Worker } 57*f6dc9357SAndroid Build Coastguard Worker 58*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(char c) throw() 59*f6dc9357SAndroid Build Coastguard Worker { 60*f6dc9357SAndroid Build Coastguard Worker fputc((unsigned char)c, _stream); 61*f6dc9357SAndroid Build Coastguard Worker return *this; 62*f6dc9357SAndroid Build Coastguard Worker } 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(Int32 number) throw(); 65*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(Int64 number) throw(); 66*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(UInt32 number) throw(); 67*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(UInt64 number) throw(); 68*f6dc9357SAndroid Build Coastguard Worker 69*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & operator<<(const wchar_t *s); 70*f6dc9357SAndroid Build Coastguard Worker void PrintUString(const UString &s, AString &temp); 71*f6dc9357SAndroid Build Coastguard Worker void Convert_UString_to_AString(const UString &src, AString &dest); 72*f6dc9357SAndroid Build Coastguard Worker 73*f6dc9357SAndroid Build Coastguard Worker void Normalize_UString(UString &s); 74*f6dc9357SAndroid Build Coastguard Worker void Normalize_UString_Path(UString &s); 75*f6dc9357SAndroid Build Coastguard Worker 76*f6dc9357SAndroid Build Coastguard Worker void NormalizePrint_UString_Path(const UString &s, UString &tempU, AString &tempA); 77*f6dc9357SAndroid Build Coastguard Worker void NormalizePrint_UString_Path(const UString &s); 78*f6dc9357SAndroid Build Coastguard Worker void NormalizePrint_UString(const UString &s); 79*f6dc9357SAndroid Build Coastguard Worker void NormalizePrint_wstr_Path(const wchar_t *s); 80*f6dc9357SAndroid Build Coastguard Worker }; 81*f6dc9357SAndroid Build Coastguard Worker 82*f6dc9357SAndroid Build Coastguard Worker CStdOutStream & endl(CStdOutStream & outStream) throw(); 83*f6dc9357SAndroid Build Coastguard Worker 84*f6dc9357SAndroid Build Coastguard Worker extern CStdOutStream g_StdOut; 85*f6dc9357SAndroid Build Coastguard Worker extern CStdOutStream g_StdErr; 86*f6dc9357SAndroid Build Coastguard Worker 87*f6dc9357SAndroid Build Coastguard Worker #endif 88