]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wxexpr.cpp
Added chapter on collection and container classes to contents
[wxWidgets.git] / src / common / wxexpr.cpp
index 67e5f100e78682f5e8dfb8de32005828d3282846..2abeffce01c80097e41e101c424056b0cee24e86 100644 (file)
@@ -275,12 +275,12 @@ wxExpr *wxExpr::AttributeValue(const wxString& word) const // Use only for a cla
 wxString wxExpr::Functor(void) const // Use only for a clause
 {
   if ((type != wxExprList) || !value.first)
-    return wxString(_T(""));
+    return wxString(wxT(""));
 
   if (value.first->type == wxExprWord)
     return wxString(value.first->value.word);
   else
-    return wxString(_T(""));
+    return wxString(wxT(""));
 }
 
 bool wxExpr::IsFunctor(const wxString& f) const  // Use only for a clause
@@ -390,7 +390,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, wxExpr *val)
 //  DeleteAttributeValue(attribute);
 
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr = new wxExpr(wxExprList);
 
@@ -414,7 +414,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, long val)
 
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
   wxExpr *pval = new wxExpr(val);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr = new wxExpr(wxExprList);
 
@@ -436,7 +436,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, double val)
 //  DeleteAttributeValue(attribute);
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
   wxExpr *pval = new wxExpr(val);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr = new wxExpr(wxExprList);
 
@@ -459,7 +459,7 @@ void wxExpr::AddAttributeValueString(const wxString& attribute, const wxString&
 
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
   wxExpr *pval = new wxExpr(wxExprString, val);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr = new wxExpr(wxExprList);
 
@@ -482,7 +482,7 @@ void wxExpr::AddAttributeValueWord(const wxString& attribute, const wxString& va
 
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
   wxExpr *pval = new wxExpr(wxExprWord, val);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr = new wxExpr(wxExprList);
 
@@ -507,7 +507,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, wxList *val)
 
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
   wxExpr *pval = new wxExpr(val);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr = new wxExpr(wxExprList);
 
@@ -543,7 +543,7 @@ void wxExpr::AddAttributeValueStringList(const wxString& attribute, wxList *stri
 
   // Now make an (=, Att, Value) triple
   wxExpr *patt = new wxExpr(wxExprWord, attribute);
-  wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
+  wxExpr *pequals = new wxExpr(wxExprWord, wxT("="));
 
   wxExpr *listExpr2 = new wxExpr(wxExprList);
 
@@ -719,17 +719,17 @@ void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
     case wxExprString:
     {
       fprintf( stream, "\"" );
-      int i;
+      size_t i;
       const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string);
-      int len = strlen(val);
+      size_t len = strlen(val);
       for (i = 0; i < len; i++)
       {
         char ch = val[i];
         if (ch == '"' || ch == '\\')
-         fprintf( stream, "\\" );
-       char tmp[2];
-       tmp[0] = ch;
-       tmp[1] = 0;
+        fprintf( stream, "\\" );
+        char tmp[2];
+        tmp[0] = ch;
+        tmp[1] = 0;
         fprintf( stream, tmp );
       }
       fprintf( stream, "\"" );
@@ -739,12 +739,12 @@ void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
     {
       bool quote_it = FALSE;
       const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.word);
-      int len = strlen(val);
-      if ((len == 0) || (len > 0 && (val[0] > 64 && val[0] < 91)))
+      size_t len = strlen(val);
+      if ((len == 0) || (len > 0 && (val[(size_t) 0] > 64 && val[(size_t) 0] < 91)))
         quote_it = TRUE;
       else
       {
-        int i;
+        size_t i;
         for (i = 0; i < len; i++)
           if ((!isalpha(val[i])) && (!isdigit(val[i])) &&
               (val[i] != '_'))
@@ -754,7 +754,7 @@ void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
       if (quote_it)
         fprintf( stream ,"'" );
 
-      fprintf( stream, (const char*) val );
+      fprintf( stream, val );
 
       if (quote_it)
         fprintf( stream, "'" );
@@ -769,7 +769,7 @@ void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
       {
         wxExpr *expr = value.first;
 
-        if ((expr->Type() == wxExprWord) && (wxStrcmp(expr->WordValue(), _T("=")) == 0))
+        if ((expr->Type() == wxExprWord) && (wxStrcmp(expr->WordValue(), wxT("=")) == 0))
         {
           wxExpr *arg1 = expr->next;
           wxExpr *arg2 = arg1->next;
@@ -785,7 +785,7 @@ void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
             expr->WriteExpr(stream);
             expr = expr->next;
             if (expr) 
-             fprintf( stream, ", " );
+               fprintf( stream, ", " );
           }
           fprintf( stream, "]" );
         }
@@ -796,61 +796,11 @@ void wxExpr::WriteExpr(FILE* stream)    // Write as any other subexpression
   }
 }
 
-void wxExpr::WriteLispExpr(FILE* stream)
-{
-  switch (type)
-  {
-    case wxExprInteger:
-    {
-      fprintf( stream, "%ld", value.integer );
-      break;
-    }
-    case wxExprReal:
-    {
-      fprintf( stream, "%.6g", value.real );
-      break;
-    }
-    case wxExprString:
-    {
-      fprintf( stream, "\"" );
-      const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string);
-      fprintf( stream, (const char*) val );
-      fprintf( stream, "\"" );
-      break;
-    }
-    case wxExprWord:
-    {
-      const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.word);
-      fprintf( stream, (const char*) val );
-      break;
-    }
-    case wxExprList:
-    {
-      wxExpr *expr = value.first;
-
-      fprintf( stream, "(" );
-      while (expr)
-      {
-        expr->WriteLispExpr(stream);
-        expr = expr->next;
-        if (expr) 
-         fprintf( stream, " " );
-      }
-
-      fprintf( stream, ")" );
-      break;
-    }
-   case wxExprNull: break;
-  }
-}
-
 /*
  * wxExpr 'database' (list of expressions)
  */
  
-#if !USE_SHARED_LIBRARIES
 IMPLEMENT_DYNAMIC_CLASS(wxExprDatabase, wxList)
-#endif
 
 wxExprDatabase::wxExprDatabase(wxExprErrorHandler handler)
 {
@@ -1042,7 +992,7 @@ bool wxExprDatabase::Read(const wxString& filename)
 {
   noErrors = 0;
 
-  FILE *f = fopen(filename.fn_str(), "r");
+  FILE *f = wxFopen(filename, _T("r"));
   if (f)
   {
     thewxExprDatabase = this;
@@ -1066,7 +1016,7 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer)
   thewxExprDatabase = this;
 
   const wxWX2MBbuf buf = buffer.mb_str();
-  LexFromString(MBSTRINGCAST buf);
+  LexFromString(wxMBSTRINGCAST buf);
   yyparse();
   wxExprCleanUp();
   return (noErrors == 0);
@@ -1074,12 +1024,14 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer)
 
 bool wxExprDatabase::Write(const wxString& fileName)
 {
-  FILE *stream = fopen( fileName.fn_str(), "w+" );
+  FILE *stream = wxFopen( fileName, _T("w+"));
   
   if (!stream)
     return FALSE;
     
-  return Write(stream);
+  bool success = Write(stream);
+  fclose(stream);
+  return success;
 }
 
 bool wxExprDatabase::Write(FILE *stream)
@@ -1095,19 +1047,6 @@ bool wxExprDatabase::Write(FILE *stream)
   return (noErrors == 0);
 }
 
-void wxExprDatabase::WriteLisp(FILE* stream)
-{
-  noErrors = 0;
-  wxNode *node = First();
-  while (node)
-  {
-    wxExpr *expr = (wxExpr *)node->Data();
-    expr->WriteLispExpr(stream);
-    fprintf( stream, "\n\n" );
-    node = node->Next();
-  }
-}
-
 void add_expr(wxExpr * expr)
 {
   thewxExprDatabase->Append(expr);
@@ -1191,7 +1130,7 @@ char *wxmake_word(char *str)
 char *wxmake_string(char *str)
 {
   wxChar *s, *t;
-  int len, i;
+  size_t len, i;
   const wxMB2WXbuf sbuf = wxConvLibc.cMB2WX(str);
 
 //  str++;                     /* skip leading quote */
@@ -1202,21 +1141,21 @@ char *wxmake_string(char *str)
   t = s;
   for(i=1; i<len; i++) // 1 since we want to skip leading quote
   {
-    if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('"'))
+    if (sbuf[i] == wxT('\\') && sbuf[i+1] == wxT('"'))
     {
-      *t++ = _T('"');
+      *t++ = wxT('"');
       i ++;
     }
-    else if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('\\'))
+    else if (sbuf[i] == wxT('\\') && sbuf[i+1] == wxT('\\'))
     {
-      *t++ = _T('\\');
+      *t++ = wxT('\\');
       i ++;
     }
     else
       *t++ = sbuf[i];
   }
 
-  *t = _T('\0');
+  *t = wxT('\0');
 
   wxExpr *x = new wxExpr(wxExprString, s, FALSE);
   return (char *)x;