]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkInterpreter.cxx
*** empty log message ***
[bbtk.git] / kernel / src / bbtkInterpreter.cxx
index 82edfcd775c46d173dc99d500d29f9d0492dfcf0..ab0075d2e84030d01bd0ac1bd3c5a16b0adf3d46 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkInterpreter.cxx,v $ $
   Language:  C++
-  Date:      $Date: 2008/03/21 11:44:37 $
-  Version:   $Revision: 1.51 $
+  Date:      $Date: 2008/03/26 08:51:43 $
+  Version:   $Revision: 1.56 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -296,6 +296,146 @@ bufferNb =0;
   //=======================================================================
 
 
+  InterpreterError::InterpreterError( const std::string& message,
+                                     bool in_script_file,
+                                     const std::string& script_file,
+                                     int script_line 
+                                     )
+    : Exception("Interpreter",0,message),
+      mInScriptFile(in_script_file),
+      mScriptFile(script_file),
+      mScriptLine(script_line)
+  {
+  }
+  InterpreterError::InterpreterError( const Exception& excep,
+                     bool in_script_file,
+                     const std::string& script_file,
+                     int script_line 
+                     )
+    : Exception(excep),
+      mInScriptFile(in_script_file),
+      mScriptFile(script_file),
+      mScriptLine(script_line)
+  {
+  }
+  //=======================================================================
+  void Interpreter::CatchBbtkException( const bbtk::Exception& e )
+  {
+    if (mThrow) 
+      {
+       bool in_script = false;
+       std::string file("");
+       int line = 0;
+       if (mFileName.size()) {
+         std::ifstream* fs = dynamic_cast<std::ifstream*>(mFile.back());
+         if (fs!=0) in_script = true;    
+         file = mFileName.back();
+         line = mLine.back();
+       }   
+       CloseAllFiles();
+       throw InterpreterError(e,in_script,file,line);
+      }
+    else
+      {
+       std::stringstream mess;
+       mess << "* ERROR : "<<e.GetMessage()<<std::endl;
+       if (mFileName.size()) {
+         mess << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
+         mess << "* LINE  : "<<mLine.back()<<std::endl;
+       }    
+       std::cerr << mess.str();
+      }
+  }
+  //=======================================================================
+  
+  //=======================================================================
+  void Interpreter::CatchStdException( const std::exception& e )
+  {  
+    if (mThrow) 
+      {
+       bool in_script = false;
+       std::string file("");
+       int line = 0;
+       if (mFileName.size()) {
+         std::ifstream* fs = dynamic_cast<std::ifstream*>(mFile.back());
+         if (fs!=0) in_script = true;    
+         file = mFileName.back();
+         line = mLine.back();
+       }    
+       CloseAllFiles();
+       throw InterpreterError(e.what(),in_script,file,line);
+      }
+    else
+      {
+       std::stringstream mess;
+       mess << "* ERROR : "<<e.what()<<std::endl;
+       if (mFileName.size()) {
+         mess << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
+         mess << "* LINE  : "<<mLine.back()<<std::endl;
+       }    
+       std::cerr << mess.str();
+      }
+  }
+  //=======================================================================
+
+  //=======================================================================
+  void Interpreter::CatchUnknownException()
+  {
+    if (mThrow) 
+      {
+       bool in_script = false;
+       std::string file("");
+       int line = 0;
+       if (mFileName.size()) {
+         std::ifstream* fs = dynamic_cast<std::ifstream*>(mFile.back());
+         if (fs!=0) in_script = true;    
+         file = mFileName.back();
+         line = mLine.back();
+       }    
+       CloseAllFiles();
+       throw InterpreterError("Unknown exception caught",
+                                  in_script,file,line);
+      }
+    else
+      {
+       std::stringstream mess;
+       mess << "* UNDEFINED ERROR (not a bbtk nor a std exception)" 
+            << std::endl;
+       if (mFileName.size()) {
+         mess << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
+         mess << "* LINE  : "<<mLine.back()<<std::endl;
+       }    
+       std::cerr << mess.str();
+      }
+  }
+  //=======================================================================
+
+  //=======================================================================
+
+#define CATCH_MACRO                            \
+  catch (QuitException e)                      \
+    {                                          \
+      status = Interpreter_QUIT;               \
+      if (mThrow) throw QuitException();       \
+    }                                          \
+  catch (bbtk::Exception e)                    \
+    {                                          \
+      status = Interpreter_ERROR;              \
+      CatchBbtkException(e);                   \
+    }                                          \
+  catch (std::exception& e)                    \
+    {                                          \
+      status = Interpreter_ERROR;              \
+      CatchStdException(e);                    \
+    }                                          \
+  catch (...)                                  \
+    {                                          \
+      status = Interpreter_ERROR;              \
+      CatchUnknownException();                 \
+    }                                          
+  //=======================================================================
+   
+
   //=======================================================================
   /**
    *  
@@ -309,7 +449,6 @@ bufferNb =0;
 
     ExitStatus status = Interpreter_OK;
 
-  
     try 
     {
       SwitchToFile(filename);
@@ -334,55 +473,7 @@ bufferNb =0;
        CloseCurrentFile();
       }
     }
-    catch (QuitException e) 
-    {
-      status = Interpreter_QUIT;
-      if (mThrow) throw QuitException();
-    }
-    catch (bbtk::Exception e) 
-    {
-      std::stringstream mess;
-      mess << "* ERROR : "<<e.GetMessage()<<std::endl;
-      if (mFileName.size()) {
-         mess << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
-         mess << "* LINE  : "<<mLine.back()<<std::endl;
-      }    
-      status = Interpreter_ERROR;
-      if (mThrow) 
-       throw bbtk::Exception("Interpreter","",mess.str());
-      else
-       std::cerr << mess.str();
-
-    }
-    catch (std::exception& e) 
-    {
-       std::stringstream mess;
-       mess << "* ERROR : "<<e.what()<<" (not in bbtk)"<<std::endl;
-       if (mFileName.size()) {
-          mess << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
-          mess << "* LINE  : "<<mLine.back()<<std::endl;
-       }  
-      status = Interpreter_ERROR;
-      if (mThrow) 
-       throw bbtk::Exception("Interpreter","",mess.str());
-      else
-       std::cerr << mess.str();  
-    }  
-    catch (...)
-      {
-        std::stringstream mess;
-       mess << "* UNDEFINED ERROR (not a bbtk nor a std exception)"
-            <<std::endl;
-       if (mFileName.size()) {
-          mess << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
-          mess << "* LINE  : "<<mLine.back()<<std::endl;
-       }    
-       status = Interpreter_ERROR;
-       if (mThrow) 
-         throw bbtk::Exception("Interpreter","",mess.str());
-       else
-         std::cerr << mess.str();   
-      }
+    CATCH_MACRO;
     
     CloseAllFiles();
     bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
@@ -434,41 +525,7 @@ bufferNb =0;
        CloseCurrentFile();
       }
     }
-    catch (QuitException e) 
-      { 
-       status = Interpreter_QUIT;
-      }
-    catch (bbtk::Exception e) 
-      {
-       std::cerr << "* ERROR : "<<e.GetMessage()<<std::endl;
-       if (mFileName.size()) 
-         {
-           std::cerr << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
-           std::cerr << "* LINE  : "<<mLine.back()<<std::endl;
-         }    
-       status = Interpreter_ERROR;
-      }
-    catch (std::exception& e) 
-      {
-       std::cerr << "* ERROR : "<<e.what()<<" (not in bbtk)"<<std::endl;
-       if (mFileName.size()) 
-         {
-           std::cerr << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
-           std::cerr << "* LINE  : "<<mLine.back()<<std::endl;
-         }    
-       status = Interpreter_ERROR;
-    }  
-    catch (...)
-      {
-       std::cerr 
-         << "* UNDEFINED ERROR (not a bbtk nor a std exception)"<<std::endl;
-       if (mFileName.size()) 
-         {
-           std::cerr << "* FILE  : \""<<mFileName.back()<<"\""<<std::endl;
-           std::cerr << "* LINE  : "<<mLine.back()<<std::endl;
-         }    
-       status = Interpreter_ERROR;
-      }
+    CATCH_MACRO;
     
     CloseAllFiles();
     bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretBuffer()"<<std::endl);
@@ -483,6 +540,7 @@ bufferNb =0;
   /// Runs the interpretation of a command
   Interpreter::ExitStatus Interpreter::InterpretLine( const std::string& line )
   {
+printf("EED Interpreter::InterpretLine %s \n", line.c_str() );
     bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretLine('"<<line<<"')"<<std::endl);
 
     ExitStatus status = Interpreter_OK;
@@ -492,7 +550,9 @@ bufferNb =0;
       bool insideComment = false;
       InterpretLine(line, insideComment);
     }
-    catch (QuitException e) 
+    CATCH_MACRO;
+    /*
+   catch (QuitException e) 
       { 
       status = Interpreter_QUIT;
       }
@@ -512,7 +572,7 @@ bufferNb =0;
          << "* UNDEFINED ERROR (not a bbtk nor a std exception)"<<std::endl;
        status = Interpreter_ERROR;
       }
-    
+    */
 
     bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretLine()"
                     <<std::endl);
@@ -595,8 +655,7 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
         break;
 
       case cDelete :
-        // TO DO !!
-        // mExecuter->Remove(words[1]);
+       mExecuter->Destroy(words[1]);
         break;
 
       case cConnect :
@@ -633,7 +692,7 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
         break;
 
       case cPrint :
-        Print(words[1]); /// \todo use generate command 
+        mExecuter->Print(words[1]);
         break;
         
       case cExec :
@@ -642,7 +701,7 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
         else if (words[1]=="unfreeze") 
           mExecuter->SetNoExecMode(false);
         else
-          mExecuter->Update(words[1]);
+          mExecuter->Execute(words[1]);
         break;
 
       case cInput :
@@ -688,12 +747,12 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
       case cMessage : 
         if (words.size()<3)
         {
-           bbtk::MessageManager::PrintInfo();
+         mExecuter->HelpMessages();
         }
         else
         {
-           sscanf(words[2].c_str(),"%d",&level);
-           bbtk::MessageManager::SetMessageLevel(words[1],level);
+         sscanf(words[2].c_str(),"%d",&level);
+          mExecuter->SetMessageLevel(words[1],level);
         }
         break;
 
@@ -726,18 +785,18 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
         break;
 
       case cLoad:
-        GetExecuter()->GetFactory()->LoadPackage(words[1]);
+        GetExecuter()->LoadPackage(words[1]);
         break;
 
       case cUnload:
-        GetExecuter()->GetFactory()->UnLoadPackage(words[1]);
+        GetExecuter()->UnLoadPackage(words[1]);
         break;
 
       case cQuit :
         delete mExecuter;
         throw QuitException();
         break;
-
+       /* obsolete
       case cWorkspace :
         if (words.size() == 2) 
         {
@@ -749,7 +808,7 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
            mExecuter->SetWorkspaceName(words[2]);
         }
         break;
-        
+        */
       default:
         bbtkInternalError("should not reach here !!!");
    }
@@ -799,27 +858,13 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
   //=======================================================================
 
 
-  //=======================================================================
-  // Replaces substrings "\\n" by a real carriage return "\n"
-  void SubsBackslashN ( std::string& s )
-  {
-    std::string ss("\\n");
-    std::string::size_type pos = 0;
-    pos = s.find(ss,0);
-    char* cr = "\n";
-    while ( pos != std::string::npos )
-    {
-      s.replace(pos,2,cr,1);
-      pos = s.find(ss, pos-1);
-    }
-  }
-  //=======================================================================
-
 
   //=======================================================================
   /**
    *
    */
+  /*
   void Interpreter::Print( const std::string& str)
   {
     if (mExecuter->GetNoExecMode()) return;
@@ -882,12 +927,13 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
      for (i= chains.begin(); i!=chains.end(); ++i) 
      {
        //  bbtkMessage("Echo",1,*i);
-       SubsBackslashN(*i);
+       Utilities::SubsBackslashN(*i);
        std::cout << *i;
      }
      std::cout << std::endl;
      bbtkDebugDecTab("Interpreter",9);
  }
+*/
 
   //=======================================================================
   /**
@@ -922,110 +968,125 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
     bbtkMessage("Interpreter",1,
         "look for : [" << name
         << "]" << std::endl);
-    script_paths = ConfigurationFile::GetInstance().Get_bbs_paths();
+
 
     std::string upath;
     pkgname = Utilities::ExtractScriptName(name,upath);
 
-    bbtkMessage("Interpreter",1,
+    bbtkMessage("Interpreter",3,
                "extract : pkgname [" << pkgname
                 << "] upath [" << upath << "]" << std::endl);
     bool fullnameGiven = false; 
     bool foundFile     = false;
 
-    if(pkgname == "*") // =========================================== load all boxes (e.g. std/boxes/*)
-    {
-      int nbBssFiles;
-
-      std::stringstream* stream = new std::stringstream;
-      //if (upath.size()!=0) // avoid troubles for "*"
-      
-      if (upath[0]=='/' || upath[1] == ':' ) // ==== absolute name, load all .bbs files
+    // ==== "*" provided : load all scripts in given path 
+    // relative (e.g. std/boxes/*) or absolute 
+    if (pkgname == "*") 
       {
-        int nbFiles = Utilities::Explore(upath, false, Filenames);
-        nbBssFiles = 0;
-        for (std::vector<std::string>::iterator i = Filenames.begin(); i!= Filenames.end(); ++i)
-        {
-           int lgr = (*i).size();
-          if (lgr < 5)
-             continue;  // ignore non .bbs file
-           if ((*i).substr(lgr-4, 4) != ".bbs")
-             continue;
-
-          (*stream) << "include " << *i << "\n";
-
-           nbBssFiles++;
-        } // for vector
-               if (nbBssFiles==0){
-           bbtkMessage("Interpreter",2,
-                      "WARNING : No '.bbs' file found in [" 
-                      << upath << "]" << std::endl);
-               } else {
-            SwitchToStream(stream);
-               }
-        return;
-      }  // if upath
-
-      std::string path;
-      std::vector<std::string>::iterator i;
-      std::string fullDirectoryName;
-      for (i=script_paths.begin();i!=script_paths.end();i++)// ==== relative name, iterate + load all .bbs files
-      {
-        path = *i;
-
-       // we *really* want '.' to be the current working directory
-        if (path == ".") {
-          char buf[2048]; // for getcwd
-          char * currentDir = getcwd(buf, 2048);
-          std::string cwd(currentDir);
-          path = currentDir;
-        } // if path
-
-        fullDirectoryName = Utilities::MakePkgnameFromPath(path, upath, false);
-
-        // without last slash "\"
-        std::string fullDirectoryNameClean = fullDirectoryName.substr(0,fullDirectoryName.size()-1);
+       int nbBssFiles;
+       
+       std::stringstream* stream = new std::stringstream;
+       //if (upath.size()!=0) // avoid troubles for "*"
+       
+       // ==== no path provided : look in root bbs path
+       if (upath.size()==0)
+         {
+           //      bbtkMessage("Interpreter",1,
+           script_paths.push_back(  ConfigurationFile::GetInstance().Get_root_bbs_path() );
+         }
+       // ==== absolute path provided 
+       else if (upath[0]=='/' || upath[1] == ':' ) 
+         {
+           if ( Utilities::IsDirectory( upath ) )
+             {
+               script_paths.push_back(upath);
+             }
+           else 
+             {
+               bbtkError("'"<<upath<<"' : not a valid folder"); 
+             }
+         }
+       // ==== relative path provided : search all bbs path appended with 
+       // the relative path provided
+       else
+         {    
+            std::vector<std::string>::const_iterator i;
+            for (i=ConfigurationFile::GetInstance().Get_bbs_paths().begin();
+                 i!=ConfigurationFile::GetInstance().Get_bbs_paths().end();
+                 i++)
+              {
+                std::string full_path(*i);
+                // we *really* want '.' to be the current working directory
+                if (full_path == ".") {
+                  char buf[2048]; // for getcwd
+                  char * currentDir = getcwd(buf, 2048);
+                  std::string cwd(currentDir);
+                  full_path = currentDir;
+                } // if full_path
+           
+                full_path += ConfigurationFile::GetInstance().Get_file_separator();
+                full_path += upath;
+
+                if ( Utilities::IsDirectory( full_path ) )
+                  {
+                    script_paths.push_back(full_path);
+                  }
+              } 
+         }
+       // === search paths list complete : now explore it
+       if (script_paths.empty())
+         {
+           bbtkMessage("Interpreter",1,
+                       "'"<<upath<<"' : No matching folder" << std::endl);
+         }
 
-      // Check if library exists
-        if ( ! Utilities::IsDirectory( fullDirectoryNameClean ) )
-        {
-        // The following is *NOT* a debug time message :
-        // It's a user intended message.
-        // Please don't remove it.
-             bbtkMessage("Interpreter",1,"   [" <<fullDirectoryName 
-                     <<"] : doesn't exist" <<std::endl);
-          continue;  // try next path
-        } // if IsDirectory
-        foundFile = true;
 
-        Filenames.clear();
-        int nbFiles = Utilities::Explore(fullDirectoryName, false, Filenames);
+       std::vector<std::string>::iterator i;
+       for (i=script_paths.begin();i!=script_paths.end();i++)// ==== relative name, iterate + load all .bbs files
+         {
+           bbtkMessage("Interpreter",1,
+                       "--> Looking in '" << *i << "'" << std::endl);
+        
+           
+           Filenames.clear();
+           int nbFiles = Utilities::Explore(*i, false, Filenames);
+           
+           nbBssFiles = 0;
+           for (std::vector<std::string>::iterator j = Filenames.begin(); 
+                j!= Filenames.end(); ++j)
+             {
+               int lgr = (*j).size();
+               if (lgr < 5)
+                 continue;  // ignore non .bbs file
+               if ((*j).substr(lgr-4, 4) != ".bbs")
+                 continue;
+               
+               (*stream) << "include \"" << *j << "\"\n";
+               bbtkMessage("Interpreter",2,
+                           "  --> Found '" << *j << "'" << std::endl);
+               
+               nbBssFiles++;
+             } // for vector
+           
+           if (nbBssFiles==0)
+             {
+               bbtkMessage("Interpreter",1,
+                           "  --> No .bbs found"<< std::endl);
+             } 
+           else 
+             {
+               bbtkMessage("Interpreter",1,
+                           "  --> "<<nbBssFiles<<" .bbs found"<< std::endl);
+               SwitchToStream(stream);
+             }
+           
+           //break; // a directory was found; we stop iterating
+           // LG : No! We want all files included !
+         } // for vector
+       return;
+      }  
+    //=============== end pkgname=="*" ===========
 
-        nbBssFiles = 0;
-        for (std::vector<std::string>::iterator i = Filenames.begin(); i!= Filenames.end(); ++i)
-        {
-           int lgr = (*i).size();
-          if (lgr < 5)
-             continue;  // ignore non .bbs file
-           if ((*i).substr(lgr-4, 4) != ".bbs")
-             continue;
-
-           (*stream) << "include " << *i << "\n";
-           nbBssFiles++;
-        } // for vector
-               if (nbBssFiles==0){
-           bbtkMessage("Interpreter",1,
-                     "WARNING : No '.bbs' file found in [" 
-                     << fullDirectoryName << "]" << std::endl);
-               } else {
-           SwitchToStream(stream);
-               }
-
-        //break; // a directory was found; we stop iterating
-       // LG : No! We want all files included !
-       } // for vector
-       return;
-    }  // if *
 
     // if name starts with a / or a . or contains : user is assumed to have passed a relative/absolute name
     // (not only a plain script name)
@@ -1064,61 +1125,64 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
     } // endif l != 0
   }
   else
-      // =============================================================== iterate on the paths
-  {
+    // =============================== iterate on the paths
+    {
+      script_paths = ConfigurationFile::GetInstance().Get_bbs_paths();
       std::string path;
       std::vector<std::string>::iterator i;
       for (i=script_paths.begin();i!=script_paths.end();++i)
-      {
-        path = *i;
-       // we *really* want '.' to be the current working directory
-        if (path == ".") {
-          char buf[2048]; // for getcwd
-          char * currentDir = getcwd(buf, 2048);
-          std::string cwd(currentDir);
-          path = currentDir;
-        }
-
-       fullPathScriptName = Utilities::MakePkgnameFromPath(path, name, true);
-
-      // Check if library exists
-        if ( ! Utilities::FileExists(fullPathScriptName) )
-        {
-        // The following is *NOT* a debug time message :
-        // It's a user intended message.
-        // Please don't remove it.
-           bbtkMessage("Interpreter",2,
-                       "   [" <<fullPathScriptName <<"] : doesn't exist" 
-                       <<std::endl);
-          continue;  // try next path
-        }
-           bbtkMessage("Interpreter",2,
-                   "   [" <<fullPathScriptName 
-                   <<"] : found" <<std::endl);
-        foundFile = true;
-        break; // a script was found; we stop iterating
-
-      } //------------------ // end for ( package_paths.begin();i!=package_paths.end() )
+       {
+         path = *i;
+         // we *really* want '.' to be the current working directory
+         if (path == ".") {
+           char buf[2048]; // for getcwd
+           char * currentDir = getcwd(buf, 2048);
+           std::string cwd(currentDir);
+           path = currentDir;
+         }
+         
+         fullPathScriptName = Utilities::MakePkgnameFromPath(path, name, true);
+         
+         // Check if library exists
+         if ( ! Utilities::FileExists(fullPathScriptName) )
+           {
+             // The following is *NOT* a debug time message :
+             // It's a user intended message.
+             // Please don't remove it.
+             bbtkMessage("Interpreter",2,
+                         "   [" <<fullPathScriptName <<"] : doesn't exist" 
+                         <<std::endl);
+             continue;  // try next path
+           }
+         bbtkMessage("Interpreter",2,
+                     "   [" <<fullPathScriptName 
+                     <<"] : found" <<std::endl);
+         foundFile = true;
+         break; // a script was found; we stop iterating
+
+       } //------------------ // end for ( package_paths.begin();i!=package_paths.end() )
     }
-
+    
     if (!foundFile)
-    {
-       if (fullnameGiven)
-         if(fullPathScriptName == "")
+      {
+       if (fullnameGiven)
+         if(fullPathScriptName == "")
             bbtkError("Path ["<<upath<<"] doesn't exist");
-         else
+         else
             bbtkError("Script ["<<fullPathScriptName<<"] not found");
-       else
+       else
           bbtkError("No ["<<pkgname<<".bbs] script found");
-       return;
-    }
+       return;
+      }
     else
       LoadScript(fullPathScriptName,name);
-
+    
     return;
   }
+  //=======================================================================
 
 
+  //=======================================================================
 void Interpreter::SwitchToStream( std::stringstream* stream )
 {
     mFile.push_back(stream);
@@ -1134,6 +1198,7 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
     mIncludeFileName.push_back(buffer_name.str());
     mLine.push_back(0);
 }
+  //=======================================================================
 
   //=======================================================================
 
@@ -1176,6 +1241,7 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
     mFileName.push_back(fullPathScriptName);
     mIncludeFileName.push_back(includeScriptName);
     mLine.push_back(0);
+
     return;
   }