17 #include <pia/platform.h> 18 #include <pia/common/common_RootObject.h> 23 #define NN_PIA_ENABLE_ZERO_FILL_HEX 1 32 #define NN_PIA_STRINGSTREAM_INITIAL_SIZE 128 36 #define PIA_ENABLE_RESIZE_BUFFER 0 43 class StringStream :
public RootObject
54 virtual ~StringStream(
void);
57 u32 GetLength()
const;
65 const char* CStr()
const 73 StringStream& operator<<(
const char* szText);
74 StringStream& operator<<(
const void* pPointer);
75 StringStream& operator<<(
bool bValue);
76 StringStream& operator<<(f64 dValue);
77 StringStream& operator<<(f32 fValue);
79 StringStream& operator<<(u8 uiValue)
81 return StreamNumber(uiValue);
83 StringStream& operator<<(s8 iValue)
85 return StreamNumber(iValue);
87 StringStream& operator<<(u16 uiValue)
89 return StreamNumber(uiValue);
91 StringStream& operator<<(s16 iValue)
93 return StreamNumber(iValue);
95 StringStream& operator<<(u32 uiValue)
97 return StreamNumber(uiValue);
99 StringStream& operator<<(s32 iValue)
101 return StreamNumber(iValue);
104 StringStream& operator<<(u64 uiValue);
105 StringStream& operator<<(s64 uiValue);
107 StringStream& operator<<(
const StringStream& oSS);
110 StringStream& operator<<(StringStream& (*pf)(StringStream&))
115 #if !NN_PIA_ENABLE_ZERO_FILL_HEX 116 StringStream& Manip_hex()
121 StringStream& Manip_dec()
126 #else // !NN_PIA_ENABLE_ZERO_FILL_HEX 127 StringStream& Manip_hex()
133 StringStream& Manip_dec()
139 StringStream& Manip_zerohex()
145 #endif // !NN_PIA_ENABLE_ZERO_FILL_HEX 147 StringStream& Manip_showbase()
152 StringStream& Manip_noshowbase()
158 StringStream& Manip_boolalpha()
163 StringStream& Manip_noboolalpha()
169 const char& operator[](u32 uiPos)
const 171 return m_szBuffer[uiPos];
179 StringStream(
const StringStream&);
184 StringStream& operator=(
const StringStream&);
186 #if PIA_ENABLE_RESIZE_BUFFER 188 void FreeBuffer(
char* szBuffer);
189 void ResizeBuffer(u32 uiSize);
191 void AddBaseIfRequired();
193 StringStream& StreamNumber(u32 uiValue);
194 StringStream& StreamNumber(s32 iValue);
195 void TestFreeRoom(u32 uiNewSize);
198 s32 AddStringToRoom(
const char* szBuffer);
203 char* m_szCurrentPosition;
205 char m_szInitialBuffer[NN_PIA_STRINGSTREAM_INITIAL_SIZE];
207 char m_szBufferToAdd[NN_PIA_STRINGSTREAM_INITIAL_SIZE];
213 #if NN_PIA_ENABLE_ZERO_FILL_HEX 218 #endif // NN_PIA_ENABLE_ZERO_FILL_HEX 223 extern StringStream& hex(StringStream& oStringStream);
224 extern StringStream& dec(StringStream& oStringStream);
225 extern StringStream& endl(StringStream& oStringStream);
226 extern StringStream& showbase(StringStream& oStringStream);
227 extern StringStream& noshowbase(StringStream& oStringStream);
228 extern StringStream& boolalpha(StringStream& oStringStream);
229 extern StringStream& noboolalpha(StringStream& oStringStream);
231 #if NN_PIA_ENABLE_ZERO_FILL_HEX 232 extern StringStream& zerohex(StringStream& oStringStream);
233 #endif // NN_PIA_ENABLE_ZERO_FILL_HEX