Commit Graph

70 Commits

Author SHA1 Message Date
Paul Cornett
691521e411 Avoid comparing unsigned values with < 0 2019-04-05 10:12:27 -07:00
Vadim Zeitlin
4502e7563b Fix wxTextInputStream for input starting with BOM-like bytes
Contrary to what a comment in wxTextInputStream::GetChar() said, it is
actually possible to get more than one wide character from a call to
wxMBConv::ToWChar(len+1) even if a previous call to ToWChar(len) failed
to decode anything at all. This happens with wxConvAuto because it keeps
returning an error while it doesn't have enough data to determine if the
input contains a BOM or not, but then returns all the characters
examined so far at once if it turns out that there was no BOM, after
all.

The simplest case in which this created problems was just input starting
with a NUL byte as it as this could be a start of UTF-32BE BOM.

The fix consists in keeping all the bytes read but not yet decoded in
the m_lastBytes buffer and retrying to decode them during the next
GetChar() call. This implies keeping track of how much valid data is
there in m_lastBytes exactly, as we can't discard the already decoded
data immediately, but need to keep it in the buffer too, in order to
allow implementing UngetLast(). Incidentally, UngetLast() was totally
broken for UTF-16/32 input (containing NUL bytes in the middle of the
characters) before and this change fixes this as a side effect.

Also add test cases for previously failing inputs.
2017-11-09 23:49:59 +01:00
Vadim Zeitlin
f365b0712b Get rid of wxTextInputStream code dealing with wxEOT
Having NextChar() returning wxEOT only for GetChar() to turn it back to
NUL didn't make any sense, just return NUL directly and get rid of
GetChar/NextChar() distinction.

No real changes, just simplify the code.
2017-11-08 23:27:13 +01:00
pb101
a03df746f0 Fix harmless parameter shadowing warnings
Rename local variables to avoid clashes with the function parameters.

Closes #17343, #17344.
2016-01-22 14:41:23 +01:00
Vadim Zeitlin
823a2337f6 Make wxTextStream classes work with surrogates under MSW
On the platforms using UTF-16 for wchar_t we can't read nor write Unicode data
one wchar_t at a time as a single half of a surrogate character can't be
converted to or from the encoding of the stream.

To fix this, we may need to store the last wchar_t already read from the
stream but not returned yet in wxTextInputStream::NextChar() and store,
without writing it, the wchar_t passed to wxTextOutputStream::PutChar() until
the second half of the surrogate is written.

See #17070.
2015-11-13 19:36:33 +01:00
Catalin
54f640815e Use existing helper methods in wxTextInputStream instead of casts.
No real changes, just simplify and prettify the code a bit.
2015-06-23 18:22:01 +02:00
Catalin
a2ebc9daf6 Add wxTextOutputStream::Write<>().
The new method allows to write into wxTextOutputStream anything that can be
streamed into wxString and allows to simplify the existing code.
2015-06-23 18:20:19 +02:00
Vadim Zeitlin
01f9accd19 Remove wxPM, wxWidgets port to OS/2.
This port is not used and is not being worked on, so remove it to reduce the
amount of the code which needs to be updated for every global change.

Also remove tests for VisualAge compiler which isn't used since ages.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-15 23:56:58 +00:00
Stefan Csomor
f18d7097da adding wxFALLTHROUGH where until now we had comments, allows for code-analysis support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-26 17:36:32 +00:00
Vadim Zeitlin
34e4f66d6a Compilation fix in wchar_t build after r76171.
Don't concatenate narrow wxLongLongFmtSpec with wide strings, just don't use
wxT() at all.

Closes #14685.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-20 13:26:01 +00:00
Vadim Zeitlin
8c4b1dcbd0 Add wxInt64 support to wxText{Input,Output}Stream.
Add explicit Read64[S]() and Write64() methods.

Closes #14685.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76171 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-19 22:57:44 +00:00
Paul Cornett
967a94c91a remove WXWIN_COMPATIBILITY_2_6, add WXWIN_COMPATIBILITY_3_0
closes #15792

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-04 20:07:33 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
d98a58c543 Use __WINDOWS__ for OS kind checks and reserve __WXMSW__ for GUI toolkit.
This change prepares the way for using wxGTK under Windows as this would
still define __WINDOWS__ but use __WXGTK__ instead of __WXMSW__.

Closes #14064.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70796 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-03-04 00:29:31 +00:00
Vadim Zeitlin
32dd8aa22b Check the result of ToWChar() call in wxTextInputStream::NextChar() better.
The logic in this function depends on ToWChar() working correctly so check
that it doesn't return obviously wrong results, e.g. 0 output length for
non-empty input. This was mostly done to detect the problem in wxConvAuto
currently but it could also be useful with user-defined conversions and
shouldn't have a big performance effect on wxTextInputStream so leave these
checks in to facilitate debugging in the future.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-24 10:13:33 +00:00
Vadim Zeitlin
4cb0e8d05c Fix wxConvAuto behaviour when it is used by wxTextInputStream.
wxConvAuto implicitly supposed that the chunk of data passed to it for
translation was big enough to allow it to at least detect the BOM from it.
However this isn't necessarily the case and never is with wxTextInputStream
which reads the bytes one by one.

Fix this by waiting until we have enough data to be able to detect the BOM.
This still doesn't fix the problem with streams without BOM and the
corresponding unit test still fails -- it will need to be fixed at the level
of wxTextInputStream itself later but handling correctly the cases when a BOM
is present is already better than before.

See #11570.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63064 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-04 12:22:49 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
ca8cf4fffb 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
2008-06-01 03:09:25 +00:00
Paul Cornett
c22eea9c9f speed up ReadWord by using more efficient separator searching
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-08 06:05:07 +00:00
Stefan Csomor
0ad76eea22 cleanup mac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-22 14:21:36 +00:00
Vadim Zeitlin
e20d1329b5 undo revision 48162 as it broke unit tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-09-15 00:03:47 +00:00
Julian Smart
253170d634 Don't hang in ReadLine when there's no input left
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-08-18 12:25:23 +00:00
Václav Slavík
d3e9a6f3bf have only one string form of operator<< in output streams
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-22 11:12:21 +00:00
Václav Slavík
0bf751e7e9 compilation fixes for PCH-less build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-11 06:10:37 +00:00
Václav Slavík
8650108199 don't use implicit wxString->char*/wchar_t* conversion, it will not be available in wxUSE_STL build in the future
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-10 17:42:41 +00:00
Michael Wetherell
f36b3a915e Fixed ReadLine missing last character from text files with no final newline.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41037 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-06 21:43:19 +00:00
Włodzimierz Skiba
40ff126ac4 Deprecated and obsolete parts marked up for backward compatibility.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-14 17:01:16 +00:00
Vadim Zeitlin
bfaee57e81 really fixed number of bytes written in WriteString() in Unicode mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-05 23:19:09 +00:00
Vadim Zeitlin
3793402c74 also fixed WriteString() to work correctly when outputting UTF-16/32: can't use strlen() with these encodings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-05 16:28:29 +00:00
Vadim Zeitlin
d7f73361b9 fixed NextChar() to read the entire character at once as before it stopped on the first byte for ASCII input encoded as UTF-32LE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-05 16:17:58 +00:00
Vadim Zeitlin
d36c9347ea added wxMBConv::Clone() to be able to copy conversion objects polymorphically
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-05 16:10:08 +00:00
Vadim Zeitlin
830f8f11bc 1. changed all "wxMBConv& conv" parameters to "const wxMBConv&"
2. this allows to use wxConvAuto() instead of wxConvUTF8 as default value
   for this parameter in the classes which read text from the file: wxConvAuto
   automatically recognizes the BOM at the start of file and uses the correct
   conversion
3. don't use Windows for UTF-7 conversions as there is no way to make it
   fail on invalid UTF-7 strings; use our own wxMBConvUtf7 instead


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-05 14:37:47 +00:00
Vadim Zeitlin
17a1ebd101 first round of Intel compiler warning fixes: down from a few thousands just to slightly more than 100
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-09-25 19:59:19 +00:00
Mart Raudsepp
8907154c1a Nuke #pragma implementation/interface's
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-09-23 12:56:45 +00:00
Włodzimierz Skiba
7448de8d8d [1231183] 'cleanup: mismatched indentation' and other cleanings.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34914 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-07-22 17:08:42 +00:00
Ryan Norton
ba8546912d wxTextOutputStream::PutChar and text stream test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-11-21 18:26:38 +00:00
Vadim Zeitlin
fcbe123e48 added operator>>(wchar_t)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-11-16 12:07:03 +00:00
Ryan Norton
ed5f2bd879 fix technical accuracy of statement
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-11-15 07:20:35 +00:00
Ryan Norton
876f6cee1f fix for [ 1066432 ] wxTextOutputStream: endl doesn't work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-11-15 06:59:44 +00:00
Włodzimierz Skiba
cb719f2e29 Source cleaning: whitespaces, tabs, -1/wxID_ANY/wxNOT_FOUND/wxDefaultCoord, TRUE/true, FALSE/false, !!/!IsEmpty().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-09-23 18:20:56 +00:00
Vadim Zeitlin
e4940febd0 only define operator<<(wchar_t) in Unicode build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29114 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-09-12 15:08:36 +00:00
Vadim Zeitlin
65a1bb98f5 compilation fix after last commit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-09-12 11:54:41 +00:00
Vadim Zeitlin
3ca1bf5add overload operator<<() for wchar_t too (if applicable/possible); this fixes the problem with << '\n' producing '10' on output
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-09-11 18:42:58 +00:00
Julian Smart
655719367a Use old licence name
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-05-23 20:53:33 +00:00
Julian Smart
77ffb5937e Name and version changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-05-23 14:56:36 +00:00
Vadim Zeitlin
999836aaca warning fixes for BCC and OW (heavily modified patch 819146)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-10-16 10:28:15 +00:00
Václav Slavík
14f355c2b5 added support for gcc precompiled headers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-08-09 12:46:53 +00:00
Vadim Zeitlin
2348a84293 made wxTextInputStream Unicode safe and general cleanup (patch 653775)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21825 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-07-09 22:55:57 +00:00
Julian Smart
55d99c7a77 Fixed copyrights and licence spelling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-03-17 11:28:33 +00:00
Vadim Zeitlin
2b5f62a0b2 merged 2.4 branch into the trunk
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18040 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-04 14:11:26 +00:00