]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkInterpreter.cxx
*** empty log message ***
[bbtk.git] / kernel / src / bbtkInterpreter.cxx
index 7a57fe976f7e48bf687c8ce5e03700f388e76d80..d0906a67bcdfb3a68e3759887379851b03b7240d 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkInterpreter.cxx,v $ $
   Language:  C++
-  Date:      $Date: 2008/02/04 13:51:30 $
-  Version:   $Revision: 1.19 $
+  Date:      $Date: 2008/02/05 08:25:22 $
+  Version:   $Revision: 1.20 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -44,7 +44,7 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL;
    */
   Interpreter::Interpreter() 
     :
-    mCommandLine(false), verbose(false)
+    mCommandLine(false)
   {
     bbtk::MessageManager::RegisterMessageType("Echo","Level>0 : Prints the 'echo' commands of the user.\n\tLevel>1 : Prints the command being interpreted",1);
     bbtk::MessageManager::RegisterMessageType("Interpreter","Messages of the interpreter",0);
@@ -157,9 +157,9 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL;
    
     info.keyword = "config";  // JPR
     info.argmin = 0;
-    info.argmax = 1;
+    info.argmax = 0;
     info.code = cConfig;
-    info.syntax = "config [<verbose>|<v>]";
+    info.syntax = "config";
     info.help = "Prints the value of all configuration parameters";
     mCommandDict[info.keyword] = info;
 
@@ -287,7 +287,6 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL;
     delete mExecuter;
     //delete mFactory;
 
-    //    std::cout <<"EO Interpreter::~Interpreter()"<<std::endl;
     bbtkDebugDecTab("Interpreter",9);
   }
   //=======================================================================
@@ -297,7 +296,8 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL;
   /**
    *  
    */
-  void Interpreter::InterpretFile( const std::string& filename,  bool use_configuration_file, bool verbose)
+  void Interpreter::InterpretFile( const std::string& filename,  
+                                  bool use_configuration_file)
   {
     bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
 
@@ -306,7 +306,7 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL;
 
     try 
     {
-      SwitchToFile(filename, use_configuration_file, verbose);
+      SwitchToFile(filename, use_configuration_file);
       bool insideComment = false; // for multiline comment
       while (mFile.size()>0) 
       {
@@ -548,11 +548,7 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
         break;
         
       case cConfig :
-        if (words.size()>1) // any param for config means verbose = true
-          verbose = true;
-        else
-          verbose = false;
-        Config(verbose);            
+        Config();            
         break;
         
       case cReset :  // EED
@@ -562,16 +558,16 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
       case cInclude :
         if (mCommandLine) 
         {
-           InterpretFile(words[1], true, verbose); // true : better pass use_config_file
+           InterpretFile(words[1], true ); // true : better pass use_config_file
         }
         else 
         {
-            SwitchToFile(words[1], true, verbose); // true : better pass use_config_file
+            SwitchToFile(words[1], true ); // true : better pass use_config_file
         }
         break;
         
       case cLoad:
-        LoadPackage(words[1], true, verbose); // true : better pass use_config_file
+        LoadPackage(words[1], true ); // true : better pass use_config_file
         break;
         
       case cUnload:
@@ -647,18 +643,15 @@ 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::cout << "BEFORE=["<<s<<"]"<<std::endl;
     std::string ss("\\n");
     std::string::size_type pos = 0;
     pos = s.find(ss,0);
     char* cr = "\n";
     while ( pos != std::string::npos )
    {
-      //  std::cout << "*** find one "<<std::endl;
       s.replace(pos,2,cr,1);
       pos = s.find(ss, pos-1);
    } 
-    //    std::cout << "AFTER=["<<s<<"]"<<std::endl;
   }
   //=======================================================================
 
@@ -690,7 +683,6 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
        {
           // Found a text token, add it to the vector.
           chains.push_back(str.substr(lastPos, pos - lastPos));
-          // std::cout << "text='"<<chains.back()<<"'"<<std::endl;
        }
        else 
        {
@@ -699,7 +691,6 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
          tok = str.substr(lastPos, pos - lastPos);
          Utilities::SplitAroundFirstDot(tok,box,output);
          chains.push_back( mExecuter->Get(box,output) );
-    //    std::cout << "outp='"<<chains.back()<<"'"<<std::endl;
        }
         // Skip delimiters.  Note the "not_of"
        lastPos = str.find_first_not_of(delimiters, pos);
@@ -708,7 +699,6 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
     //
        is_text = !is_text;
      }
-    //    std::cout << "nb="<<chains.size()<<std::endl;
      std::vector<std::string>::iterator i;
      for (i= chains.begin(); i!=chains.end(); ++i) 
      {
@@ -728,7 +718,7 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
 // ===================================================================================
 
   void Interpreter::SwitchToFile( const std::string& name,
-                                  bool use_configuration_file, bool verbose)
+                                  bool use_configuration_file )
   {
   // Note : in the following :
   // name : the user supplied name 
@@ -743,9 +733,6 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
     bbtkDebugMessageInc("Interpreter",9,"Interpreter::SwitchToFile( \""
                          <<name<<"\")"<<std::endl);
 
-// to be removed in final version
-// use : Config v
-//verbose = true;
     std::vector<std::string> script_paths;
     std::string fullPathScriptName;  // full path script name
     std::string pkgname;             // e.g. <scriptname>.bbs
@@ -756,13 +743,14 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
         // The following is *NOT* a debug time message :
         // It's a user intended message.
         // Please don't remove it.
-      if (verbose)
-         std::cout << "look for : [" << name << "] (use_configuration_file == TRUE)"  << std::endl;
+      bbtkMessage("Interpreter",1,
+                 "look for : [" << name 
+                 << "] (use_configuration_file == TRUE)" << std::endl);
       script_paths = ConfigurationFile::GetInstance().Get_bbs_paths();
     }
     std::string upath;
     pkgname = Utilities::ExtractScriptName(name,upath);
-//std::cout <<"name [" <<   name << "] pkgname [" << pkgname << "] upath [" << upath << "]" << std::endl;    
+
     bool fullnameGiven = false; 
     bool foundFile     = false;
 
@@ -782,8 +770,9 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
            nbBssFiles++;
         }
         if (nbBssFiles==0)
-           if (verbose)
-              std::cout << "WARNING : No '.bbs' file found in [" << upath << "]" << std::endl;
+           bbtkMessage("Interpreter",2,
+                      "WARNING : No '.bbs' file found in [" 
+                      << upath << "]" << std::endl);
 
         return;
       }
@@ -805,9 +794,6 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
         }
 
         fullDirectoryName = Utilities::MakePkgnameFromPath(path, upath, false);
-//std::cout <<"fullpath [" <<   fullDirectoryName << "]" <<std::endl;
-//     std::cout << "== "<<fullDirectoryName<<" =="<<std::endl;
-       
 
       // Check if library exists           
         if ( ! Utilities::IsDirectory(fullDirectoryName) )
@@ -815,27 +801,28 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
         // The following is *NOT* a debug time message :
         // It's a user intended message.
         // Please don't remove it.
-          if (verbose)
-            std::cout <<"   [" <<fullDirectoryName <<"] : doesn't exist" <<std::endl;
+         bbtkMessage("Interpreter",1,"   [" <<fullDirectoryName 
+                     <<"] : doesn't exist" <<std::endl);
           continue;  // try next path
         }
         foundFile = true;
 
 
         int nbFiles = Utilities::Explore(fullDirectoryName, false, Filenames);
-// std::cout << "=================nbFiles " << nbFiles << std::endl;
+
         nbBssFiles = 0;
         for (std::vector<std::string>::iterator i = Filenames.begin(); i!= Filenames.end(); ++i)
         {
-         //    std::cout << "=== "<<*i<<" =="<<std::endl;
+
            if ((*i).substr((*i).size()-4, 4) != ".bbs")
               continue;      // ignore non .bbs files
            LoadScript(*i);
            nbBssFiles++;
         }
         if (nbBssFiles==0)
-           if (verbose)
-              std::cout << "WARNING : No '.bbs' file found in [" << fullDirectoryName << "]" << std::endl;
+         bbtkMessage("Interpreter",1,
+                     "WARNING : No '.bbs' file found in [" 
+                     << fullDirectoryName << "]" << std::endl);
            
         //break; // a directory was found; we stop iterating
        // LG : No! We want all files included !
@@ -856,7 +843,8 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
       // ===========================================================check user supplied location
       fullnameGiven = true;
 
-      fullPathScriptName =  Utilities::ExpandLibName(name, verbose);
+      
+      fullPathScriptName =  Utilities::ExpandLibName(name, false);
 
       // allow user to always forget ".bbs"
       int l = fullPathScriptName.size();
@@ -902,7 +890,7 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
        // fullPathScriptName = Utilities::MakePkgnameFromPath(path, name, true); //pkgname);
 
            fullPathScriptName = Utilities::MakePkgnameFromPath(path, name, true);
-//std::cout << "FULL PATH = "<<fullPathScriptName<<std::endl;
+
 
       // Check if library exists
         if ( ! Utilities::FileExists(fullPathScriptName) )
@@ -910,12 +898,14 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
         // The following is *NOT* a debug time message :
         // It's a user intended message.
         // Please don't remove it.
-          if (verbose)
-            std::cout <<"   [" <<fullPathScriptName <<"] : doesn't exist" <<std::endl;
+         bbtkMessage("Interpreter",1,
+                     "   [" <<fullPathScriptName <<"] : doesn't exist" 
+                     <<std::endl);
           continue;  // try next path
         }
-        if (verbose)
-           std::cout <<"   [" <<fullPathScriptName <<"] : found" <<std::endl;        
+       bbtkMessage("Interpreter",1,
+                   "   [" <<fullPathScriptName 
+                   <<"] : found" <<std::endl);        
         foundFile = true;
         break; // a script was found; we stop iterating
 
@@ -947,7 +937,9 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
     if (find(mFileName.begin(),mFileName.end(),fullPathScriptName)
        !=mFileName.end()) 
       {
-       bbtkMessage("Interpreter",1,"file '"<<fullPathScriptName<<"' already open : do not open it once more to prevent recursive inclusion"<<std::endl);
+       bbtkMessage("Interpreter",1,
+                   "file '"<<fullPathScriptName
+                   <<"' already open : do not open it once more to prevent recursive inclusion"<<std::endl);
        return;
       }
 
@@ -962,8 +954,8 @@ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>&
         return;     
     }
     
-    //if (verbose)
-       std::cout << "   -->[" << fullPathScriptName << "] found" << std::endl;
+    bbtkMessage("Interpreter",1,"   -->[" << fullPathScriptName 
+               << "] found" << std::endl);
 
     mFile.push_back(s);
     mFileName.push_back(fullPathScriptName);
@@ -1137,7 +1129,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
 
    //===================================================================    
   /// Displays the Configuration
-  void Interpreter::Config( bool verbose ) const
+  void Interpreter::Config() const
   {
     bbtkDebugMessageInc("Core",9,"Factory::Config"<<std::endl);