Program: bbtk
Module: $RCSfile: bbtkInterpreter.cxx,v $ $
Language: C++
- Date: $Date: 2008/03/03 14:55:55 $
- Version: $Revision: 1.39 $
+ Date: $Date: 2008/03/10 06:24:13 $
+ Version: $Revision: 1.42 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
namespace bbtk
{
-Interpreter* Interpreter::mGlobalInterpreter = NULL;
+ //Interpreter* Interpreter::mGlobalInterpreter = NULL;
//=======================================================================
/**
*/
Interpreter::Interpreter()
:
+#ifdef _USE_WXWIDGETS_
+ mWxConsole(0),
+#endif
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);
bbtkDebugMessageInc("Interpreter",9,"Interpreter::Interpreter()" <<std::endl);
- mGlobalInterpreter = this;
-
mExecuter = new bbtk::Executer();
+ mExecuter->SetInterpreter(this);
// For the time being, comment out previous line, and
// uncomment next line to check Transcriptor
std::cout << "=========================================~Interpreter()" << std::endl;
bbtkDebugMessageInc("Interpreter",9,"Interpreter::~Interpreter()" <<std::endl);
delete mExecuter;
- //delete mFactory;
bbtkDebugDecTab("Interpreter",9);
}
try
{
SwitchToFile(filename);
+
+printf("EED Interpreter::InterpretFile 0001\n" );
+int ii,ssize = mFileName.size();
+for (ii=0;ii<ssize;ii++)
+{
+ printf("EED RRR Interpreter::InterpretFile %s\n", mFileName[ii].c_str() );
+}
+
bool insideComment = false; // for multiline comment
while (mFile.size()>0)
{
+printf("EED --- %s --- Interpreter::InterpretFile \n", mFileName[0].c_str() );
while ((mFile.size()>0) &&
(!mFile.back()->eof()))
+//EED3 (!mFile[0]->eof()))
{
mLine.back()++;
char buf[500];
mFile.back()->getline(buf,500);
+//EED3 mFile[0]->getline(buf,500);
std::string str(buf);
int size=str.length();
}
InterpretLine(str, insideComment);
+printf("EED Interpreter::InterpretFile %s\n", str.c_str() );
}
//if (mFile.size()>0)
CloseCurrentFile();
// if 'source' was given
if (words.size()==3)
{
- this->mExecuter->SetCurrentFileName(words[1]);
+ GetExecuter()->SetCurrentFileName(words[1]);
}
break;
case cLoad:
- LoadPackage(words[1]);
+ GetExecuter()->GetFactory()->LoadPackage(words[1]);
break;
case cUnload:
- UnLoadPackage(words[1]);
+ GetExecuter()->GetFactory()->UnLoadPackage(words[1]);
break;
case cQuit :
{
if ((*i).substr((*i).size()-4, 4) != ".bbs")
continue; // ignore non .bbs files
- LoadScript(*i,name);
+ std::string command("include ");
+ command += *i;
+ // LoadScript(*i,name);
+ bool tmp;
+ InterpretLine(command,tmp);
nbBssFiles++;
}
if (nbBssFiles==0)
}
foundFile = true;
-
+ Filenames.clear();
int nbFiles = Utilities::Explore(fullDirectoryName, false, Filenames);
nbBssFiles = 0;
for (std::vector<std::string>::iterator i = Filenames.begin(); i!= Filenames.end(); ++i)
{
+//EEDprintf("EED Interpreter::SwitchToFile %s\n",(*i).c_str() );
if ((*i).substr((*i).size()-4, 4) != ".bbs")
continue; // ignore non .bbs files
- LoadScript(*i,name);
+ std::string command("include ");
+ command += *i;
+ bool tmp;
+ InterpretLine(command,tmp);
+ // LoadScript(*i,name);
nbBssFiles++;
}
if (nbBssFiles==0)
void Interpreter::LoadScript( std::string fullPathScriptName,
std::string includeScriptName)
{
- if (find(mFileName.begin(),mFileName.end(),fullPathScriptName)
- !=mFileName.end())
+//EED printf("EED Interpreter::LoadScript >>01\n");
+ Utilities::replace( fullPathScriptName , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR);
+
+ bool okScriptExist=false;
+ int iStrScript,sizeVecStricpt=mFileName.size();
+ for ( iStrScript=0;iStrScript<sizeVecStricpt;iStrScript++)
+ {
+//EED printf(" EED %d Interpreter::LoadScript %s __>>__ %s\n", iStrScript,mFileName[iStrScript].c_str(),fullPathScriptName.c_str() );
+ if (mFileName[iStrScript] == fullPathScriptName )
+ {
+ printf(" EED %d Interpreter::LoadScript iguales\n",iStrScript );
+ okScriptExist=true;
+ } // if
+ } // for
+
+ if (find(mFileName.begin(),mFileName.end(),fullPathScriptName)!=mFileName.end())
+// if (okScriptExist==true)
{
+//EED printf("EED Interpreter::LoadScript Exit method\n");
bbtkMessage("Interpreter",1,"file '"<<fullPathScriptName
<<"' already open : I do not open it once more to prevent recursive inclusion"<<std::endl);
return;
mFileName.push_back(fullPathScriptName);
mIncludeFileName.push_back(includeScriptName);
mLine.push_back(0);
+//EED printf("EED Interpreter::LoadScript >>02\n");
return;
}
return;
}
+ bbtkDebugMessage("Interpreter",9," Closing file '"<<mFileName.back()<<"'"<<std::endl);
mFile.back()->close();
delete mFile.back();
mFile.pop_back();
- bbtkDebugMessage("Interpreter",9,
- " Closing file '"<<mFileName.back()<<"'"<<std::endl);
-
mFileName.pop_back();
mIncludeFileName.pop_back();
- mLine.pop_back();
+ mLine.pop_back();
+/*EED3
+ bbtkDebugMessage("Interpreter",9," Closing file '"<<mFileName[0]<<"'"<<std::endl);
+ mFile[0]->close();
+ delete mFile[0];
+ mFile.erase( mFile.begin() );
+ mFileName.erase( mFileName.begin() );
+ mIncludeFileName.erase( mIncludeFileName.begin() );
+ mLine.erase( mLine.begin() );
+*/
+
bbtkDebugMessage("Interpreter",9," Remains "
<<mFile.size()
<<" open"<<std::endl);
{
if (words[1]=="packages")
{
- PrintPackages(true);
+ GetExecuter()->GetFactory()->PrintPackages(true);
return;
}
try
{
try
{
- HelpPackage(words[1]);
+ GetExecuter()->GetFactory()->HelpPackage(words[1]);
#ifdef _USE_WXWIDGETS_
- if ( WxConsole::GetInstance() != 0 )
+ if ( mWxConsole != 0 )
{
std::string url =
ConfigurationFile::GetInstance().Get_doc_path();
url += "/bbdoc/" + words[1] + "/index.html";
if (Utilities::FileExists(url))
{
- WxConsole::GetInstance()->ShowHtmlPage(url);
+ mWxConsole->ShowHtmlPage(url);
}
}
#endif
try
{
std::string package;
- HelpBlackBox(words[1],package);
+ GetExecuter()->GetFactory()->HelpBlackBox(words[1],package);
#ifdef _USE_WXWIDGETS_
- if ( WxConsole::GetInstance() != 0 )
+ if ( mWxConsole != 0 )
{
std::string url =
ConfigurationFile::GetInstance().Get_doc_path();
if (Utilities::FileExists(url))
{
url += "#" + words[1];
- WxConsole::GetInstance()->ShowHtmlPage(url);
+ mWxConsole->ShowHtmlPage(url);
}
}
#endif
{
try
{
- this->mExecuter->ShowRelations(words[1],"0","9999");
+ GetExecuter()->ShowRelations(words[1],"0","9999");
}
catch (bbtk::Exception h){
bbtkError("\""<<words[1].c_str()
{
if ( words[1]=="packages" )
{
- PrintPackages(true,true);
+ GetExecuter()->GetFactory()->PrintPackages(true,true);
return;
}
try
{
- HelpPackage(words[1],true);
+ GetExecuter()->GetFactory()->HelpPackage(words[1],true);
}
catch (bbtk::Exception f)
{
bool system_display = true;
#ifdef _USE_WXWIDGETS_
- if ( WxConsole::GetInstance() != 0 ) system_display = false;
+ if ( mWxConsole != 0 ) system_display = false;
#endif
if (words.size()==1)
}
#ifdef _USE_WXWIDGETS_
- if ( WxConsole::GetInstance() != 0 )
- WxConsole::GetInstance()->ShowHtmlPage(page);
+ if ( mWxConsole != 0 )
+ mWxConsole->ShowHtmlPage(page);
#endif
}
//=======================================================================
else if (type=="Packages") t = Factory::Packages;
else if (type=="Adaptors") t = Factory::Adaptors;
- GetGlobalFactory()->CreateHtmlIndex(t,filename);
+ GetExecuter()->GetFactory()->CreateHtmlIndex(t,filename);
}
//=======================================================================