]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxMBConv parameter for wxFFile::ReadAll() and documented it (improved patch...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Feb 2005 15:53:04 +0000 (15:53 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Feb 2005 15:53:04 +0000 (15:53 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/ffile.tex
include/wx/ffile.h
src/common/ffile.cpp

index bffd44543c43d103a86ec55ac3baf8e52a4585ac..6f30ee88300b1839893b5655359b2b2056e262eb 100644 (file)
@@ -51,6 +51,7 @@ All:
 - Various changes to how wxListCtrl and wxTreeCtrl react to right
   mouse clicks and left mouse click for starting a drag operation.
 - "Alt" key (VK_MENU) now results in WXK_ALT keyboard event, not WXK_MENU
+- wxFFile::ReadAll() now takes an optional wxMBConv parameter
 
 
 All (GUI):
index 3db99c9ffd6ceba75c6d37045b1a606a0a896521..569fa17f0aefa5216c63d5049402336b21f51204 100644 (file)
@@ -208,6 +208,24 @@ Reads the specified number of bytes into a buffer, returning the actual number r
 The number of bytes read.
 
 
+\membersection{wxFFile::ReadAll}\label{wxffilereadall}
+
+\func{bool}{ReadAll}{\param{wxString *}{ str}, \param{wxMBConv\&}{ conv = wxConvUTF8}}
+
+Reads the entire contents of the file into a string.
+
+\wxheading{Parameters}
+
+\docparam{str}{String to read data into.}
+
+\docparam{conv}{Conversion object to use in Unicode build; by default supposes
+that file contents is encoded in UTF-8.}
+
+\wxheading{Return value}
+
+\true if file was read successfully, \false otherwise.
+
+
 \membersection{wxFFile::Seek}\label{wxffileseek}
 
 \func{bool}{Seek}{\param{wxFileOffset }{ofs}, \param{wxSeekMode }{mode = wxFromStart}}
index f61a97fd299d003a7fccf3a39f36d784f5d5070c..6b63bded48a9857d956e2917ff67591eec57358f 100644 (file)
@@ -60,7 +60,7 @@ public:
 
   // read/write (unbuffered)
     // read all data from the file into a string (useful for text files)
-  bool ReadAll(wxString *str);
+  bool ReadAll(wxString *str, wxMBConv& conv = wxConvUTF8);
     // returns number of bytes read - use Eof() and Error() to see if an error
     // occured or not
   size_t Read(void *pBuf, size_t nCount);
index 736bbea55f9717f1778d24470b6851ecb2cab0dd..42a43f2cb4865b3fc93e2f1630d92768654af9fc 100644 (file)
@@ -103,7 +103,7 @@ bool wxFFile::Close()
 // read/write
 // ----------------------------------------------------------------------------
 
-bool wxFFile::ReadAll(wxString *str)
+bool wxFFile::ReadAll(wxString *str, wxMBConv& conv)
 {
     wxCHECK_MSG( str, false, wxT("invalid parameter") );
     wxCHECK_MSG( IsOpened(), false, wxT("can't read from closed file") );
@@ -113,26 +113,18 @@ bool wxFFile::ReadAll(wxString *str)
 
     clearerr(m_fp);
 
-    str->Empty();
-    str->Alloc(length);
-
-    wxChar buf[1024];
-    static const size_t nSize = WXSIZEOF(buf) - 1; // -1 for trailing '\0'
-    while ( !Eof() )
+    const size_t fileLen = Length();
+    wxCharBuffer buf(fileLen + 1);
+    if ( (fread(buf.data(), sizeof(char), fileLen, m_fp) < fileLen) || Error() ) 
     {
-        size_t nRead = fread(buf, sizeof(wxChar), nSize, m_fp);
-        if ( (nRead < nSize) && Error() )
-        {
-            wxLogSysError(_("Read error on file '%s'"), m_name.c_str());
-
-            return false;
-        }
-        //else: just EOF
+        wxLogSysError(_("Read error on file '%s'"), m_name.c_str());
 
-        buf[nRead] = 0;
-        *str += buf;
+        return false;
     }
 
+    buf.data()[fileLen] = 0;
+    *str = wxString(buf, conv);
+
     return true;
 }