]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkInterpreter.cxx
no message
[bbtk.git] / kernel / src / bbtkInterpreter.cxx
index afa23734826a312b2370d74f6d98ff5fca0a5650..6771d7788013d12bed23d9d1b85aac56b953a004 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkInterpreter.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/01/27 14:22:57 $
-  Version:   $Revision: 1.82 $
+  Date:      $Date: 2010/09/15 14:17:17 $
+  Version:   $Revision: 1.89 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -39,6 +39,7 @@
 #include "bbtkMessageManager.h"
 #include "bbtkConfigurationFile.h"
 #include "bbtkUtilities.h"
+#include "bbtkAtomicBlackBox.h"
 #include "bbtkWxBlackBox.h"
 #include <sys/stat.h>
 #include <algorithm>
@@ -55,7 +56,7 @@ namespace bbtk
  //=======================================================================
   Interpreter::Pointer Interpreter::New(const std::string& cpp_file) 
   {
-    bbtkDebugMessage("Kernel",9,"Interpreter::New('"<<cpp_file<<"')"<<std::endl);
+    bbtkDebugMessage("kernel",9,"Interpreter::New('"<<cpp_file<<"')"<<std::endl);
     return MakePointer(new Interpreter(cpp_file));
   }
  //=======================================================================
@@ -63,7 +64,7 @@ namespace bbtk
  //=======================================================================
   Interpreter::Pointer Interpreter::New(VirtualExec::Pointer e) 
   {
-    bbtkDebugMessage("Kernel",9,"Interpreter::New(VirtualExec)"<<std::endl);
+    bbtkDebugMessage("kernel",9,"Interpreter::New(VirtualExec)"<<std::endl);
     return MakePointer(new Interpreter(e));
   }
  //=======================================================================
@@ -71,14 +72,18 @@ namespace bbtk
  //=======================================================================
   Interpreter::Interpreter(const std::string& cpp_file) 
   {
+    bbtkDebugMessage("object",2,"==> Interpreter("<<cpp_file<<")"<<std::endl);
     Init(VirtualExec::Pointer(), cpp_file);
+    bbtkDebugMessage("object",2,"<== Interpreter("<<cpp_file<<")"<<std::endl);
   }
   //=======================================================================
 
  //=======================================================================
   Interpreter::Interpreter(VirtualExec::Pointer e) 
   {
+    bbtkDebugMessage("object",2,"==> Interpreter(VirtualExec)"<<std::endl);
     Init(e,"");
+    bbtkDebugMessage("object",2,"<== Interpreter(VirtualExec)"<<std::endl);
   }
   //=======================================================================
 
@@ -218,7 +223,7 @@ namespace bbtk
     info.argmin = 1;
     info.argmax = 1;
     info.code = cKind;
-    info.syntax = "kind <ADAPTOR|DEFAULT_ADAPTOR|WIDGET_ADAPTOR|DEFAULT_WIDGET_ADAPTOR>";
+    info.syntax = "kind <ADAPTOR|DEFAULT_ADAPTOR|GUI|DEFAULT_GUI>";
     info.help = "Sets the kind of the currently defined complex black box";
     mCommandDict[info.keyword] = info;
 
@@ -370,7 +375,7 @@ namespace bbtk
     mCommandDict[info.keyword] = info;
     */
 
-    bbtkDebugDecTab("Interpreter",9);
+
 
   } 
   //=======================================================================
@@ -383,9 +388,9 @@ namespace bbtk
    */
   Interpreter::~Interpreter()
   {
-    bbtkDebugMessageInc("Interpreter",9,"==> Interpreter::~Interpreter()" <<std::endl);
+    bbtkDebugMessage("object",2,"==> ~Interpreter()" <<std::endl);
     mVirtualExecuter = VirtualExec::Pointer();
-    bbtkDebugMessageInc("Interpreter",9,"<== Interpreter::~Interpreter()" <<std::endl);
+    bbtkDebugMessage("object",2,"<== ~Interpreter()" <<std::endl);
   }
   //=======================================================================
 
@@ -396,7 +401,7 @@ namespace bbtk
                                      const std::string& script_file,
                                      int script_line 
                                      )
-    : Exception("Interpreter",0,message),
+    : Exception("interpreter",0,message),
       mInScriptFile(in_script_file),
       mScriptFile(script_file),
       mScriptLine(script_line)
@@ -615,7 +620,7 @@ namespace bbtk
   //=======================================================================
   Interpreter::ExitStatus Interpreter::InterpretFile( const std::string& filename, bool source )
   {
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
+    bbtkDebugMessage("interpreter",4,"==> Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
 
     bool exm = mCommandLine;
     mCommandLine = false;
@@ -629,10 +634,10 @@ namespace bbtk
     } 
     CATCH_MACRO;
     
-    bbtkDebugMessage("Interpreter",9,
-                    "EO Interpreter::InterpretFile(\""
+    bbtkDebugMessage("interpreter",4,
+                    "<== Interpreter::InterpretFile(\""
                     <<filename<<"\")"<<std::endl);
-    bbtkDecTab("Interpreter",9);
+
 
     mCommandLine = exm;
     
@@ -645,7 +650,7 @@ namespace bbtk
   Interpreter::ExitStatus 
   Interpreter::InterpretBuffer( std::stringstream* buffer )
   {
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretBuffer()"<<std::endl);
+    bbtkDebugMessage("interpreter",4,"==> Interpreter::InterpretBuffer()"<<std::endl);
 
     bool exm = mCommandLine;
     mCommandLine = false;
@@ -660,8 +665,8 @@ namespace bbtk
     CATCH_MACRO;
     
     //    CloseAllFiles();
-    bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretBuffer()"<<std::endl);
-    bbtkDecTab("Interpreter",9);
+    bbtkDebugMessage("interpreter",4,"<== Interpreter::InterpretBuffer()"<<std::endl);
+
     
     mCommandLine = exm;
     return mStatus;
@@ -672,8 +677,8 @@ namespace bbtk
   /// Interprets the currently open streams
   Interpreter::ExitStatus Interpreter::InterpretCurrentStreams()
   {
-    bbtkDebugMessageInc("Interpreter",9,
-                       "Interpreter::InterpretCurrentStreams()"<<std::endl);
+    bbtkDebugMessage("interpreter",4,
+                    "==> Interpreter::InterpretCurrentStreams()"<<std::endl);
 
     while (mFile.size()>0) 
       {
@@ -682,20 +687,26 @@ namespace bbtk
          char buf[500];
          mFile.back()->getline(buf,500);
          std::string str(buf);
-         
+         //size 0 JCP 21-09-2009
          int size=str.length();
-         if ( str[ size-1 ]==13  )
+         if(size != 0){
+                 if ( str[ size-1 ]==13  )
             {
              str.erase(size-1,1);
             }
-         try
-           {
-             DoInterpretLine(str);
-           }
-         CATCH_MACRO;
+                 try
+                       {
+                         DoInterpretLine(str);
+                       }
+                 CATCH_MACRO;
+         }
+         
        } 
        CloseCurrentFile();
       }
+    bbtkDebugMessage("interpreter",4,
+                    "<== Interpreter::InterpretCurrentStreams()"<<std::endl);
+
     return mStatus;
   }
   //=======================================================================
@@ -704,46 +715,212 @@ namespace bbtk
   /// Runs the interpretation of a command
   Interpreter::ExitStatus Interpreter::InterpretLine( const std::string& line )
   {
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretLine('"<<line<<"')"<<std::endl);
+    bbtkDebugMessage("interpreter",5,"==> Interpreter::InterpretLine('"<<line<<"')"<<std::endl);
 
     try 
     {
       mStatus = Interpreter_OK;
       mInsideComment = false;
+//std::cout<<"JCP bbtkInterpreter.cxx Interpreter::InterpretLine("<<std::endl;
       DoInterpretLine(line );
     }
     CATCH_MACRO;
     
     
-    bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretLine()"
-                    <<std::endl);
-    bbtkDecTab("Interpreter",9);
+   bbtkDebugMessage("interpreter",5,"<== Interpreter::InterpretLine('"<<line<<"')"<<std::endl);
     
     return mStatus;
   }
   //=======================================================================  
   
+       void Interpreter::commandNew(std::string boxType, std::string boxName)
+    {
+               mVirtualExecuter->Create(boxType,boxName);
+    }
+       
+       void Interpreter::commandDelete(std::string boxName)
+    {
+               mVirtualExecuter->Destroy(boxName);
+    }
+
+       void Interpreter::commandConnection(std::string nodeFrom, std::string outputLabel, std::string nodeTo, std::string inputLabel)
+    {
+               mVirtualExecuter->Connect(nodeFrom,outputLabel,nodeTo,inputLabel);
+    }
+               
+       void Interpreter::commandPackage(std::string packageName)
+    {
+               mVirtualExecuter->BeginPackage(packageName);
+    }
+       
+       void Interpreter::commandEndPackage()
+    {
+               mVirtualExecuter->EndPackage();
+    }
+       
+       void Interpreter::commandDefine(std::string name, std::string pack, std::string scriptfilename)
+    {
+               mVirtualExecuter->Define(name,pack,scriptfilename);
+    }
+
+       void Interpreter::commandEndDefine()
+    {
+               mVirtualExecuter->EndDefine();
+    }
+
+       void Interpreter::commandKind(std::string kind)
+    {
+               mVirtualExecuter->Kind(kind);
+    }
+       
+       void Interpreter::commandPrint(std::string value)
+    {
+               mVirtualExecuter->Print(value);
+    }
+       
+       
+       void Interpreter::commandExec(std::string word)
+    {
+               if (word=="freeze") 
+               {
+                       mVirtualExecuter->SetNoExecMode(true);
+                       mThrow = false;
+               }
+               else if (word=="freeze_no_error") 
+               {
+                       mVirtualExecuter->SetNoExecMode(true);
+                       mVirtualExecuter->SetNoErrorMode(true);
+                       mThrow = false;
+               }
+               else if (word=="unfreeze") 
+               {
+                       mVirtualExecuter->SetNoExecMode(false);
+                       mVirtualExecuter->SetNoErrorMode(false);
+               }
+               else
+               {
+                       mVirtualExecuter->Execute(word);
+               } // if
+    }
+       
+       
+       void Interpreter::commandInput(std::string name, std::string box, std::string input,std::string  help)
+    {
+               mVirtualExecuter->DefineInput(name,box,input,help);
+    }
+       
+       void Interpreter::commandOutput(std::string name, std::string box, std::string output,std::string  help)
+    {
+               mVirtualExecuter->DefineOutput(name,box,output,help);
+    }
+       
+       void Interpreter::commandSet(std::string box, std::string input, std::string value)
+    {
+               mVirtualExecuter->Set(box,input,value);
+    }
+
+       void Interpreter::commandAuthor(std::string author)
+    {
+               mVirtualExecuter->Author(author);
+    }
+
+       void Interpreter::commandCategory(std::string categorytype)
+    {
+               mVirtualExecuter->Category(categorytype);
+    }
+       
+       
+       
+       void Interpreter::commandDescription(std::string description)
+    {
+               mVirtualExecuter->Description(description);
+    }
+
+       
+       void Interpreter::commandClear()
+    {
+               mVirtualExecuter->Clear();
+    }
+       
+       void Interpreter::commandInclude(std::string word, bool ok)
+    {
+               // if 'source' was given (words.size()==3) then tell to set the 
+               // source file name of the current complex box with the full file name included
+               if (mCommandLine)
+               {
+                       InterpretFile(word, ok ); 
+               }
+               else
+               {
+                       SwitchToFile(word , ok );
+               }
+    }
+       
+       
+       void Interpreter::commandLoad(std::string packageName)
+    {
+               GetExecuter()->LoadPackage(packageName);
+    }
 
+       void Interpreter::commandUnload(std::string packageName)
+    {
+               GetExecuter()->UnLoadPackage(packageName);
+    }
+       
+       void Interpreter::commandBreak()
+    {
+           /*
+                std::cout << "BreakException(" 
+                <<in_script<<","
+                <<file<<","
+                <<line<<")"<<std::endl;
+                */
+               bbtkError("break");//,in_script,file,line);
+           //      throw BreakException(in_script,file,line);
+    }
+       
+       void Interpreter::commandQuit()
+    {
+               bbtkError("quit");//,in_script,file,line);
+               //throw QuitException(in_script,file,line);
+    }
+       
+       void Interpreter::commandMessage()
+    {
+               mVirtualExecuter->HelpMessages();
+    }
+       
+//ups2 EED Borrame     
+       void Interpreter::commandMessage(std::string kind, std::string levelstr)
+    {
+               int level=0;
+               sscanf(levelstr.c_str(),"%d",&level);
+               mVirtualExecuter->SetMessageLevel(kind,level);
+
+    }
+       
+       
+       
   //=======================================================================  
   void Interpreter::DoInterpretLine( const std::string& line )
   {
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::DoInterpretLine(\""<<line<<"\")"<<std::endl);
-    
+    bbtkDebugMessage("interpreter",6,"==> Interpreter::DoInterpretLine(\""
+                    <<line<<"\")"<<std::endl);
     std::vector<std::string> words;
     SplitLine(line,words);
 
     // Empty line
     if (words.size()<1) 
     {
-       bbtkDebugDecTab("Interpreter",9);
+       bbtkDebugDecTab("interpreter",9);
        return;
     }
 
     // Single line comment : # or //
     if ( words[0][0]=='#' || (words[0][0]=='/' && words[0][1]=='/') ) 
     {  
-       bbtkDebugDecTab("Interpreter",9);
-       bbtkMessage("Interpreter",9,"Comment"<<std::endl);
+       bbtkDebugDecTab("interpreter",9);
+       bbtkMessage("interpreter",9,"Comment"<<std::endl);
        return;
     }
 
@@ -751,19 +928,19 @@ namespace bbtk
     
     if (words[0][0]=='/' && words[0][1]=='*') 
     {  
-       bbtkDebugDecTab("Interpreter",9);
-       bbtkMessage("Interpreter",9,"In multiline comment"<<std::endl);
+       bbtkDebugDecTab("interpreter",9);
+       bbtkMessage("interpreter",9,"In multiline comment"<<std::endl);
        mInsideComment = true;
        return;
     }
 
     if (words[0][0]=='*' && words[0][1]=='/') 
     {  
-       bbtkDebugDecTab("Interpreter",9);
-       bbtkMessage("Interpreter",9,"Out multiline comment"<<std::endl);
+       bbtkDebugDecTab("interpreter",9);
+       bbtkMessage("interpreter",9,"Out multiline comment"<<std::endl);
        if ( !mInsideComment ) {
-          bbtkDebugDecTab("Interpreter",9);
-          bbtkMessage("Interpreter",9,"Comment mismatch : '*/' with no matching '/*'"<<std::endl);       
+          bbtkDebugDecTab("interpreter",9);
+          bbtkMessage("interpreter",9,"Comment mismatch : '*/' with no matching '/*'"<<std::endl);       
        }
        mInsideComment = false;
        return;
@@ -771,33 +948,36 @@ namespace bbtk
 
     if (mInsideComment) 
     {  
-       bbtkDebugDecTab("Interpreter",9);
-       bbtkMessage("Interpreter",9,"Multiline Comment"<<std::endl);
+       bbtkDebugDecTab("interpreter",9);
+       bbtkMessage("interpreter",9,"Multiline Comment"<<std::endl);
        return;
     }
 
     // Command 
     CommandInfoType command;
     InterpretCommand(words,command);
-
-    bbtkDebugMessage("Interpreter",9,
+//std::cout<<"JCP bbtkInterpreter command.keyword ="<<command.keyword<<std::endl;
+    bbtkDebugMessage("interpreter",9,
                      "Command='"<<command.keyword
                       <<"' code="<<command.code<<std::endl); 
-    int level=0;
+         
     std::string left,right,left2,right2;
     std::string filename;
 
+//ups1 EED borrame       
     // message command
     if (command.code==cMessage)
       {
        if (words.size()<3)
          {
-           mVirtualExecuter->HelpMessages();
+                 commandMessage();
+//EED Borrame      mVirtualExecuter->HelpMessages();
          }
         else
          {
-           sscanf(words[2].c_str(),"%d",&level);
-           mVirtualExecuter->SetMessageLevel(words[1],level);
+               commandMessage(words[1],words[2]);
+//EED Borrame          sscanf(words[2].c_str(),"%d",&level);
+//EED Borrame      mVirtualExecuter->SetMessageLevel(words[1],level);
          }
        return;
       }
@@ -812,6 +992,7 @@ namespace bbtk
        bool in_script = false;
        std::string file("");
        int line = 0;
+
        if (mFileName.size()) 
          {
            std::ifstream* fs = dynamic_cast<std::ifstream*>(mFile.back());
@@ -827,178 +1008,203 @@ namespace bbtk
                      <<file<<","
                      <<line<<")"<<std::endl;
            */
-           bbtkError("break");//,in_script,file,line);
+                 commandBreak();
+//EED Borrame      bbtkError("break");//,in_script,file,line);
            //      throw BreakException(in_script,file,line);
          }       
        else 
          {
-           bbtkError("quit");//,in_script,file,line);
+                 commandQuit();
+//EED Borrame      bbtkError("quit");//,in_script,file,line);
              //throw QuitException(in_script,file,line);
          }
        return;
       }   
-
+//std::cout<<" mVirtualExecuter->Create(words[1],words[2]); "<<line<<std::endl;
     // other cammands
+
     switch (command.code) 
       {
       case cNew :
-        mVirtualExecuter->Create(words[1],words[2]);
+               commandNew(words[1],words[2]);
+//EED Borrame        mVirtualExecuter->Create(words[1],words[2]);
         break;
 
       case cDelete :
-       mVirtualExecuter->Destroy(words[1]);
+                         commandDelete(words[1]);
+//EED Borrame  mVirtualExecuter->Destroy(words[1]);
         break;
 
       case cConnect :
         Utilities::SplitAroundFirstDot(words[1],left,right);
         Utilities::SplitAroundFirstDot(words[2],left2,right2);      
-        mVirtualExecuter->Connect(left,right,left2,right2);
+        commandConnection(left,right,left2,right2);
+//EED Borrame        mVirtualExecuter->Connect(left,right,left2,right2);
         break;
 
       case cPackage :
-        mVirtualExecuter->BeginPackage(words[1]);
+                         commandPackage(words[1]);
+//EED Borrame                mVirtualExecuter->BeginPackage(words[1]);
         break;
 
       case cEndPackage :
-        mVirtualExecuter->EndPackage();
+                         commandEndPackage();
+//EED Borrame        mVirtualExecuter->EndPackage();
         break;
 
       case cDefine :
         if (mFileName.size()>0) 
         {
+//???                  commandDefine(????);
                   filename = mFileName.back(); //mIncludeFileName.back(); //Utilities::get_file_name(mFileName.back());
         }
         if (words.size()==2) 
         {
-           mVirtualExecuter->Define(words[1],"",filename);
+                       commandDefine(words[1],"",filename);
+//EED Borrame           mVirtualExecuter->Define(words[1],"",filename);
         }
         else
         {
-           mVirtualExecuter->Define(words[1],words[2],filename);
+                       commandDefine(words[1],words[2],filename);
+//EED Borrame           mVirtualExecuter->Define(words[1],words[2],filename);
         }
         break;
 
       case cEndDefine :
-        mVirtualExecuter->EndDefine();
+               commandEndDefine();
+//EED Borrame        mVirtualExecuter->EndDefine();
         break;
 
       case cKind :
-        mVirtualExecuter->Kind(words[1]);
+                       commandKind(words[1]);
+//EED Borrame        mVirtualExecuter->Kind(words[1]);
         break;
 
       case cPrint :
-        mVirtualExecuter->Print(words[1]);
+                         commandPrint(words[1]);
+//EED Borrame        mVirtualExecuter->Print(words[1]);
         break;
-        
+                         
       case cExec :
-        if (words[1]=="freeze") 
-         {
-           mVirtualExecuter->SetNoExecMode(true);
-           mThrow = false;
-         }
-       else if (words[1]=="freeze_no_error") 
-         {
-           mVirtualExecuter->SetNoExecMode(true);
-           mVirtualExecuter->SetNoErrorMode(true);
-           mThrow = false;
-         }
-       else if (words[1]=="unfreeze") 
-         {
-           mVirtualExecuter->SetNoExecMode(false);
-           mVirtualExecuter->SetNoErrorMode(false);
-         }
-       else
-         {
-           mVirtualExecuter->Execute(words[1]);
-         }
+                         commandExec(words[1]);
+//EED Borrame        if (words[1]=="freeze") 
+//EED Borrame    {
+//EED Borrame      mVirtualExecuter->SetNoExecMode(true);
+//EED Borrame      mThrow = false;
+//EED Borrame    }
+//EED Borrame  else if (words[1]=="freeze_no_error") 
+//EED Borrame    {
+//EED Borrame      mVirtualExecuter->SetNoExecMode(true);
+//EED Borrame      mVirtualExecuter->SetNoErrorMode(true);
+//EED Borrame      mThrow = false;
+//EED Borrame    }
+//EED Borrame  else if (words[1]=="unfreeze") 
+//EED Borrame    {
+//EED Borrame      mVirtualExecuter->SetNoExecMode(false);
+//EED Borrame      mVirtualExecuter->SetNoErrorMode(false);
+//EED Borrame    }
+//EED Borrame  else
+//EED Borrame    {
+//EED Borrame      mVirtualExecuter->Execute(words[1]);
+//EED Borrame    }
+                         
         break;
 
       case cInput :
         Utilities::SplitAroundFirstDot(words[2],left,right);
-        mVirtualExecuter->DefineInput(words[1],left,right,words[3]);
+                         commandInput(words[1],left,right,words[3]);
+//EED Borrame        mVirtualExecuter->DefineInput(words[1],left,right,words[3]);
         break;
 
       case cOutput :
         Utilities::SplitAroundFirstDot(words[2],left,right);
-        mVirtualExecuter->DefineOutput(words[1],left,right,words[3]);
+               commandOutput(words[1],left,right,words[3]);
+//EED Borrame         mVirtualExecuter->DefineOutput(words[1],left,right,words[3]);
         break;
 
       case cSet :
         Utilities::SplitAroundFirstDot(words[1],left,right);
-        mVirtualExecuter->Set(left,right,words[2]);
+               commandSet(left,right,words[2]);
+//EED Borrame        mVirtualExecuter->Set(left,right,words[2]);
         break;
 
       case cAuthor :
-        mVirtualExecuter->Author(words[1]);
+               commandAuthor(words[1]);
+//EED Borrame        mVirtualExecuter->Author(words[1]);
         break;
 
       case cNewGUI :
-        NewGUI(words[1],words[2]);
+               commandNewGUI(words[1],words[2]);
         break;
 
       case cCategory :
-        mVirtualExecuter->Category(words[1]);
+               commandCategory(words[1]);
+//EED Borrame   mVirtualExecuter->Category(words[1]);
         break;
 
       case cIndex :
         if (words.size()==1)
-            Index("tmp_index.html");
+                       commandIndex("tmp_index.html");
         else if (words.size()==2)
-            Index(words[1]);
+                       commandIndex(words[1]);
         else if (words.size()==3)
-            Index(words[1],words[2]);
+                       commandIndex(words[1],words[2]);
         break;
 
       case cDescription :
-        mVirtualExecuter->Description(words[1]);
+               commandDescription(words[1]);
+//EED Borrame        mVirtualExecuter->Description(words[1]);
         break;
 
       case cHelp :
-        Help(words);
+        commandHelp(words);
         break;
 
 
       case cGraph :
-        Graph(words);
+        commandGraph(words);
         break;
 
       case cConfig :
-        Config();
+        commandConfig();
         break;
 
       case cReset :  
-       Reset();
+       commandReset();
         break;
        
       case cClear :  
-       mVirtualExecuter->Clear();
+               commandClear();
+//EED Borrame          mVirtualExecuter->Clear();
         break;
 
       case cInclude :
-               // if 'source' was given (words.size()==3) then tell to set the 
-               // source file name of the current complex box with the full file name included
-               if (mCommandLine)
-        {
-           InterpretFile(words[1],(words.size()==3)); 
-        }
-        else
-        {
-            SwitchToFile(words[1],(words.size()==3) );
-        }
+                         commandInclude( words[1] , (words.size()==3) );
+//EED Borrame          // if 'source' was given (words.size()==3) then tell to set the 
+//EED Borrame          // source file name of the current complex box with the full file name included
+//EED Borrame                  if (mCommandLine)
+//EED Borrame        {
+//EED Borrame           InterpretFile(words[1],(words.size()==3)); 
+//EED Borrame        } else{
+//EED Borrame            SwitchToFile(words[1],(words.size()==3) );
+//EED Borrame        }
                break;
 
       case cLoad:
-        GetExecuter()->LoadPackage(words[1]);
+               commandLoad( words[1] );
+//EED Borrame        GetExecuter()->LoadPackage(words[1]);
         break;
 
       case cUnload:
-        GetExecuter()->UnLoadPackage(words[1]);
+               commandUnload( words[1] );
+//EED Borrame        GetExecuter()->UnLoadPackage(words[1]);
         break;
 
       case cDebug :
-       if (words.size()==2) Debug(words[1]);
-       else Debug("");
+                         if (words.size()==2) commandDebug(words[1]);
+                               else commandDebug("");
         break;
+                         
        /* obsolete
       case cWorkspace :
         if (words.size() == 2) 
@@ -1016,8 +1222,10 @@ namespace bbtk
         bbtkInternalError("should not reach here !!!");
    }
 
-   bbtkDecTab("Interpreter",9);
-}
+    bbtkDebugMessage("interpreter",6,"<== Interpreter::DoInterpretLine(\""
+                    <<line<<"\")"<<std::endl);
+    
+  }
   //=======================================================================  
 
 
@@ -1027,7 +1235,7 @@ namespace bbtk
   //=======================================================================
   void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>& tokens)
 {
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::SplitLine(\""<<str<<"\")"<<std::endl);
+    bbtkDebugMessage("interpreter",9,"==> Interpreter::SplitLine(\""<<str<<"\")"<<std::endl);
 
     std::string delimiters = "\"";
     std::vector<std::string> quote;
@@ -1041,7 +1249,7 @@ namespace bbtk
        ++i;
        if (i!=quote.end()) 
        {
-        //    bbtkDebugMessage("Interpreter",0,"\""<<*i<<"\""<<std::endl);
+        //    bbtkDebugMessage("interpreter",0,"\""<<*i<<"\""<<std::endl);
           tokens.push_back(*i);
           ++i;
        }
@@ -1049,17 +1257,16 @@ namespace bbtk
 
     for (i=tokens.begin(); i!=tokens.end(); ++i) 
     {
-       bbtkDebugMessage("Interpreter",9,"["<<*i<<"] ");
+      bbtkDebugMessage("interpreter",9,"--["<<*i<<"]"<<std::endl);
     }
-    bbtkDebugMessageCont("Interpreter",9,std::endl);
+    bbtkDebugMessage("interpreter",9,"<== Interpreter::SplitLine(\""<<str<<"\")"<<std::endl);
 
-    bbtkDebugDecTab("Interpreter",9);
  }
   //=======================================================================
 
 
   //=======================================================================
-  void Interpreter::Reset()
+  void Interpreter::commandReset()
   {
     // Cannot close all files if the reset command is read from a file !
     CloseAllFiles();
@@ -1077,7 +1284,7 @@ namespace bbtk
   {
     if (mVirtualExecuter->GetNoExecMode()) return;
 
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::Print(\""<<str<<"\")"<<std::endl);
+    bbtkDebugMessageInc("interpreter",9,"Interpreter::Print(\""<<str<<"\")"<<std::endl);
 
  // TO DO :
  // InterpretLine ("load std")
@@ -1139,7 +1346,7 @@ namespace bbtk
        std::cout << *i;
      }
      std::cout << std::endl;
-     bbtkDebugDecTab("Interpreter",9);
+     bbtkDebugDecTab("interpreter",9);
  }
 */
 
@@ -1161,8 +1368,8 @@ namespace bbtk
   // use ./directory/subdir/scrname.bbs
   //
 
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::SwitchToFile( \""
-                         <<name<<"\")"<<std::endl);
+    bbtkDebugMessage("interpreter",4,"==> Interpreter::SwitchToFile( \""
+                    <<name<<"\")"<<std::endl);
 
     std::vector<std::string> script_paths;
     std::string fullPathScriptName;  // full path script name
@@ -1172,7 +1379,7 @@ namespace bbtk
     // The following is *NOT* a debug time message :
     // It's a user intended message.
     // Please don't remove it.
-    bbtkMessage("Interpreter",1,
+    bbtkMessage("interpreter",1,
         "look for : [" << name
         << "]" << std::endl);
 
@@ -1180,7 +1387,7 @@ namespace bbtk
     std::string upath;
     pkgname = Utilities::ExtractScriptName(name,upath);
 
-    bbtkMessage("Interpreter",3,
+    bbtkMessage("interpreter",3,
                "package name:[" << pkgname
                 << "] path:[" << upath << "]" << std::endl);
     bool fullnameGiven = false; 
@@ -1197,7 +1404,7 @@ namespace bbtk
        // ==== no path provided : look in root bbs path
        if (upath.size()==0)
          {
-           //      bbtkMessage("Interpreter",1,
+           //      bbtkMessage("interpreter",1,
            // LG : add all bbs path
            //  script_paths.push_back(  ConfigurationFile::GetInstance().Get_root_bbs_path() );
            std::vector<std::string>::const_iterator i;
@@ -1261,7 +1468,7 @@ namespace bbtk
        std::vector<std::string>::iterator i;
        for (i=script_paths.begin();i!=script_paths.end();i++)
          {
-           bbtkMessage("Interpreter",1,
+           bbtkMessage("interpreter",1,
                        "--> Looking in '" << *i << "'" << std::endl);
            
            Filenames.clear();
@@ -1277,7 +1484,7 @@ namespace bbtk
                if ( (*j).substr(lgr-4, 4) != ".bbp") continue; 
                
                (*stream) << "include \"" << *j << "\"\n";
-               bbtkMessage("Interpreter",2,"  --> Found '" << *j << "'" << std::endl);
+               bbtkMessage("interpreter",2,"  --> Found '" << *j << "'" << std::endl);
                
                nbBssFiles++;
              } // for (std::vector...
@@ -1286,12 +1493,12 @@ namespace bbtk
        // === Result ...
        if (nbBssFiles==0)
          {
-           bbtkMessage("Interpreter",1,
+           bbtkMessage("interpreter",1,
                        "  --> No .bbp found"<< std::endl);
          } 
        else 
          {
-           bbtkMessage("Interpreter",1,
+           bbtkMessage("interpreter",1,
                        "  --> "<<nbBssFiles<<" .bbp found"<< std::endl);
            SwitchToStream(stream);
          }
@@ -1365,49 +1572,52 @@ namespace bbtk
                }
          
                std::string tfullPathScriptName = Utilities::MakePkgnameFromPath(path, name, false);
-               if (tfullPathScriptName.substr(tfullPathScriptName.size()-4, 3)==".bb")
-               {
-                 fullPathScriptName = tfullPathScriptName;
-                       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 <<"] : does not exist" 
-                         <<std::endl);
-                               continue;  // try next path
-                       }
-                       bbtkMessage("Interpreter",2,
-                             "   [" <<fullPathScriptName 
-                                 <<"] : found" <<std::endl);
-                       foundFile = true;
-                       break; // a script was found; we stop iterating
-               }
-               else 
-               {
-                       fullPathScriptName = tfullPathScriptName + ".bbs";
-                       // Check if library exists
-                       if ( ! Utilities::FileExists(fullPathScriptName) )
+//Addition JCP tfullPathScriptName.size()>=4 
+               if(tfullPathScriptName.size()>=4){
+                       if (tfullPathScriptName.substr(tfullPathScriptName.size()-4, 3)==".bb")
                        {
-                               fullPathScriptName = tfullPathScriptName + ".bbp";
+                         fullPathScriptName = tfullPathScriptName;
                                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,
-                                       "   [" <<tfullPathScriptName <<".bbs/.bbp] : do not exist" 
-                                       <<std::endl);
+                                       bbtkMessage("interpreter",2,
+                                 "   [" <<fullPathScriptName <<"] : does not exist" 
+                                 <<std::endl);
                                        continue;  // try next path
                                }
+                               bbtkMessage("interpreter",2,
+                                         "   [" <<fullPathScriptName 
+                                         <<"] : found" <<std::endl);
+                               foundFile = true;
+                               break; // a script was found; we stop iterating
                        }
-                       bbtkMessage("Interpreter",2,
-                     "   [" <<fullPathScriptName 
-                     <<"] : found" <<std::endl);
-                       foundFile = true;
-                       break; // a script was found; we stop iterating
-               }
+                       else 
+                       {
+                               fullPathScriptName = tfullPathScriptName + ".bbs";
+                               // Check if library exists
+                               if ( ! Utilities::FileExists(fullPathScriptName) )
+                               {
+                                       fullPathScriptName = tfullPathScriptName + ".bbp";
+                                       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,
+                                               "   [" <<tfullPathScriptName <<".bbs/.bbp] : do not 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() )
   }
 
@@ -1436,7 +1646,9 @@ namespace bbtk
   //=======================================================================
 void Interpreter::SwitchToStream( std::stringstream* stream )
 {
-    mFile.push_back(stream);
+  bbtkDebugMessage("interpreter",4,"==> Interpreter::SwitchToStream()"
+                  <<std::endl);
+   mFile.push_back(stream);
     std::ostringstream buffer_name;
     bufferNb++;
     buffer_name << "buffer_" ;
@@ -1456,7 +1668,11 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
   void Interpreter::LoadScript( std::string fullPathScriptName,
                                std::string includeScriptName)
   {
-     Utilities::replace( fullPathScriptName , 
+    bbtkDebugMessage("interpreter",4,"==> Interpreter::LoadScript("
+                    <<fullPathScriptName<<")"
+                    <<std::endl);
+
+    Utilities::replace( fullPathScriptName , 
                         INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR);
    
      if (find(mFileNameHistory.begin(),
@@ -1475,7 +1691,7 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
         return;
     }
 
-    bbtkMessage("Interpreter",1,"   -->[" << fullPathScriptName 
+    bbtkMessage("interpreter",1,"   -->[" << fullPathScriptName 
                << "] found" << std::endl);
 
     mFile.push_back(s);
@@ -1484,23 +1700,23 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
     mIncludeFileName.push_back(includeScriptName);
     mLine.push_back(0);
 
-       return;
+    return;
   }
   //=======================================================================
 
   //=======================================================================
   void Interpreter::CloseCurrentFile()
   {
-    bbtkDebugMessage("Interpreter",9,"Interpreter::CloseCurrentFile()"
+    bbtkDebugMessage("interpreter",9,"==> Interpreter::CloseCurrentFile()"
                       <<std::endl);
 
     if (mFile.size()==0)
     {
-      bbtkDebugMessage("Interpreter",9," -> no file left open"<<std::endl);
+      bbtkDebugMessage("interpreter",9," -> no file left open"<<std::endl);
       return;
     }
 
-    bbtkDebugMessage("Interpreter",9," Closing file '"<<mFileName.back()<<"'"<<std::endl);
+    bbtkDebugMessage("interpreter",9," Closing file '"<<mFileName.back()<<"'"<<std::endl);
 
     std::ifstream* file = dynamic_cast<std::ifstream*>(mFile.back());
     if (file!=0) file->close();
@@ -1511,10 +1727,10 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
     mIncludeFileName.pop_back();
     mLine.pop_back();
 
-    bbtkDebugMessage("Interpreter",9," Remains "
+    bbtkDebugMessage("interpreter",9," Remains "
                      <<mFile.size()
                      <<" open"<<std::endl);
-    bbtkDebugMessage("Interpreter",9,"EO Interpreter::CloseCurrentFile()"
+    bbtkDebugMessage("interpreter",9,"<== Interpreter::CloseCurrentFile()"
                      <<std::endl);
   }
   //=======================================================================
@@ -1522,14 +1738,14 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
  //=======================================================================
   void Interpreter::CloseAllFiles()
   {
-    bbtkDebugMessage("Interpreter",9,"Interpreter::CloseAllFiles()"
+    bbtkDebugMessage("interpreter",9,"==> Interpreter::CloseAllFiles()"
                       <<std::endl);
 
     while (mFile.size() != 0) 
     {
        CloseCurrentFile();
     }
-    bbtkDebugMessage("Interpreter",9,"EO Interpreter::CloseAllFiles()"
+    bbtkDebugMessage("interpreter",9,"<== Interpreter::CloseAllFiles()"
                       <<std::endl);
   }
   //=======================================================================
@@ -1540,7 +1756,7 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
   void Interpreter::InterpretCommand( const std::vector<std::string>& words,
                                       CommandInfoType& info )
   {
-    bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretCommand(...)"<<std::endl);
+    bbtkDebugMessage("interpreter",9,"==> Interpreter::InterpretCommand(...)"<<std::endl);
 
     // searches the command keyword
     CommandDictType::iterator c;
@@ -1556,16 +1772,18 @@ void Interpreter::SwitchToStream( std::stringstream* stream )
        HelpCommand(words[0]);
        bbtkError(words[0]<<" : wrong number of arguments");
     }
-
+//std::cout<<"Interpreter::InterpretCommand( const std::vector<std::string>& words,"<<std::endl;
     info = c->second;
-    bbtkDecTab("Interpreter",9);
+
+    bbtkDebugMessage("interpreter",9,"<== Interpreter::InterpretCommand(...)"<<std::endl);
+
   }
   //=======================================================================
 
 
   //=======================================================================
   /// Displays help on all the commands
-void Interpreter::Help(const std::vector<std::string>& words)
+void Interpreter::commandHelp(const std::vector<std::string>& words)
 {
     unsigned int nbarg = words.size()-1;
 
@@ -1577,7 +1795,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
     {
       if (words[1]=="packages") 
       {
-         GetExecuter()->GetFactory()->PrintPackages(true);
+         GetExecuter()->GetFactory()->PrintHelpListPackages(true);
          return;
       }
       try 
@@ -1588,7 +1806,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
       {
          try 
          {
-            GetExecuter()->GetFactory()->HelpPackage(words[1]);
+            GetExecuter()->GetFactory()->PrintHelpPackage(words[1]);
            if ( mUser != 0 )
              {
                std::string url = 
@@ -1605,7 +1823,8 @@ void Interpreter::Help(const std::vector<std::string>& words)
           try 
             {
               std::string package;
-              GetExecuter()->GetFactory()->HelpBlackBox(words[1],package);
+              GetExecuter()->GetFactory()->PrintHelpDescriptor(words[1],
+                                                               package);
               if ( mUser != 0 )
                 {
                   std::string url = 
@@ -1622,7 +1841,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
             {
               try
                 {
-                  GetExecuter()->ShowRelations(words[1],"0","9999");
+                  GetExecuter()->PrintHelpBlackBox(words[1],"0","9999");
                 }
               catch (bbtk::Exception h){
                 bbtkError("\""<<words[1].c_str()
@@ -1638,12 +1857,12 @@ void Interpreter::Help(const std::vector<std::string>& words)
       {
          if ( words[1]=="packages" )
          {
-            GetExecuter()->GetFactory()->PrintPackages(true,true);
+            GetExecuter()->GetFactory()->PrintHelpListPackages(true,true);
             return;
           }
          try 
          {
-            GetExecuter()->GetFactory()->HelpPackage(words[1],true);
+            GetExecuter()->GetFactory()->PrintHelpPackage(words[1],true);
          }
          catch (bbtk::Exception f) 
          {
@@ -1664,7 +1883,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
 
    //===================================================================    
   /// Displays the Configuration
-  void Interpreter::Config() const
+  void Interpreter::commandConfig() const
   {
     ConfigurationFile::GetInstance().GetHelp(1);
   }  
@@ -1949,7 +2168,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
   //=======================================================================
   void Interpreter::CommandLineInterpreter()
   {
-    bbtkDebugMessageInc("Interpreter",9,
+    bbtkDebugMessageInc("interpreter",9,
                         "Interpreter::CommandLineInterpreter()"<<std::endl);
 
 #ifdef BBTK_USE_TERMIOS_BASED_PROMPT  
@@ -1980,7 +2199,7 @@ void Interpreter::Help(const std::vector<std::string>& words)
       /*
       catch (QuitException e)
       {
-       bbtkMessage("Interpreter",1,"Interpreter : Quit"<<std::endl);
+       bbtkMessage("interpreter",1,"Interpreter : Quit"<<std::endl);
         again = false;
       }
       */
@@ -2005,11 +2224,11 @@ void Interpreter::Help(const std::vector<std::string>& words)
 
     std::cout << "Good bye !" << std::endl;
 
-    bbtkDebugDecTab("Interpreter",9);
+    bbtkDebugDecTab("interpreter",9);
   }
 
 //=======================================================================
-void Interpreter::Graph(const std::vector<std::string>& words)
+void Interpreter::commandGraph(const std::vector<std::string>& words)
 {
   std::string page;
     bool system_display = true;
@@ -2054,7 +2273,7 @@ void Interpreter::Graph(const std::vector<std::string>& words)
 
 
 //=======================================================================
-void  Interpreter::Index(const std::string& filename, 
+void  Interpreter::commandIndex(const std::string& filename, 
                         const std::string& type)
 {
   Factory::IndexEntryType t;
@@ -2069,7 +2288,7 @@ void  Interpreter::Index(const std::string& filename,
 
 
 //=======================================================================
-void  Interpreter::NewGUI(const std::string& boxname,
+void  Interpreter::commandNewGUI(const std::string& boxname,
                             const std::string& instanceName)
 {
   if (mRealExecuter.expired())
@@ -2107,7 +2326,7 @@ void  Interpreter::NewGUI(const std::string& boxname,
   if (workspace==0)
     {
       delete s;
-      bbtkError("Interpreter::CreateGUI : could not access the executer currently defined complex box");
+      bbtkError("interpreter::CreateGUI : could not access the executer currently defined complex box");
     }
  
 
@@ -2128,9 +2347,14 @@ void  Interpreter::NewGUI(const std::string& boxname,
       // Get the input descriptor 
       const BlackBoxInputDescriptor* d = box->bbGetDescriptor()->GetInputDescriptor(i->first);
       // If it is a "system" input : skip it
+#ifdef USE_WXWIDGETS
       if ( ( d->GetCreatorTypeInfo() == typeid(AtomicBlackBoxDescriptor)) ||
           ( d->GetCreatorTypeInfo() == typeid(WxBlackBoxDescriptor)) )
        continue;
+#else
+      if ( ( d->GetCreatorTypeInfo() == typeid(AtomicBlackBoxDescriptor)) )
+       continue;
+#endif
       bool widok = true;
       std::string widget,adaptor;
       // try to find a widget adaptor
@@ -2241,7 +2465,7 @@ void  Interpreter::NewGUI(const std::string& boxname,
 
 
  //==========================================================================
-  void Interpreter::Debug(const std::string& name)
+  void Interpreter::commandDebug(const std::string& name)
   {
     if ((name.length()==2)&&(name[0]=='-'))
       {
@@ -2253,7 +2477,7 @@ void  Interpreter::NewGUI(const std::string& boxname,
          {
            //      int o = MessageManager::GetMessageLevel("debug");
            //      if (o<2) MessageManager::SetMessageLevel("debug",2);
-           mVirtualExecuter->GetFactory()->CheckPackages();
+           mVirtualExecuter->GetFactory()->Check();
            //      MessageManager::SetMessageLevel("debug",o);
          }
       }