added wxTextOutputStream::Flush(): this is necessary with the stateful encodings, such as UTF-7
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -127,6 +127,8 @@ public:
|
|||||||
|
|
||||||
wxTextOutputStream& PutChar(wxChar c);
|
wxTextOutputStream& PutChar(wxChar c);
|
||||||
|
|
||||||
|
void Flush();
|
||||||
|
|
||||||
wxTextOutputStream& operator<<(const wxString& string);
|
wxTextOutputStream& operator<<(const wxString& string);
|
||||||
wxTextOutputStream& operator<<(char c);
|
wxTextOutputStream& operator<<(char c);
|
||||||
#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
|
#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
|
||||||
|
@@ -196,10 +196,10 @@ typedef enum
|
|||||||
@class wxTextOutputStream
|
@class wxTextOutputStream
|
||||||
@wxheader{txtstrm.h}
|
@wxheader{txtstrm.h}
|
||||||
|
|
||||||
This class provides functions that writes text data using an output stream,
|
This class provides functions that write text data using an output stream,
|
||||||
allowing you to write text, floats, and integers.
|
allowing you to write text, floats, and integers.
|
||||||
|
|
||||||
You can also simulate the C++ cout class:
|
You can also simulate the C++ @c std::cout class:
|
||||||
|
|
||||||
@code
|
@code
|
||||||
wxFFileOutputStream output( stderr );
|
wxFFileOutputStream output( stderr );
|
||||||
@@ -239,9 +239,22 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Destroys the wxTextOutputStream object.
|
Destroys the wxTextOutputStream object.
|
||||||
|
|
||||||
|
Also calls Flush().
|
||||||
*/
|
*/
|
||||||
~wxTextOutputStream();
|
~wxTextOutputStream();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Flushes the stream.
|
||||||
|
|
||||||
|
This method should be called when using stateful encodings (currently
|
||||||
|
the only example of such encoding in wxWidgets is wxMBConvUTF7) to
|
||||||
|
write the end of the encoded data to the stream.
|
||||||
|
|
||||||
|
@since 2.9.0
|
||||||
|
*/
|
||||||
|
void Flush();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the end-of-line mode. One of ::wxEOL_DOS, ::wxEOL_MAC and
|
Returns the end-of-line mode. One of ::wxEOL_DOS, ::wxEOL_MAC and
|
||||||
::wxEOL_UNIX.
|
::wxEOL_UNIX.
|
||||||
|
@@ -426,6 +426,19 @@ wxTextOutputStream& wxTextOutputStream::PutChar(wxChar c)
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTextOutputStream::Flush()
|
||||||
|
{
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
const size_t len = m_conv->FromWChar(NULL, 0, L"", 1);
|
||||||
|
if ( len > m_conv->GetMBNulLen() )
|
||||||
|
{
|
||||||
|
wxCharBuffer buf(len);
|
||||||
|
m_conv->FromWChar(buf.data(), len, L"", 1);
|
||||||
|
m_output.Write(buf, len - m_conv->GetMBNulLen());
|
||||||
|
}
|
||||||
|
#endif // wxUSE_UNICODE
|
||||||
|
}
|
||||||
|
|
||||||
wxTextOutputStream& wxTextOutputStream::operator<<(const wxString& string)
|
wxTextOutputStream& wxTextOutputStream::operator<<(const wxString& string)
|
||||||
{
|
{
|
||||||
WriteString( string );
|
WriteString( string );
|
||||||
|
@@ -1050,6 +1050,9 @@ void MBConvTestCase::TestStreamEncoder(
|
|||||||
{
|
{
|
||||||
textOutputStream.PutChar( wideBuffer[i] );
|
textOutputStream.PutChar( wideBuffer[i] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
textOutputStream.Flush();
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL( (wxFileOffset)multiBytes, memoryOutputStream.TellO() );
|
CPPUNIT_ASSERT_EQUAL( (wxFileOffset)multiBytes, memoryOutputStream.TellO() );
|
||||||
wxCharBuffer copy( memoryOutputStream.TellO() );
|
wxCharBuffer copy( memoryOutputStream.TellO() );
|
||||||
memoryOutputStream.CopyTo( copy.data(), memoryOutputStream.TellO());
|
memoryOutputStream.CopyTo( copy.data(), memoryOutputStream.TellO());
|
||||||
|
Reference in New Issue
Block a user