]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wxexpr.cpp
Changed values passed to SetClientSize() in CreateWidgets() so that buttons are not...
[wxWidgets.git] / src / common / wxexpr.cpp
index 0b5a9caa49ef10c4b0b5057dcbcde31a2edbea53..08f4affcd73779f3dc011214bbfc4e1974ee2d65 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,43 +707,38 @@ 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;
-      wxWX2MBbuf val = wxConv_libc.cWX2MB(value.string);
+      const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string);
       int len = strlen(val);
       for (i = 0; i < len; i++)
       {
         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:
     {
       bool quote_it = FALSE;
-      wxWX2MBbuf val = wxConv_libc.cWX2MB(value.word);
+      const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.word);
       int len = strlen(val);
       if ((len == 0) || (len > 0 && (val[0] > 64 && val[0] < 91)))
         quote_it = TRUE;
@@ -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,49 +796,6 @@ void wxExpr::WriteExpr(ostream& stream)    // Write as any other subexpression
   }
 }
 
-void wxExpr::WriteLispExpr(ostream& stream)
-{
-  switch (type)
-  {
-    case wxExprInteger:
-    {
-      stream << value.integer;
-      break;
-    }
-    case wxExprReal:
-    {
-      stream << value.real;
-      break;
-    }
-    case wxExprString:
-    {
-      stream << "\"" << value.string << "\"";
-      break;
-    }
-    case wxExprWord:
-    {
-      stream << value.word;
-      break;
-    }
-    case wxExprList:
-    {
-      wxExpr *expr = value.first;
-
-      stream << "(";
-      while (expr)
-      {
-        expr->WriteLispExpr(stream);
-        expr = expr->next;
-        if (expr) stream << " ";
-      }
-
-      stream << ")";
-      break;
-    }
-   case wxExprNull: break;
-  }
-}
-
 /*
  * wxExpr 'database' (list of expressions)
  */
@@ -1070,7 +1017,7 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer)
   noErrors = 0;
   thewxExprDatabase = this;
 
-  wxWX2MBbuf buf = buffer.mb_str();
+  const wxWX2MBbuf buf = buffer.mb_str();
   LexFromString(MBSTRINGCAST buf);
   yyparse();
   wxExprCleanUp();
@@ -1079,13 +1026,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,19 +1047,6 @@ bool wxExprDatabase::Write(ostream& stream)
   return (noErrors == 0);
 }
 
-void wxExprDatabase::WriteLisp(ostream& stream)
-{
-  noErrors = 0;
-  wxNode *node = First();
-  while (node)
-  {
-    wxExpr *expr = (wxExpr *)node->Data();
-    expr->WriteLispExpr(stream);
-    stream << "\n\n";
-    node = node->Next();
-  }
-}
-
 void add_expr(wxExpr * expr)
 {
   thewxExprDatabase->Append(expr);
@@ -1195,15 +1131,15 @@ char *wxmake_string(char *str)
 {
   wxChar *s, *t;
   int len, i;
-  wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str);
+  const wxMB2WXbuf sbuf = wxConvLibc.cMB2WX(str);
 
-  str++;                       /* skip leading quote */
+//  str++;                     /* skip leading quote */
   len = wxStrlen(sbuf) - 1;    /* ignore trailing quote */
     
   s = new wxChar[len + 1];
     
   t = s;
-  for(i=0; i<len; i++)
+  for(i=1; i<len; i++) // 1 since we want to skip leading quote
   {
     if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('"'))
     {