16 #include <nn/pia/pia_Platform.h>
17 #include <nn/pia/common/common_RootObject.h>
21 #define NN_PIA_ENABLE_ZERO_FILL_HEX 1
30 const uint32_t StringStreamInitialSize = 128;
34 #define PIA_ENABLE_RESIZE_BUFFER 0
41 class StringStream :
public RootObject
52 virtual ~StringStream(
void);
55 uint32_t GetLength()
const;
58 uint32_t GetSize()
const
63 const char* CStr()
const
71 StringStream& operator<<(
const char* szText);
72 StringStream& operator<<(
const void* pPointer);
73 StringStream& operator<<(
bool bValue);
74 StringStream& operator<<(
double dValue);
75 StringStream& operator<<(
float fValue);
77 StringStream& operator<<(uint8_t uiValue)
79 return StreamNumber(uiValue);
81 StringStream& operator<<(int8_t iValue)
83 return StreamNumber(iValue);
85 StringStream& operator<<(uint16_t uiValue)
87 return StreamNumber(uiValue);
89 StringStream& operator<<(int16_t iValue)
91 return StreamNumber(iValue);
93 StringStream& operator<<(uint32_t uiValue)
95 return StreamNumber(uiValue);
97 StringStream& operator<<(int32_t iValue)
99 return StreamNumber(iValue);
102 StringStream& operator<<(uint64_t uiValue);
103 StringStream& operator<<(int64_t uiValue);
105 StringStream& operator<<(
const StringStream& oSS);
108 StringStream& operator<<(StringStream& (*pf)(StringStream&))
113 #if !NN_PIA_ENABLE_ZERO_FILL_HEX
114 StringStream& Manip_hex()
119 StringStream& Manip_dec()
124 #else // !NN_PIA_ENABLE_ZERO_FILL_HEX
125 StringStream& Manip_hex()
131 StringStream& Manip_dec()
137 StringStream& Manip_zerohex()
143 #endif // !NN_PIA_ENABLE_ZERO_FILL_HEX
145 StringStream& Manip_showbase()
150 StringStream& Manip_noshowbase()
152 m_IsShowBase =
false;
156 StringStream& Manip_boolalpha()
158 m_IsBoolAlpha =
true;
161 StringStream& Manip_noboolalpha()
163 m_IsBoolAlpha =
false;
167 const char& operator[](uint32_t uiPos)
const
169 return m_szBuffer[uiPos];
174 #if PIA_ENABLE_RESIZE_BUFFER
176 void FreeBuffer(
char* szBuffer);
177 void ResizeBuffer(uint32_t uiSize);
179 void AddBaseIfRequired();
181 StringStream& StreamNumber(uint32_t uiValue);
182 StringStream& StreamNumber(int32_t iValue);
183 void TestFreeRoom(uint32_t uiNewSize);
186 int32_t AddStringToRoom(
const char* szBuffer);
191 char* m_szCurrentPosition;
193 char m_szInitialBuffer[StringStreamInitialSize];
195 char m_szBufferToAdd[StringStreamInitialSize];
201 #if NN_PIA_ENABLE_ZERO_FILL_HEX
206 #endif // NN_PIA_ENABLE_ZERO_FILL_HEX
208 NN_PIA_DISALLOW_COPY(StringStream);
213 extern StringStream& hex(StringStream& oStringStream);
214 extern StringStream& dec(StringStream& oStringStream);
215 extern StringStream& endl(StringStream& oStringStream);
216 extern StringStream& showbase(StringStream& oStringStream);
217 extern StringStream& noshowbase(StringStream& oStringStream);
218 extern StringStream& boolalpha(StringStream& oStringStream);
219 extern StringStream& noboolalpha(StringStream& oStringStream);
221 #if NN_PIA_ENABLE_ZERO_FILL_HEX
222 extern StringStream& zerohex(StringStream& oStringStream);
223 #endif // NN_PIA_ENABLE_ZERO_FILL_HEX