]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/tex2rtf/src/tex2any.cpp
added AddText() function (trivial wrapper around AddFile()), use it in debug rpt...
[wxWidgets.git] / utils / tex2rtf / src / tex2any.cpp
index d9227ab7216339e0a5cbba39ec0e5307855e3f8c..24eb9315207e999991538770f6a99da77c03eefb 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        tex2any.cpp
 // Purpose:     Utilities for Latex conversion.
 // Author:      Julian Smart
 // Name:        tex2any.cpp
 // Purpose:     Utilities for Latex conversion.
 // Author:      Julian Smart
-// Modified by: Wlodzimiez ABX Skiba 2003/2004 Unicode support
+// Modified by: Wlodzimierz ABX Skiba 2003/2004 Unicode support
 //              Ron Lee
 // Created:     01/01/99
 // RCS-ID:      $Id$
 //              Ron Lee
 // Created:     01/01/99
 // RCS-ID:      $Id$
@@ -113,7 +113,7 @@ bool            winHelp = false;  // Output in Windows Help format if true, line
 bool            isInteractive = false;
 bool            runTwice = false;
 int             convertMode = TEX_RTF;
 bool            isInteractive = false;
 bool            runTwice = false;
 int             convertMode = TEX_RTF;
-bool            checkCurleyBraces = false;
+bool            checkCurlyBraces = false;
 bool            checkSyntax = false;
 bool            headerRule = false;
 bool            footerRule = false;
 bool            checkSyntax = false;
 bool            headerRule = false;
 bool            footerRule = false;
@@ -428,8 +428,8 @@ bool readInVerbatim = false;  // Within a verbatim, but not nec. verbatiminput
 // detection of \verb yet.
 // #define CHECK_BRACES 1
 
 // detection of \verb yet.
 // #define CHECK_BRACES 1
 
-unsigned long leftCurley = 0;
-unsigned long rightCurley = 0;
+unsigned long leftCurly = 0;
+unsigned long rightCurly = 0;
 static wxString currentFileName = _T("");
 
 bool read_a_line(wxChar *buf)
 static wxString currentFileName = _T("");
 
 bool read_a_line(wxChar *buf)
@@ -463,22 +463,22 @@ bool read_a_line(wxChar *buf)
     lastChar = ch;
     ch = getc(Inputs[CurrentInputIndex]);
 
     lastChar = ch;
     ch = getc(Inputs[CurrentInputIndex]);
 
-    if (checkCurleyBraces)
+    if (checkCurlyBraces)
     {
         if (ch == '{' && !readInVerbatim && lastChar != _T('\\'))
     {
         if (ch == '{' && !readInVerbatim && lastChar != _T('\\'))
-           leftCurley++;
+           leftCurly++;
         if (ch == '}' && !readInVerbatim && lastChar != _T('\\'))
         {
         if (ch == '}' && !readInVerbatim && lastChar != _T('\\'))
         {
-           rightCurley++;
-           if (rightCurley > leftCurley)
+           rightCurly++;
+           if (rightCurly > leftCurly)
            {
                wxString errBuf;
            {
                wxString errBuf;
-               errBuf.Printf(_T("An extra right Curley brace ('}') was detected at line %lu inside file %s"), LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str());
+               errBuf.Printf(_T("An extra right Curly brace ('}') was detected at line %lu inside file %s"), LineNumbers[CurrentInputIndex], (const wxChar*) currentFileName.c_str());
                OnError((wxChar *)errBuf.c_str());
 
                OnError((wxChar *)errBuf.c_str());
 
-               // Reduce the count of right Curley braces, so the mismatched count
+               // Reduce the count of right Curly braces, so the mismatched count
                // isn't reported on every line that has a '}' after the first mismatch
                // isn't reported on every line that has a '}' after the first mismatch
-               rightCurley--;
+               rightCurly--;
            }
         }
     }
            }
         }
     }
@@ -639,17 +639,17 @@ bool read_a_line(wxChar *buf)
          ch = ' '; // No real end of file
       CurrentInputIndex --;
 
          ch = ' '; // No real end of file
       CurrentInputIndex --;
 
-      if (checkCurleyBraces)
+      if (checkCurlyBraces)
       {
       {
-          if (leftCurley != rightCurley)
+          if (leftCurly != rightCurly)
           {
             wxString errBuf;
           {
             wxString errBuf;
-            errBuf.Printf(_T("Curley braces do not match inside file %s\n%lu opens, %lu closes"),
-                          (const wxChar*) currentFileName.c_str(),leftCurley,rightCurley);
+            errBuf.Printf(_T("Curly braces do not match inside file %s\n%lu opens, %lu closes"),
+                          (const wxChar*) currentFileName.c_str(),leftCurly,rightCurly);
             OnError((wxChar *)errBuf.c_str());
           }
             OnError((wxChar *)errBuf.c_str());
           }
-          leftCurley = 0;
-          rightCurley = 0;
+          leftCurly = 0;
+          rightCurly = 0;
       }
 
       if (readingVerbatim)
       }
 
       if (readingVerbatim)
@@ -813,7 +813,7 @@ bool read_a_line(wxChar *buf)
   if (checkSyntax)
   {
       wxString bufStr = buf;
   if (checkSyntax)
   {
       wxString bufStr = buf;
-      for (int index=0; syntaxTokens[index] != wxEmptyString; index++)
+      for (int index=0; !syntaxTokens[index].empty(); index++)
       {
           size_t pos = bufStr.find(syntaxTokens[index]);
           if (pos != wxString::npos && pos != 0)
       {
           size_t pos = bufStr.find(syntaxTokens[index]);
           if (pos != wxString::npos && pos != 0)
@@ -849,13 +849,13 @@ bool read_a_line(wxChar *buf)
            wxStrncmp(buf, _T("\\end{toocomplex}"), 16) == 0)
     readInVerbatim = false;
 
            wxStrncmp(buf, _T("\\end{toocomplex}"), 16) == 0)
     readInVerbatim = false;
 
-  if (checkCurleyBraces)
+  if (checkCurlyBraces)
   {
   {
-      if (ch == EOF && leftCurley != rightCurley)
+      if (ch == EOF && leftCurly != rightCurly)
       {
         wxString errBuf;
       {
         wxString errBuf;
-        errBuf.Printf(_T("Curley braces do not match inside file %s\n%lu opens, %lu closes"),
-            (const wxChar*) currentFileName.c_str(),leftCurley,rightCurley);
+        errBuf.Printf(_T("Curly braces do not match inside file %s\n%lu opens, %lu closes"),
+            (const wxChar*) currentFileName.c_str(),leftCurly,rightCurly);
         OnError((wxChar *)errBuf.c_str());
       }
   }
         OnError((wxChar *)errBuf.c_str());
       }
   }
@@ -901,7 +901,7 @@ bool ParseNewCommand(wxChar *buffer, int *pos)
     int braceCount = 0;
     while (!end)
     {
     int braceCount = 0;
     while (!end)
     {
-      char ch = buffer[*pos];
+      wxChar ch = buffer[*pos];
       if (ch == _T('{'))
         braceCount ++;
       else if (ch == _T('}'))
       if (ch == _T('{'))
         braceCount ++;
       else if (ch == _T('}'))
@@ -942,7 +942,7 @@ void MacroError(wxChar *buffer)
   wxChar macroBuf[200];
   macroBuf[0] = '\\';
   int i = 1;
   wxChar macroBuf[200];
   macroBuf[0] = '\\';
   int i = 1;
-  char ch;
+  wxChar ch;
   while (((ch = buffer[i-1]) != '\n') && (ch != 0))
   {
     macroBuf[i] = ch;
   while (((ch = buffer[i-1]) != '\n') && (ch != 0))
   {
     macroBuf[i] = ch;
@@ -1093,15 +1093,15 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
       }
     }
 
       }
     }
 
-    char ch = buffer[pos];
+    wxChar wxCh = buffer[pos];
     // End of optional argument -- pretend it's right brace for simplicity
     // End of optional argument -- pretend it's right brace for simplicity
-    if (thisArg->optional && (ch == ']'))
-      ch = '}';
+    if (thisArg->optional && (wxCh == _T(']')))
+      wxCh = _T('}');
 
 
-    switch (ch)
+    switch (wxCh)
     {
       case 0:
     {
       case 0:
-      case '}':  // End of argument
+      case _T('}'):  // End of argument
       {
         if (buf_ptr > 0)
         {
       {
         if (buf_ptr > 0)
         {
@@ -1110,10 +1110,10 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
           chunk->value = copystring(BigBuffer);
           children.Append((wxObject *)chunk);
         }
           chunk->value = copystring(BigBuffer);
           children.Append((wxObject *)chunk);
         }
-        if (ch == '}') pos ++;
+        if (wxCh == _T('}')) pos ++;
         return pos;
       }
         return pos;
       }
-      case '\\':
+      case _T('\\'):
       {
         if (buf_ptr > 0)  // Finish off the string we've read so far
         {
       {
         if (buf_ptr > 0)  // Finish off the string we've read so far
         {
@@ -1154,8 +1154,8 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
           bool end = false;
           while (!end)
           {
           bool end = false;
           while (!end)
           {
-            int ch = buffer[pos];
-            if (ch == '}')
+            wxChar ch = buffer[pos];
+            if (ch == _T('}'))
             {
               noBraces --;
               if (noBraces == 0)
             {
               noBraces --;
               if (noBraces == 0)
@@ -1165,32 +1165,32 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
               }
               else
               {
               }
               else
               {
-                wxTex2RTFBuffer[i] = '}';
+                wxTex2RTFBuffer[i] = _T('}');
                 i ++;
               }
               pos ++;
             }
                 i ++;
               }
               pos ++;
             }
-            else if (ch == '{')
+            else if (ch == _T('{'))
             {
             {
-              wxTex2RTFBuffer[i] = '{';
+              wxTex2RTFBuffer[i] = _T('{');
               i ++;
               pos ++;
             }
               i ++;
               pos ++;
             }
-            else if (ch == '\\' && buffer[pos+1] == '}')
+            else if (ch == _T('\\') && buffer[pos+1] == _T('}'))
             {
             {
-              wxTex2RTFBuffer[i] = '}';
+              wxTex2RTFBuffer[i] = _T('}');
               pos += 2;
               i++;
             }
               pos += 2;
               i++;
             }
-            else if (ch == '\\' && buffer[pos+1] == '{')
+            else if (ch == _T('\\') && buffer[pos+1] == _T('{'))
             {
             {
-              wxTex2RTFBuffer[i] = '{';
+              wxTex2RTFBuffer[i] = _T('{');
               pos += 2;
               i++;
             }
             else
             {
               pos += 2;
               i++;
             }
             else
             {
-              wxTex2RTFBuffer[i] = (wxChar)ch;
+              wxTex2RTFBuffer[i] = ch;
               pos ++;
               i ++;
               if (ch == 0)
               pos ++;
               i ++;
               if (ch == 0)
@@ -1218,11 +1218,11 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
         else if (wxStrncmp(buffer+pos, _T("verb"), 4) == 0)
         {
           pos += 4;
         else if (wxStrncmp(buffer+pos, _T("verb"), 4) == 0)
         {
           pos += 4;
-          if (buffer[pos] == '*')
+          if (buffer[pos] == _T('*'))
             pos ++;
 
           // Find the delimiter character
             pos ++;
 
           // Find the delimiter character
-          int ch = buffer[pos];
+          wxChar ch = buffer[pos];
           pos ++;
           // Now at start of verbatim text
           int j = pos;
           pos ++;
           // Now at start of verbatim text
           int j = pos;
@@ -1256,8 +1256,8 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
 
           children.Append((wxObject *)chunk);
         }
 
           children.Append((wxObject *)chunk);
         }
-    else
-    {
+        else
+        {
           wxChar *env = NULL;
           bool tmpParseToBrace = true;
           TexMacroDef *def = MatchMacro(buffer, &pos, &env, &tmpParseToBrace);
           wxChar *env = NULL;
           bool tmpParseToBrace = true;
           TexMacroDef *def = MatchMacro(buffer, &pos, &env, &tmpParseToBrace);
@@ -1310,10 +1310,10 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
       }
       // Parse constructs like {\bf thing} as if they were
       // \bf{thing}
       }
       // Parse constructs like {\bf thing} as if they were
       // \bf{thing}
-      case '{':
+      case _T('{'):
       {
         pos ++;
       {
         pos ++;
-        if (buffer[pos] == '\\')
+        if (buffer[pos] == _T('\\'))
         {
           if (buf_ptr > 0)
           {
         {
           if (buf_ptr > 0)
           {
@@ -1363,7 +1363,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
           }
         }
         else
           }
         }
         else
-    {
+        {
          /*
           * If all else fails, we assume that we have
           * a pair of braces on their own, so return a `dummy' macro
          /*
           * If all else fails, we assume that we have
           * a pair of braces on their own, so return a `dummy' macro
@@ -1396,10 +1396,10 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
           arg->macroId = chunk->macroId;
 
           pos = ParseArg(arg, arg->children, buffer, pos, NULL, true, customMacroArgs);
           arg->macroId = chunk->macroId;
 
           pos = ParseArg(arg, arg->children, buffer, pos, NULL, true, customMacroArgs);
-    }
+        }
         break;
       }
         break;
       }
-      case '$':
+      case _T('$'):
       {
         if (buf_ptr > 0)
         {
       {
         if (buf_ptr > 0)
         {
@@ -1412,7 +1412,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
 
         pos ++;
 
 
         pos ++;
 
-        if (buffer[pos] == '$')
+        if (buffer[pos] == _T('$'))
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 0;
         {
           TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           chunk->no_args = 0;
@@ -1431,7 +1431,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
         }
         break;
       }
         }
         break;
       }
-      case '~':
+      case _T('~'):
       {
         if (buf_ptr > 0)
         {
       {
         if (buf_ptr > 0)
         {
@@ -1450,7 +1450,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
         children.Append((wxObject *)chunk);
         break;
       }
         children.Append((wxObject *)chunk);
         break;
       }
-      case '#': // Either treat as a special TeX character or as a macro arg
+      case _T('#'): // Either treat as a special TeX character or as a macro arg
       {
         if (buf_ptr > 0)
         {
       {
         if (buf_ptr > 0)
         {
@@ -1486,12 +1486,12 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
         }
         break;
       }
         }
         break;
       }
-      case '&':
+      case _T('&'):
       {
         // Remove white space before and after the ampersand,
         // since this is probably a table column separator with
         // some convenient -- but useless -- white space in the text.
       {
         // Remove white space before and after the ampersand,
         // since this is probably a table column separator with
         // some convenient -- but useless -- white space in the text.
-        while ((buf_ptr > 0) && ((BigBuffer[buf_ptr-1] == ' ') || (BigBuffer[buf_ptr-1] == 9)))
+        while ((buf_ptr > 0) && ((BigBuffer[buf_ptr-1] == _T(' ')) || (BigBuffer[buf_ptr-1] == 9)))
           buf_ptr --;
 
         if (buf_ptr > 0)
           buf_ptr --;
 
         if (buf_ptr > 0)
@@ -1505,7 +1505,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
 
         pos ++;
 
 
         pos ++;
 
-        while (buffer[pos] == ' ' || buffer[pos] == 9)
+        while (buffer[pos] == _T(' ') || buffer[pos] == 9)
           pos ++;
 
         TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
           pos ++;
 
         TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO);
@@ -1516,13 +1516,13 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
         break;
       }
       // Eliminate end-of-line comment
         break;
       }
       // Eliminate end-of-line comment
-      case '%':
+      case _T('%'):
       {
       {
-        ch = buffer[pos];
-        while (ch != 10 && ch != 13 && ch != 0)
+        wxCh = buffer[pos];
+        while (wxCh != 10 && wxCh != 13 && wxCh != 0)
         {
           pos ++;
         {
           pos ++;
-          ch = buffer[pos];
+          wxCh = buffer[pos];
         }
         if (buffer[pos] == 10 || buffer[pos] == 13)
         {
         }
         if (buffer[pos] == 10 || buffer[pos] == 13)
         {
@@ -1534,7 +1534,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
       // Eliminate tab
       case 9:
       {
       // Eliminate tab
       case 9:
       {
-        BigBuffer[buf_ptr] = ' ';
+        BigBuffer[buf_ptr] = _T(' ');
         BigBuffer[buf_ptr+1] = 0;
         buf_ptr ++;
         pos ++;
         BigBuffer[buf_ptr+1] = 0;
         buf_ptr ++;
         pos ++;
@@ -1542,7 +1542,7 @@ int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos, wxCha
       }
       default:
       {
       }
       default:
       {
-        BigBuffer[buf_ptr] = ch;
+        BigBuffer[buf_ptr] = wxCh;
         BigBuffer[buf_ptr+1] = 0;
         buf_ptr ++;
         pos ++;
         BigBuffer[buf_ptr+1] = 0;
         buf_ptr ++;
         pos ++;
@@ -2713,7 +2713,8 @@ void DefaultOnMacro(int macroId, int no_args, bool start)
       break;
     case ltPOUNDS:
       if (start)
       break;
     case ltPOUNDS:
       if (start)
-        TexOutput(_T("£"), true);
+        // FIXME: this is valid only if the output is iso-8859-1
+        TexOutput(wxString::FromAscii("£"), true);
       break;
     case ltSPECIALDOUBLEDOLLAR:  // Interpret as center
       OnMacro(ltCENTER, no_args, start);
       break;
     case ltSPECIALDOUBLEDOLLAR:  // Interpret as center
       OnMacro(ltCENTER, no_args, start);