-/*=========================================================================
-
+/*=========================================================================
Program: bbtk
- Module: $RCSfile: bbtkInterpreter.cxx,v $ $
+ Module: $RCSfile: bbtkInterpreter.cxx,v $
Language: C++
- Date: $Date: 2008/10/08 13:39:33 $
- Version: $Revision: 1.75 $
-
- Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
- l'Image). All rights reserved. See Doc/License.txt or
- http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
-
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
-
+ Date: $Date: 2009/04/08 07:56:11 $
+ Version: $Revision: 1.83 $
=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+*
+* This software is governed by the CeCILL-B license under French law and
+* abiding by the rules of distribution of free software. You can use,
+* modify and/ or redistribute the software under the terms of the CeCILL-B
+* license as circulated by CEA, CNRS and INRIA at the following URL
+* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+* or in the file LICENSE.txt.
+*
+* As a counterpart to the access to the source code and rights to copy,
+* modify and redistribute granted by the license, users are provided only
+* with a limited warranty and the software's author, the holder of the
+* economic rights, and the successive licensors have only limited
+* liability.
+*
+* The fact that you are presently reading this means that you have had
+* knowledge of the CeCILL-B license and that you accept its terms.
+* ------------------------------------------------------------------------ */
+
/**
* \file
* \brief class Interpreter :
#include "bbtkMessageManager.h"
#include "bbtkConfigurationFile.h"
#include "bbtkUtilities.h"
+#include "bbtkAtomicBlackBox.h"
#include "bbtkWxBlackBox.h"
#include <sys/stat.h>
#include <algorithm>
info.help = "Deletes the black box of name <box>";
mCommandDict[info.keyword] = info;
+ info.keyword = "clear";
+ info.argmin = 0;
+ info.argmax = 0;
+ info.code = cClear;
+ info.syntax = "clear";
+ info.help = "Clears the currently defined complex box (deletes all its boxes and connections)";
+ mCommandDict[info.keyword] = info;
+
+ info.keyword = "break";
+ info.argmin = 0;
+ info.argmax = 0;
+ info.code = cBreak;
+ info.syntax = "break";
+ info.help = "Breaks the current execution";
+ mCommandDict[info.keyword] = info;
+
info.keyword = "newgui";
info.argmin = 2;
info.argmax = 2;
//=======================================================================
- InterpreterError::InterpreterError( const std::string& message,
+ //=======================================================================
+ InterpreterException::InterpreterException( const std::string& message,
bool in_script_file,
const std::string& script_file,
int script_line
mScriptLine(script_line)
{
}
- InterpreterError::InterpreterError( const Exception& excep,
+ //=======================================================================
+ //=======================================================================
+ InterpreterException::InterpreterException( const Exception& excep,
bool in_script_file,
const std::string& script_file,
int script_line
{
}
//=======================================================================
+
+
+ //=======================================================================
+ void Interpreter::CatchInterpreterException( const InterpreterException& e )
+ {
+ if (GetExecuter()->GetNoErrorMode())
+ {
+ bbtkWarning("ERROR :"<<e.GetErrorMessage()
+ <<" ("<<e.GetScriptFile()<<":"<<e.GetScriptLine()
+ <<" skipped");
+
+ return;
+ }
+ if (mThrow)
+ {
+ if (e.GetErrorMessage()!="break")
+ {
+ mStatus = Interpreter_ERROR;
+ CloseAllFiles();
+ }
+ throw InterpreterException(e);
+ }
+ else
+ {
+ std::stringstream mess;
+ mess << "* ERROR : "<<e.GetErrorMessage()<<std::endl;
+ if (e.IsInScriptFile())
+ {
+ mess << "* FILE : \""<<e.GetScriptFile()<<"\""<<std::endl;
+ mess << "* LINE : "<<e.GetScriptLine()<<std::endl;
+ }
+ CloseAllFiles();
+ std::cerr << mess.str();
+ }
+ }
+ //=======================================================================
+
+ //=======================================================================
void Interpreter::CatchBbtkException( const bbtk::Exception& e )
{
+ if (GetExecuter()->GetNoErrorMode())
+ {
+ std::string file("?");
+ int line = 0;
+ if (mFileName.size()) {
+ file = mFileName.back();
+ line = mLine.back();
+ }
+ bbtkWarning("ERROR '"<<e.GetErrorMessage()
+ <<"' ("<<file<<":"<<line<<") skipped");
+
+ return;
+ }
+ mStatus = Interpreter_ERROR;
if (mThrow)
{
bool in_script = false;
file = mFileName.back();
line = mLine.back();
}
- CloseAllFiles();
- throw InterpreterError(e,in_script,file,line);
+ if (e.GetErrorMessage()!="break")
+ CloseAllFiles();
+ throw InterpreterException(e,in_script,file,line);
}
else
{
mess << "* FILE : \""<<mFileName.back()<<"\""<<std::endl;
mess << "* LINE : "<<mLine.back()<<std::endl;
}
+ CloseAllFiles();
std::cerr << mess.str();
}
}
//=======================================================================
void Interpreter::CatchStdException( const std::exception& e )
{
+ if (GetExecuter()->GetNoErrorMode())
+ {
+ std::string file("?");
+ int line = 0;
+ if (mFileName.size()) {
+ file = mFileName.back();
+ line = mLine.back();
+ }
+ bbtkWarning("ERROR '"<<e.what()
+ <<"' ("<<file<<":"<<line<<") skipped");
+
+ return;
+ }
+ mStatus = Interpreter_ERROR;
if (mThrow)
{
bool in_script = false;
line = mLine.back();
}
CloseAllFiles();
- throw InterpreterError(e.what(),in_script,file,line);
+ throw InterpreterException(e.what(),in_script,file,line);
}
else
{
mess << "* FILE : \""<<mFileName.back()<<"\""<<std::endl;
mess << "* LINE : "<<mLine.back()<<std::endl;
}
+ CloseAllFiles();
std::cerr << mess.str();
}
}
//=======================================================================
void Interpreter::CatchUnknownException()
{
+ if (GetExecuter()->GetNoErrorMode())
+ {
+ std::string file("?");
+ int line = 0;
+ if (mFileName.size()) {
+ file = mFileName.back();
+ line = mLine.back();
+ }
+ bbtkWarning("UNDEFINED ERROR "
+ <<"("<<file<<":"<<line<<") skipped");
+ return;
+ }
+ mStatus = Interpreter_ERROR;
if (mThrow)
{
bool in_script = false;
line = mLine.back();
}
CloseAllFiles();
- throw InterpreterError("Unknown exception caught",
+ throw InterpreterException("Unknown exception caught",
in_script,file,line);
}
else
mess << "* FILE : \""<<mFileName.back()<<"\""<<std::endl;
mess << "* LINE : "<<mLine.back()<<std::endl;
}
+ CloseAllFiles();
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(); \
+
+#define CATCH_MACRO \
+ catch (InterpreterException e) \
+ { \
+ CatchInterpreterException(e); \
+ } \
+ catch (bbtk::Exception e) \
+ { \
+ CatchBbtkException(e); \
+ } \
+ catch (std::exception& e) \
+ { \
+ CatchStdException(e); \
+ } \
+ catch (...) \
+ { \
+ CatchUnknownException(); \
}
//=======================================================================
//=======================================================================
- /**
- *
- */
Interpreter::ExitStatus Interpreter::InterpretFile( const std::string& filename, bool source )
{
bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
bool exm = mCommandLine;
mCommandLine = false;
- ExitStatus status = Interpreter_OK;
-
try
{
+ mStatus = Interpreter_OK;
SwitchToFile(filename,source);
-
- bool insideComment = false; // for multiline comment
- while (mFile.size()>0)
- {
- while (!mFile.back()->eof()) {
- mLine.back()++;
- char buf[500];
- mFile.back()->getline(buf,500);
- std::string str(buf);
- int size=str.length();
- if ( str[ size-1 ]==13 )
- {
- str.erase(size-1,1);
- }
- try
- {
- InterpretLine(str, insideComment);
- }
- CATCH_MACRO;
-
- }//while !eof
- CloseCurrentFile();
- }//while >0
- } // try
+ mInsideComment = false;
+ InterpretCurrentStreams();
+ }
CATCH_MACRO;
- CloseAllFiles();
- bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
+ bbtkDebugMessage("Interpreter",9,
+ "EO Interpreter::InterpretFile(\""
+ <<filename<<"\")"<<std::endl);
bbtkDecTab("Interpreter",9);
mCommandLine = exm;
- return status;
+ return mStatus;
}
//=======================================================================
//=======================================================================
- /**
- *
- */
Interpreter::ExitStatus
Interpreter::InterpretBuffer( std::stringstream* buffer )
{
bool exm = mCommandLine;
mCommandLine = false;
- ExitStatus status = Interpreter_OK;
-
try
{
+ mStatus = Interpreter_OK;
SwitchToStream(buffer);
- bool insideComment = false; // for multiline comment
- while (mFile.size()>0)
+ mInsideComment = false;
+ InterpretCurrentStreams();
+ }
+ CATCH_MACRO;
+
+ // CloseAllFiles();
+ bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretBuffer()"<<std::endl);
+ bbtkDecTab("Interpreter",9);
+
+ mCommandLine = exm;
+ return mStatus;
+ }
+ //=======================================================================
+
+ //=======================================================================
+ /// Interprets the currently open streams
+ Interpreter::ExitStatus Interpreter::InterpretCurrentStreams()
+ {
+ bbtkDebugMessageInc("Interpreter",9,
+ "Interpreter::InterpretCurrentStreams()"<<std::endl);
+
+ while (mFile.size()>0)
{
while (!mFile.back()->eof()) {
mLine.back()++;
}
try
{
- InterpretLine(str, insideComment);
+ DoInterpretLine(str);
}
CATCH_MACRO;
- }//while
+ }
CloseCurrentFile();
}
- }
- CATCH_MACRO;
-
- CloseAllFiles();
- bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretBuffer()"<<std::endl);
- bbtkDecTab("Interpreter",9);
-
- mCommandLine = exm;
- return status;
+ return mStatus;
}
//=======================================================================
{
bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretLine('"<<line<<"')"<<std::endl);
- ExitStatus status = Interpreter_OK;
-
try
{
- bool insideComment = false;
- InterpretLine(line, insideComment);
+ mStatus = Interpreter_OK;
+ mInsideComment = false;
+ DoInterpretLine(line );
}
CATCH_MACRO;
-
-
+
+
bbtkDebugMessage("Interpreter",9,"EO Interpreter::InterpretLine()"
<<std::endl);
bbtkDecTab("Interpreter",9);
- return status;
+ return mStatus;
}
+ //=======================================================================
//=======================================================================
- /**
- *
- */
-void Interpreter::InterpretLine( const std::string& line, bool &insideComment )
-{
- bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretLine(\""<<line<<"\")"<<std::endl);
- bbtkMessage("echo",2,line<<std::endl);
-
+ void Interpreter::DoInterpretLine( const std::string& line )
+ {
+ bbtkDebugMessageInc("Interpreter",9,"Interpreter::DoInterpretLine(\""<<line<<"\")"<<std::endl);
+
std::vector<std::string> words;
SplitLine(line,words);
{
bbtkDebugDecTab("Interpreter",9);
bbtkMessage("Interpreter",9,"In multiline comment"<<std::endl);
- insideComment = true;
+ mInsideComment = true;
return;
}
{
bbtkDebugDecTab("Interpreter",9);
bbtkMessage("Interpreter",9,"Out multiline comment"<<std::endl);
- if ( !insideComment ) {
+ if ( !mInsideComment ) {
bbtkDebugDecTab("Interpreter",9);
bbtkMessage("Interpreter",9,"Comment mismatch : '*/' with no matching '/*'"<<std::endl);
}
- insideComment = false;
+ mInsideComment = false;
return;
}
- if (insideComment)
+ if (mInsideComment)
{
bbtkDebugDecTab("Interpreter",9);
bbtkMessage("Interpreter",9,"Multiline Comment"<<std::endl);
int level=0;
std::string left,right,left2,right2;
std::string filename;
+
+ // message command
+ if (command.code==cMessage)
+ {
+ if (words.size()<3)
+ {
+ mVirtualExecuter->HelpMessages();
+ }
+ else
+ {
+ sscanf(words[2].c_str(),"%d",&level);
+ mVirtualExecuter->SetMessageLevel(words[1],level);
+ }
+ return;
+ }
+ else
+ {
+ bbtkMessage("echo",2,line<<std::endl);
+ }
+
+ // break and quit commands
+ if ((command.code==cBreak) || (command.code==cQuit))
+ {
+ 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();
+ }
+ if (command.code==cBreak)
+ {
+ /*
+ std::cout << "BreakException("
+ <<in_script<<","
+ <<file<<","
+ <<line<<")"<<std::endl;
+ */
+ bbtkError("break");//,in_script,file,line);
+ // throw BreakException(in_script,file,line);
+ }
+ else
+ {
+ bbtkError("quit");//,in_script,file,line);
+ //throw QuitException(in_script,file,line);
+ }
+ return;
+ }
+
+ // other cammands
switch (command.code)
- {
+ {
case cNew :
mVirtualExecuter->Create(words[1],words[2]);
break;
mVirtualExecuter->SetNoExecMode(true);
mThrow = false;
}
- else if (words[1]=="freeze_no_error ")
+ else if (words[1]=="freeze_no_error")
{
mVirtualExecuter->SetNoExecMode(true);
mVirtualExecuter->SetNoErrorMode(true);
Help(words);
break;
- case cMessage :
- if (words.size()<3)
- {
- mVirtualExecuter->HelpMessages();
- }
- else
- {
- sscanf(words[2].c_str(),"%d",&level);
- mVirtualExecuter->SetMessageLevel(words[1],level);
- }
- break;
case cGraph :
Graph(words);
case cReset :
Reset();
break;
+
+ case cClear :
+ mVirtualExecuter->Clear();
+ break;
case cInclude :
// if 'source' was given (words.size()==3) then tell to set the
GetExecuter()->UnLoadPackage(words[1]);
break;
- case cQuit :
- throw QuitException();
- break;
-
case cDebug :
if (words.size()==2) Debug(words[1]);
else Debug("");
//=======================================================================
- /**
- *
- */
-void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>& tokens)
+ void Interpreter::SplitLine ( const std::string& str, std::vector<std::string>& tokens)
{
bbtkDebugMessageInc("Interpreter",9,"Interpreter::SplitLine(\""<<str<<"\")"<<std::endl);
void Interpreter::Reset()
{
// Cannot close all files if the reset command is read from a file !
- // CloseAllFiles();
+ CloseAllFiles();
mFileNameHistory.clear();
this->mVirtualExecuter->Reset();
}
pkgname = Utilities::ExtractScriptName(name,upath);
bbtkMessage("Interpreter",3,
- "extract : pkgname [" << pkgname
- << "] upath [" << upath << "]" << std::endl);
+ "package name:[" << pkgname
+ << "] path:[" << upath << "]" << std::endl);
bool fullnameGiven = false;
bool foundFile = false;
// ==== "*" provided : load all scripts in given path
// relative (e.g. std/boxes/*) or absolute
if (pkgname == "*")
- {
- int nbBssFiles;
+ {
+
+ std::stringstream* stream = new std::stringstream;
+ //if (upath.size()!=0) // avoid troubles for "*"
- 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,
+ // LG : add all bbs path
+ // script_paths.push_back( ConfigurationFile::GetInstance().Get_root_bbs_path() );
+ std::vector<std::string>::const_iterator i;
+ for (i=ConfigurationFile::GetInstance().Get_bbs_paths().begin();
+ i!=ConfigurationFile::GetInstance().Get_bbs_paths().end();
+ i++)
+ {
+ script_paths.push_back(*i);
+ }
+ }
+ // ==== absolute path provided
+ else if (upath[0]=='/' || upath[1] == ':' )
+ {
+ if ( Utilities::IsDirectory( upath ) )
+ {
+ script_paths.push_back(upath);
+ }
+ else
+ {
+ bbtkError("'"<<upath<<"' : directory does not exist");
+ }
+ }
+ // ==== 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);
+ }
+ }
+ if (script_paths.empty())
+ {
+ bbtkError("no '"<<upath<<"' subdir found in search paths"
+ << std::endl);
+ }
+ }
- // ==== no path provided : look in root bbs path
- if (upath.size()==0)
- {
- // 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;
- for (i=ConfigurationFile::GetInstance().Get_bbs_paths().begin();
- i!=ConfigurationFile::GetInstance().Get_bbs_paths().end();
- i++)
- {
- script_paths.push_back(*i);
- }
- }
- // ==== absolute path provided
- else if (upath[0]=='/' || upath[1] == ':' )
- {
- if ( Utilities::IsDirectory( upath ) )
- {
- script_paths.push_back(upath);
- }
- else
- {
- bbtkError("'"<<upath<<"' : directory does not exist");
- }
- }
- // ==== 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);
- }
- }
- if (script_paths.empty())
- {
- bbtkError("no '"<<upath<<"' subdir found in search paths"
- << std::endl);
- }
- }
-
-
- // === search paths list complete : now explore it
-
- // ==== relative name, iterate + load all .bbs/.bbp files
- std::vector<std::string>::iterator i;
- for (i=script_paths.begin();i!=script_paths.end();i++)
- {
- bbtkMessage("Interpreter",1,
+
+ // === search paths list complete : now explore it
+ int nbBssFiles = 0;
+ // ==== relative name, iterate + load all .bbs/.bbp files
+ std::vector<std::string>::iterator i;
+ for (i=script_paths.begin();i!=script_paths.end();i++)
+ {
+ 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 .bbp file
- if ( (*j).substr(lgr-4, 4) != ".bbp") continue;
-
- (*stream) << "include \"" << *j << "\"\n";
- bbtkMessage("Interpreter",2," --> Found '" << *j << "'" << std::endl);
+ Filenames.clear();
+ //int nbFiles =
+ Utilities::Explore(*i, false, Filenames);
+
+ for (std::vector<std::string>::iterator j = Filenames.begin();
+ j!= Filenames.end(); ++j)
+ {
+ int lgr = (*j).size();
+ if (lgr < 5) continue;
+ // ignore non .bbp file
+ if ( (*j).substr(lgr-4, 4) != ".bbp") continue;
- nbBssFiles++;
- } // for (std::vector...
- } // for (i=script_...
- if (nbBssFiles==0)
- {
- bbtkMessage("Interpreter",1,
- " --> No .bbp found"<< std::endl);
- }
- else
- {
- bbtkMessage("Interpreter",1,
- " --> "<<nbBssFiles<<" .bbp found"<< std::endl);
- SwitchToStream(stream);
- }
- return;
- }
- //=============== end pkgname=="*" ===========
-
+ (*stream) << "include \"" << *j << "\"\n";
+ bbtkMessage("Interpreter",2," --> Found '" << *j << "'" << std::endl);
+
+ nbBssFiles++;
+ } // for (std::vector...
+ } // for (i=script_...
+ // === Result ...
+ if (nbBssFiles==0)
+ {
+ bbtkMessage("Interpreter",1,
+ " --> No .bbp found"<< std::endl);
+ }
+ else
+ {
+ bbtkMessage("Interpreter",1,
+ " --> "<<nbBssFiles<<" .bbp found"<< std::endl);
+ SwitchToStream(stream);
+ }
+ return;
+ }
+ //=============== end pkgname=="*" ===========
+
+
// 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)
// we trust him, and try to expland the directory name
return;
}
+ //=======================================================================
//=======================================================================
- /**
- *
- */
void Interpreter::CloseCurrentFile()
{
bbtkDebugMessage("Interpreter",9,"Interpreter::CloseCurrentFile()"
//=======================================================================
//=======================================================================
- /**
- *
- */
void Interpreter::CloseAllFiles()
{
bbtkDebugMessage("Interpreter",9,"Interpreter::CloseAllFiles()"
//=======================================================================
- /**
- *
- */
void Interpreter::InterpretCommand( const std::vector<std::string>& words,
CommandInfoType& info )
{
mCommandLine = true;
bool again = true;
- bool insideComment = false; // for multiline comment
+ // bool insideComment = false; // for multiline comment
+ mInsideComment = false;
do
{
try
{
std::string line;
GetLineFromPrompt(line);
- InterpretLine(line, insideComment);
+ DoInterpretLine(line); //, insideComment);
}
+ /*
catch (QuitException e)
{
bbtkMessage("Interpreter",1,"Interpreter : Quit"<<std::endl);
again = false;
}
+ */
catch (bbtk::Exception e)
{
e.Print();
// 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
}
}
//==========================================================================
+
+ /*
+ //==========================================================================
+ // Adds a callback when 'break' command issued
+ void Interpreter::AddBreakObserver( BreakCallbackType c )
+ {
+ mBreakSignal.connect(c);
+ }
+ //==========================================================================
+ */
+
//==========================================================================
std::string Interpreter::GetObjectName() const
{