]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/textfile.cpp
Added OLE automation sample, changed BC++ makefiles
[wxWidgets.git] / src / common / textfile.cpp
index f52f9480a57f034b9b17a50f873b7b8a8339f874..c09b7e86473895d8694f75a2b91647cb6ce41d29 100644 (file)
 
 // default type is the native one
 const wxTextFile::Type wxTextFile::typeDefault = wxTextFile::
 
 // default type is the native one
 const wxTextFile::Type wxTextFile::typeDefault = wxTextFile::
-#if   defined(__WXMSW__)
+#if   defined(__WINDOWS__)
   Type_Dos;
 #elif defined(__UNIX__)
   Type_Unix;
   Type_Dos;
 #elif defined(__UNIX__)
   Type_Unix;
-#elif defined(__MAC__)
+#elif defined(__WXMAC__)
   Type_Mac;
   Type_Mac;
-  // if you feel brave, remove the next line
-  #error  "wxTextFile: code for Mac files is untested."
 #else
   Type_None;
   #error  "wxTextFile: unsupported platform."
 #else
   Type_None;
   #error  "wxTextFile: unsupported platform."
@@ -101,13 +99,13 @@ wxTextFile::Type wxTextFile::GuessType() const
   wxASSERT( m_file.IsOpened() && m_file.Tell() == 0 );
 
   // scan the file lines
   wxASSERT( m_file.IsOpened() && m_file.Tell() == 0 );
 
   // scan the file lines
-  uint nUnix = 0,     // number of '\n's alone
+  size_t nUnix = 0,     // number of '\n's alone
        nDos  = 0,     // number of '\r\n'
        nMac  = 0;     // number of '\r's
 
   // we take MAX_LINES_SCAN in the beginning, middle and the end of file
   #define MAX_LINES_SCAN    (10)
        nDos  = 0,     // number of '\r\n'
        nMac  = 0;     // number of '\r's
 
   // we take MAX_LINES_SCAN in the beginning, middle and the end of file
   #define MAX_LINES_SCAN    (10)
-  uint nCount = m_aLines.Count() / 3,
+  size_t nCount = m_aLines.Count() / 3,
        nScan =  nCount > 3*MAX_LINES_SCAN ? MAX_LINES_SCAN : nCount / 3;
 
   #define   AnalyseLine(n)              \
        nScan =  nCount > 3*MAX_LINES_SCAN ? MAX_LINES_SCAN : nCount / 3;
 
   #define   AnalyseLine(n)              \
@@ -118,7 +116,7 @@ wxTextFile::Type wxTextFile::GuessType() const
       default: wxFAIL_MSG(_("unknown line terminator")); \
     }
 
       default: wxFAIL_MSG(_("unknown line terminator")); \
     }
 
-  uint n;
+  size_t n;
   for ( n = 0; n < nScan; n++ )     // the beginning
     AnalyseLine(n);
   for ( n = (nCount - nScan)/2; n < (nCount + nScan)/2; n++ )
   for ( n = 0; n < nScan; n++ )     // the beginning
     AnalyseLine(n);
   for ( n = (nCount - nScan)/2; n < (nCount + nScan)/2; n++ )
@@ -170,10 +168,6 @@ bool wxTextFile::Read()
       return FALSE;
     }
 
       return FALSE;
     }
 
-    #ifdef  __MAC__
-      #pragma message("wxTextFile::Read() hasn't been tested with Mac files.")
-    #endif
-
     for ( n = 0; n < nRead; n++ ) {
       ch = buf[n];
       switch ( ch ) {
     for ( n = 0; n < nRead; n++ ) {
       ch = buf[n];
       switch ( ch ) {
@@ -200,6 +194,7 @@ bool wxTextFile::Read()
             // Mac line termination
             m_aLines.Add(str);
             m_aTypes.Add(Type_Mac);
             // Mac line termination
             m_aLines.Add(str);
             m_aTypes.Add(Type_Mac);
+            chLast = ch;
             str = ch;
           }
           else {
             str = ch;
           }
           else {
@@ -228,8 +223,8 @@ bool wxTextFile::Write(Type typeNew)
     return FALSE;
   }
 
     return FALSE;
   }
 
-  uint nCount = m_aLines.Count();
-  for ( uint n = 0; n < nCount; n++ ) {
+  size_t nCount = m_aLines.Count();
+  for ( size_t n = 0; n < nCount; n++ ) {
     fileTmp.Write(m_aLines[n] +
                   GetEOL(typeNew == Type_None ? m_aTypes[n] : typeNew));
   }
     fileTmp.Write(m_aLines[n] +
                   GetEOL(typeNew == Type_None ? m_aTypes[n] : typeNew));
   }
@@ -237,3 +232,18 @@ bool wxTextFile::Write(Type typeNew)
   // replace the old file with this one
   return fileTmp.Commit();
 }
   // replace the old file with this one
   return fileTmp.Commit();
 }
+
+const char *wxTextFile::GetEOL(Type type)
+  {
+    switch ( type ) {
+      case Type_None: return "";
+      case Type_Unix: return "\n";
+      case Type_Dos:  return "\r\n";
+      case Type_Mac:  return "\r";
+
+      default:
+        wxFAIL_MSG("bad file type in wxTextFile::GetEOL.");
+        return (const char *) NULL;
+    }
+  }
+