-/*=========================================================================
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ # pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ # 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.
+ # ------------------------------------------------------------------------ */
+
+
+/*=========================================================================
Program: bbtk
Module: $RCSfile: bbtkInterpreter.cxx,v $
Language: C++
Version: $Revision: 1.88 $
=========================================================================*/
-/* ---------------------------------------------------------------------
-
-* 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
*/
-
}
//=======================================================================
//=======================================================================
InterpreterVirtual::ExitStatus InterpreterVirtual::InterpretFile( const std::string& filename, bool source )
{
- bbtkDebugMessage("interpreter",4,"==> InterpreterVirtual::InterpretFile(\""<<filename<<"\")"<<std::endl);
+ bbtkDebugMessage("interpreter",4,"==> InterpreterVirtual::InterpretFile(\""<<filename<<"\")"<<std::endl);
bool exm = mCommandLine;
mCommandLine = false;
mCommandLine = exm;
-
+
return mStatus;
}
//=======================================================================
}
//=======================================================================
- void InterpreterVirtual::commandNew(std::string boxType, std::string boxName)
+ void InterpreterVirtual::commandNew(const std::string &boxType, const std::string &boxName) // virtual
{
}
- void InterpreterVirtual::commandDelete(std::string boxName)
+ void InterpreterVirtual::commandDelete(const std::string &boxName)
{
}
- void InterpreterVirtual::commandConnection(std::string nodeFrom, std::string outputLabel, std::string nodeTo, std::string inputLabel)
+ void InterpreterVirtual::commandConnection(const std::string &nodeFrom,const std::string &outputLabel,const std::string &nodeTo,const std::string &inputLabel)
{
}
- void InterpreterVirtual::commandPackage(std::string packageName)
+ void InterpreterVirtual::commandPackage(const std::string &packageName)
{
}
{
}
- void InterpreterVirtual::commandDefine(std::string name, std::string pack, std::string scriptfilename)
+ void InterpreterVirtual::commandDefine(const std::string &name,const std::string &pack,const std::string &scriptfilename)
{
}
{
}
- void InterpreterVirtual::commandKind(std::string kind)
+ void InterpreterVirtual::commandKind(const std::string &kind)
{
}
- void InterpreterVirtual::commandPrint(std::string value)
+ void InterpreterVirtual::commandPrint(const std::string &value)
{
}
- void InterpreterVirtual::commandExec(std::string word)
+ void InterpreterVirtual::commandExec(const std::string &word)
{
}
- void InterpreterVirtual::commandInput(std::string name, std::string box, std::string input,std::string help)
+ void InterpreterVirtual::commandInput(const std::string &name,const std::string &box,const std::string &input,const std::string &help)
{
}
- void InterpreterVirtual::commandOutput(std::string name, std::string box, std::string output,std::string help)
+ void InterpreterVirtual::commandOutput(const std::string &name,const std::string &box,const std::string &output,const std::string &help)
{
}
- void InterpreterVirtual::commandSet(std::string box, std::string input, std::string value)
+ void InterpreterVirtual::commandSet(const std::string &box,const std::string &input,const std::string &value)
{
}
- void InterpreterVirtual::commandAuthor(std::string author)
+ void InterpreterVirtual::commandAuthor(const std::string &author)
{
}
- void InterpreterVirtual::commandCategory(std::string categorytype)
+ void InterpreterVirtual::commandCategory(const std::string &categorytype)
{
}
- void InterpreterVirtual::commandDescription(std::string description)
+ void InterpreterVirtual::commandDescription(const std::string &description)
{
}
{
}
- void InterpreterVirtual::commandInclude(std::string word, bool ok)
+ void InterpreterVirtual::commandInclude(const std::string &word, bool ok)
{
}
- void InterpreterVirtual::commandLoad(std::string packageName)
+ void InterpreterVirtual::commandLoad(const std::string &packageName)
{
}
- void InterpreterVirtual::commandUnload(std::string packageName)
+ void InterpreterVirtual::commandUnload(const std::string &packageName)
{
}
{
}
-//ups2 EED Borrame
- void InterpreterVirtual::commandMessage(std::string kind, std::string levelstr)
+ void InterpreterVirtual::commandMessage(const std::string &kind,const std::string &levelstr)
{
}
//=======================================================================
void InterpreterVirtual::DoInterpretLine( const std::string& line )
- {
+ {
bbtkDebugMessage("interpreter",6,"==> InterpreterVirtual::DoInterpretLine(\""
<<line<<"\")"<<std::endl);
std::vector<std::string> words;
SplitLine(line,words);
+
+
// Empty line
if (words.size()<1)
{
bbtkMessage("interpreter",9,"Multiline Comment"<<std::endl);
return;
}
+
// Command
CommandInfoType command;
std::string left,right,left2,right2;
std::string filename;
-//ups1 EED borrame
// message command
if (command.code==cMessage)
{
// 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)
+ {
+//EED-Borrame bool in_script = false;
+//EED-Borrame std::string file("");
+//EED-Borrame int line = 0;
+
+//EED-Borrame if (mFileName.size())
+//EED-Borrame {
+//EED-Borrame std::ifstream* fs = dynamic_cast<std::ifstream*>(mFile.back());
+//EED-Borrame if (fs!=0) in_script = true;
+//EED-Borrame file = mFileName.back();
+//EED-Borrame line = mLine.back();
+//EED-Borrame }
+ if (command.code==cBreak)
{
/*
std::cout << "BreakException("
commandBreak();
//EED Borrame bbtkError("break");//,in_script,file,line);
// throw BreakException(in_script,file,line);
- }
- else
- {
+ } else {
commandQuit();
//EED Borrame bbtkError("quit");//,in_script,file,line);
//throw QuitException(in_script,file,line);
- }
- return;
- }
+ } // cBreak
+ return;
+ } // cBreak cQuit
//std::cout<<" mVirtualExecuter->Create(words[1],words[2]); "<<line<<std::endl;
// other cammands
+
switch (command.code)
{
case cNew :
}
if (words.size()==2)
{
- commandDefine(words[1],"",filename);
+ std::string packTmp = "";
+ commandDefine(words[1],packTmp,filename);
//EED Borrame mVirtualExecuter->Define(words[1],"",filename);
}
else
bbtkDebugMessage("interpreter",6,"<== InterpreterVirtual::DoInterpretLine(\""
<<line<<"\")"<<std::endl);
-
+
}
//=======================================================================
std::string fullPathScriptName; // full path script name
std::string pkgname; // e.g. <scriptname>.bbs
std::vector<std::string> Filenames;
-
+ std::string tmpFilenames;
+
// The following is *NOT* a debug time message :
// It's a user intended message.
// Please don't remove it.
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)
{
}
}
-
// === 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);
-
+
+ int iFilesnames,jFilesnames,sizeFilenames;
+ sizeFilenames=Filenames.size();
+
+
+ // EEDd 30 sept 2012
+ //Sorting list of files
+ for (iFilesnames=0;iFilesnames<sizeFilenames; iFilesnames++)
+ {
+ for (jFilesnames=iFilesnames;jFilesnames<sizeFilenames; jFilesnames++)
+ {
+ if ( Filenames[iFilesnames] > Filenames[jFilesnames] )
+ {
+ tmpFilenames = Filenames[iFilesnames];
+ Filenames[iFilesnames] = Filenames[jFilesnames];
+ Filenames[jFilesnames] = tmpFilenames;
+ } // if Filesnames
+ } // for iFilesnames
+ } // for iFilesnames
+
+
+
for (std::vector<std::string>::iterator j = Filenames.begin();
j!= Filenames.end(); ++j)
{
}
std::string tfullPathScriptName = Utilities::MakePkgnameFromPath(path, name, false);
+
//Addition JCP tfullPathScriptName.size()>=4
if(tfullPathScriptName.size()>=4){
if (tfullPathScriptName.substr(tfullPathScriptName.size()-4, 3)==".bb")
return;
} else {
LoadScript(fullPathScriptName,name);
-//EED Borrame if (source) GetExecuter()->SetCurrentFileName(fullPathScriptName);
- if (source) SetCurrentFileName(fullPathScriptName);
+ if (source)
+ {
+ // Over writing the fullpath of the bbp file.
+ SetCurrentFileName( fullPathScriptName );
+ SetTypeOfScript_Application();
+ }
}
+
return;
}
//=======================================================================
//=======================================================================
- void InterpreterVirtual::SetCurrentFileName(std::string fullPathScriptName) // virtual
+ void InterpreterVirtual::SetCurrentFileName(const std::string &fullPathScriptName) // virtual
{
}
//=======================================================================
+
+ //=======================================================================
+ void InterpreterVirtual::SetTypeOfScript_Application( )
+ {
+ }
+ //=======================================================================
+
+
//=======================================================================
void InterpreterVirtual::SwitchToStream( std::stringstream* stream )
{
void InterpreterVirtual::InterpretCommand( const std::vector<std::string>& words,
CommandInfoType& info )
{
+
bbtkDebugMessage("interpreter",9,"==> InterpreterVirtual::InterpretCommand(...)"<<std::endl);
// searches the command keyword
//EED HelpCommand(words[0]);
commandHelp(words[0]);
-
bbtkError(words[0]<<" : wrong number of arguments");
}
//std::cout<<"InterpreterVirtual::InterpretCommand( const std::vector<std::string>& words,"<<std::endl;
info = c->second;
-
bbtkDebugMessage("interpreter",9,"<== InterpreterVirtual::InterpretCommand(...)"<<std::endl);
}
{
}
//=======================================================================
- void InterpreterVirtual::commandHelp(const std::string words)
+ void InterpreterVirtual::commandHelp(const std::string &words)
{
}
//=======================================================================
ter.c_cc[VTIME]=0;
tcsetattr(0,TCSANOW,&ter);
#endif
-
+
mCommandLine = true;
bool again = true;
// bool insideComment = false; // for multiline comment