]> git.saurik.com Git - wxWidgets.git/commitdiff
Replaced ostream with FILE* in wxExpr.
authorRobert Roebling <robert@roebling.de>
Sun, 27 Jun 1999 22:37:41 +0000 (22:37 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 27 Jun 1999 22:37:41 +0000 (22:37 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

acconfig.h
configure.in
include/wx/wxexpr.h
src/common/wxexpr.cpp

index 8a6cd9cff930efd4bd981137bda10965413c8519..b19c84594cba5cbbab7c8e2bb62f3ddef704abde 100644 (file)
  * Use standard C++ streams if 1. If 0, use wxWin
  * streams implementation.
  */
-#define wxUSE_STD_IOSTREAM  1
+#define wxUSE_STD_IOSTREAM  0
 /*
  * wxLibrary class
  */
index b047a82156a8cba83ac893557e37a49511392f35..21ffaa8a7b3c5da974c843bd721e8058baa8389c 100644 (file)
@@ -250,6 +250,7 @@ if test $DEBUG_CONFIGURE = 1; then
   DEFAULT_wxUSE_LIBJPEG=no
   DEFAULT_wxUSE_ODBC=no
 
+  DEFAULT_wxUSE_STD_IOSTREAM=no
   DEFAULT_wxUSE_FILE=no
   DEFAULT_wxUSE_TEXTFILE=no
   DEFAULT_wxUSE_TIMEDATE=no
@@ -347,6 +348,7 @@ else
   DEFAULT_wxUSE_LIBJPEG=yes
   DEFAULT_wxUSE_ODBC=no
 
+  DEFAULT_wxUSE_STD_IOSTREAM=yes
   DEFAULT_wxUSE_FILE=yes
   DEFAULT_wxUSE_TEXTFILE=yes
   DEFAULT_wxUSE_TIMEDATE=yes
@@ -500,24 +502,25 @@ dnl ---------------------------------------------------------------------------
 dnl (small) optional non GUI classes
 dnl ---------------------------------------------------------------------------
 
-WX_ARG_ENABLE(intl,        [  --enable-intl           use internationalization system], wxUSE_INTL)
-WX_ARG_ENABLE(config,      [  --enable-config         use wxConfig (and derived) classes], wxUSE_CONFIG)
-WX_ARG_ENABLE(sockets,     [  --enable-sockets        use socket/network classes], wxUSE_SOCKETS)
-WX_ARG_ENABLE(ipc,         [  --enable-ipc            use interprocess communication (wxSocket etc.)], wxUSE_IPC)
-WX_ARG_ENABLE(apple_ieee,  [  --enable-apple_ieee     use the Apple IEEE codec], wxUSE_APPLE_IEEE)
-WX_ARG_ENABLE(timedate,    [  --enable-timedate       use date/time classes], wxUSE_TIMEDATE)
-WX_ARG_ENABLE(wave,        [  --enable-wave           use wxWave class], wxUSE_WAVE)
-WX_ARG_ENABLE(fraction,    [  --enable-fraction       use wxFraction class], wxUSE_FRACTION)
-WX_ARG_ENABLE(dynlib,      [  --enable-dynlib         use wxLibrary class for DLL loading], wxUSE_DYNLIB_CLASS)
-WX_ARG_ENABLE(longlong,    [  --enable-longlong       use wxLongLong class], wxUSE_LONGLONG)
-WX_ARG_ENABLE(log,         [  --enable-log            use logging system], wxUSE_LOG)
-WX_ARG_ENABLE(streams,     [  --enable-streams        use wxStream etc classes], wxUSE_STREAMS)
-WX_ARG_ENABLE(file,        [  --enable-file           use wxFile classes], wxUSE_FILE)
-WX_ARG_ENABLE(textfile,    [  --enable-textfile       use wxTextFile classes], wxUSE_TEXTFILE)
-WX_ARG_ENABLE(unicode,     [  --enable-unicode        compile wxString with Unicode support], wxUSE_UNICODE)
-WX_ARG_ENABLE(wcsrtombs,   [  --enable-wcsrtombs      use wcsrtombs instead of buggy (GNU libc1/Linux libc5) wcstombs], wxUSE_WCSRTOMBS)
-WX_ARG_ENABLE(wxprintfv,   [  --enable-wxprintfv      use wxWindows implementation of vprintf()], wxUSE_EXPERIMENTAL_PRINTF)
-WX_ARG_ENABLE(joystick,    [  --enable-joystick       compile in joystick support (Linux only)], wxUSE_JOYSTICK)
+WX_ARG_ENABLE(intl,          [  --enable-intl           use internationalization system], wxUSE_INTL)
+WX_ARG_ENABLE(config,        [  --enable-config         use wxConfig (and derived) classes], wxUSE_CONFIG)
+WX_ARG_ENABLE(sockets,       [  --enable-sockets        use socket/network classes], wxUSE_SOCKETS)
+WX_ARG_ENABLE(ipc,           [  --enable-ipc            use interprocess communication (wxSocket etc.)], wxUSE_IPC)
+WX_ARG_ENABLE(apple_ieee,    [  --enable-apple_ieee     use the Apple IEEE codec], wxUSE_APPLE_IEEE)
+WX_ARG_ENABLE(timedate,      [  --enable-timedate       use date/time classes], wxUSE_TIMEDATE)
+WX_ARG_ENABLE(wave,          [  --enable-wave           use wxWave class], wxUSE_WAVE)
+WX_ARG_ENABLE(fraction,      [  --enable-fraction       use wxFraction class], wxUSE_FRACTION)
+WX_ARG_ENABLE(dynlib,        [  --enable-dynlib         use wxLibrary class for DLL loading], wxUSE_DYNLIB_CLASS)
+WX_ARG_ENABLE(longlong,      [  --enable-longlong       use wxLongLong class], wxUSE_LONGLONG)
+WX_ARG_ENABLE(log,           [  --enable-log            use logging system], wxUSE_LOG)
+WX_ARG_ENABLE(streams,       [  --enable-streams        use wxStream etc classes], wxUSE_STREAMS)
+WX_ARG_ENABLE(file,          [  --enable-file           use wxFile classes], wxUSE_FILE)
+WX_ARG_ENABLE(textfile,      [  --enable-textfile       use wxTextFile classes], wxUSE_TEXTFILE)
+WX_ARG_ENABLE(unicode,       [  --enable-unicode        compile wxString with Unicode support], wxUSE_UNICODE)
+WX_ARG_ENABLE(wcsrtombs,     [  --enable-wcsrtombs      use wcsrtombs instead of buggy (GNU libc1/Linux libc5) wcstombs], wxUSE_WCSRTOMBS)
+WX_ARG_ENABLE(wxprintfv,     [  --enable-wxprintfv      use wxWindows implementation of vprintf()], wxUSE_EXPERIMENTAL_PRINTF)
+WX_ARG_ENABLE(joystick,      [  --enable-joystick       compile in joystick support (Linux only)], wxUSE_JOYSTICK)
+WX_ARG_ENABLE(std_iostreams, [  --enable-std_iostreams  use standard C++ stream classes], wxUSE_STD_IOSTREAM)
 
 dnl ---------------------------------------------------------------------------
 dnl "big" options (i.e. those which change a lot of things throughout the library)
@@ -1533,6 +1536,10 @@ if test "$wxUSE_FILE" = "yes"; then
   AC_DEFINE(wxUSE_FILE)
 fi
 
+if test "$wxUSE_STD_IOSTREAM" = "yes"; then
+  AC_DEFINE(wxUSE_STD_IOSTREAM)
+fi
+
 if test "$wxUSE_TEXTFILE" = "yes"; then
   if test "$wxUSE_FILE" != "yes"; then
     AC_MSG_WARN(wxTextFile requires wxFile and it won't be compiled without it)
index 756cf639157547b85351a95ad02148741216ec06..30d32fda623b260344a189db05760b378c868ee4 100644 (file)
@@ -21,8 +21,6 @@
 #include "wx/defs.h"
 #include "wx/string.h"
 
-#include "wx/ioswrap.h"
-
 #include "wx/list.h"
 #include "wx/hash.h"
 
@@ -141,9 +139,9 @@ class WXDLLEXPORT wxExpr
   wxExpr *AttributeValue(const wxString& word) const;  // Use only for a clause
   wxString Functor(void) const;                     // Only for a clause
   bool IsFunctor(const wxString& s) const;                     // Only for a clause
-  void WriteClause(ostream& stream);  // Write this expression as a top-level clause
-  void WriteExpr(ostream& stream);    // Write as any other subexpression
-  void WriteLispExpr(ostream& stream);
+  void WriteClause(FILE* stream);  // Write this expression as a top-level clause
+  void WriteExpr(FILE* stream);    // Write as any other subexpression
+  void WriteLispExpr(FILE* stream);
 
   // Append an expression to a list
   void Append(wxExpr *expr);
@@ -244,13 +242,13 @@ public:
     bool Read(const wxString& filename);
     bool ReadFromString(const wxString& buffer);
     bool Write(const wxString& fileName);
-    bool Write(ostream& stream);
-    void WriteLisp(ostream& stream);
+    bool Write(FILE* stream);
+    void WriteLisp(FILE* stream);
 
     // Compatibility
     inline bool ReadProlog(wxChar *filename) { return Read(wxString(filename)); }
     inline bool ReadPrologFromString(char *buffer) { return ReadFromString(wxString(buffer)); }
-    inline void WriteProlog(ostream& stream) { Write(stream); }
+    inline void WriteProlog(FILE* stream) { Write(stream); }
 
 private:
     DECLARE_DYNAMIC_CLASS(wxExprDatabase)
index 41e4132e59d5abbfb6dbaf18f32176e79d065e48..67e5f100e78682f5e8dfb8de32005828d3282846 100644 (file)
 #pragma hdrstop
 #endif
 
-#if wxUSE_IOSTREAMH
-    #include <fstream.h>
-#else
-    #include <fstream>
-#endif
-
 #include <stdarg.h>
 #include <ctype.h>
 #include <string.h>
 
 #include "wx/utils.h"
-
 #include "wx/expr.h"
 #include "wx/wxexpr.h"
 
@@ -671,7 +664,7 @@ void wxExpr::AssignAttributeValue(wxChar *att, wxChar **var) const
   }
 }
 
-void wxExpr::WriteClause(ostream& stream)  // Write this expression as a top-level clause
+void wxExpr::WriteClause(FILE* stream)  // Write this expression as a top-level clause
 {
   if (type != wxExprList)
     return;
@@ -680,23 +673,24 @@ void wxExpr::WriteClause(ostream& stream)  // Write this expression as a top-lev
   if (node)
   {
     node->WriteExpr(stream);
-    stream << "(";
+    fprintf( stream, "(" );
     node = node->next;
     bool first = TRUE;
     while (node)
     {
       if (!first)
-        stream << "  ";
+        fprintf( stream, "  " );
       node->WriteExpr(stream);
       node = node->next;
-      if (node) stream << ",\n";
+      if (node) 
+        fprintf( stream, ",\n" );
       first = FALSE;
     }
-    stream << ").\n\n";
+    fprintf( stream, ").\n\n" );
   }
 }
 
-void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
+void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
 {
   // This seems to get round an optimizer bug when
   // using Watcom C++ 10a in WIN32 compilation mode.
@@ -713,25 +707,18 @@ void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
   {
     case wxExprInteger:
     {
-      stream << value.integer;
+      fprintf( stream, "%ld", value.integer );
       break;
     }
     case wxExprReal:
     {
       double f = value.real;
-/* Now the parser can cope with this.
-      // Prevent printing in 'e' notation. Any better way?
-      if (fabs(f) < 0.00001)
-        f = 0.0;
-*/
-      char buf[40];
-      sprintf(buf, "%.6g", f);
-      stream << buf;
+      fprintf( stream, "%.6g", f);
       break;
     }
     case wxExprString:
     {
-      stream << "\"";
+      fprintf( stream, "\"" );
       int i;
       const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string);
       int len = strlen(val);
@@ -739,11 +726,13 @@ void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
       {
         char ch = val[i];
         if (ch == '"' || ch == '\\')
-          stream << "\\";
-        stream << ch;
+         fprintf( stream, "\\" );
+       char tmp[2];
+       tmp[0] = ch;
+       tmp[1] = 0;
+        fprintf( stream, tmp );
       }
-
-      stream << "\"";
+      fprintf( stream, "\"" );
       break;
     }
     case wxExprWord:
@@ -763,19 +752,19 @@ void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
       }
 
       if (quote_it)
-        stream << "'";
+        fprintf( stream ,"'" );
 
-      stream << val;
+      fprintf( stream, (const char*) val );
 
       if (quote_it)
-        stream << "'";
+        fprintf( stream, "'" );
 
       break;
     }
     case wxExprList:
     {
       if (!value.first)
-        stream << "[]";
+        fprintf( stream, "[]" );
       else
       {
         wxExpr *expr = value.first;
@@ -785,19 +774,20 @@ void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
           wxExpr *arg1 = expr->next;
           wxExpr *arg2 = arg1->next;
           arg1->WriteExpr(stream);
-          stream << " = ";
+          fprintf( stream, " = " );
           arg2->WriteExpr(stream);
         }
         else
         {
-          stream << "[";
+          fprintf( stream, "[" );
           while (expr)
           {
             expr->WriteExpr(stream);
             expr = expr->next;
-            if (expr) stream << ", ";
+            if (expr) 
+             fprintf( stream, ", " );
           }
-          stream << "]";
+          fprintf( stream, "]" );
         }
       }
       break;
@@ -806,43 +796,48 @@ void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
   }
 }
 
-void wxExpr::WriteLispExpr(ostream& stream)
+void wxExpr::WriteLispExpr(FILE* stream)
 {
   switch (type)
   {
     case wxExprInteger:
     {
-      stream << value.integer;
+      fprintf( stream, "%ld", value.integer );
       break;
     }
     case wxExprReal:
     {
-      stream << value.real;
+      fprintf( stream, "%.6g", value.real );
       break;
     }
     case wxExprString:
     {
-      stream << "\"" << value.string << "\"";
+      fprintf( stream, "\"" );
+      const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string);
+      fprintf( stream, (const char*) val );
+      fprintf( stream, "\"" );
       break;
     }
     case wxExprWord:
     {
-      stream << value.word;
+      const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.word);
+      fprintf( stream, (const char*) val );
       break;
     }
     case wxExprList:
     {
       wxExpr *expr = value.first;
 
-      stream << "(";
+      fprintf( stream, "(" );
       while (expr)
       {
         expr->WriteLispExpr(stream);
         expr = expr->next;
-        if (expr) stream << " ";
+        if (expr) 
+         fprintf( stream, " " );
       }
 
-      stream << ")";
+      fprintf( stream, ")" );
       break;
     }
    case wxExprNull: break;
@@ -1079,13 +1074,15 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer)
 
 bool wxExprDatabase::Write(const wxString& fileName)
 {
-  ofstream str(MBSTRINGCAST fileName.mb_str());
-  if (str.bad())
+  FILE *stream = fopen( fileName.fn_str(), "w+" );
+  
+  if (!stream)
     return FALSE;
-  return Write(str);
+    
+  return Write(stream);
 }
 
-bool wxExprDatabase::Write(ostream& stream)
+bool wxExprDatabase::Write(FILE *stream)
 {
   noErrors = 0;
   wxNode *node = First();
@@ -1098,7 +1095,7 @@ bool wxExprDatabase::Write(ostream& stream)
   return (noErrors == 0);
 }
 
-void wxExprDatabase::WriteLisp(ostream& stream)
+void wxExprDatabase::WriteLisp(FILE* stream)
 {
   noErrors = 0;
   wxNode *node = First();
@@ -1106,7 +1103,7 @@ void wxExprDatabase::WriteLisp(ostream& stream)
   {
     wxExpr *expr = (wxExpr *)node->Data();
     expr->WriteLispExpr(stream);
-    stream << "\n\n";
+    fprintf( stream, "\n\n" );
     node = node->Next();
   }
 }