xref: /aosp_15_r20/external/lzma/CPP/Common/StdOutStream.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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