X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkInterpreter.cxx;h=d39aa91deee86b6975c28586ff5a082b80389a4f;hb=4ed16591c3477d51dfc8961131440da786907386;hp=640688776191dd9c358ace7fb5213f7b78e55e54;hpb=15a3ac707793964b994d5749a7c0ff902632dad9;p=bbtk.git diff --git a/kernel/src/bbtkInterpreter.cxx b/kernel/src/bbtkInterpreter.cxx index 6406887..d39aa91 100644 --- a/kernel/src/bbtkInterpreter.cxx +++ b/kernel/src/bbtkInterpreter.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkInterpreter.cxx,v $ $ Language: C++ - Date: $Date: 2008/01/29 14:31:02 $ - Version: $Revision: 1.13 $ + Date: $Date: 2008/02/01 13:06:29 $ + Version: $Revision: 1.17 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -178,6 +178,14 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL; info.syntax = "author "; info.help = "Adds the string to the author information of the black box being defined"; mCommandDict[info.keyword] = info; + + info.keyword = "keyword"; //JP + info.argmin = 1; + info.argmax = 1; + info.code = cKeyword; + info.syntax = "keyword "; + info.help = "Adds the string to the keyword information of the black box being defined"; + mCommandDict[info.keyword] = info; info.keyword = "description"; info.argmin = 1; @@ -494,7 +502,11 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment ) case cAuthor : mExecuter->Author(words[1]); break; - + + case cKeyword : + mExecuter->Keyword(words[1]); + break; + case cDescription : mExecuter->Description(words[1]); break; @@ -731,21 +743,20 @@ void Interpreter::SplitLine ( const std::string& str, std::vector& // - absolute full name e.g. /home/usrname/proj/dir/scr.bbs // same for Windows, with c:, d: ... // - // expression like directory/subdir/scrname.bbs is FORBIDDEN (*) // use ./directory/subdir/scrname.bbs // - // (*) except when using packagename/boxes/* bbtkDebugMessageInc("Interpreter",9,"Interpreter::SwitchToFile( \"" < script_paths; std::string fullPathScriptName; // full path script name std::string pkgname; // e.g. .bbs - + std::vector Filenames; + if (use_configuration_file) { // The following is *NOT* a debug time message : @@ -757,16 +768,37 @@ verbose = true; } std::string upath; pkgname = Utilities::ExtractScriptName(name,upath); - +//std::cout <<"name [" << name << "] pkgname [" << pkgname << "] upath [" << upath << "]" << std::endl; bool fullnameGiven = false; bool foundFile = false; if(pkgname == "*") // =========================================== load all boxes (e.g. std/boxes/*) { + int nbBssFiles; + + if (upath[0]=='/' || upath[1] == ':' ) // ==== absolute name, load all .bbs files + { + int nbFiles = Utilities::Explore(upath, false, Filenames); + nbBssFiles = 0; + for (std::vector::iterator i = Filenames.begin(); i!= Filenames.end(); ++i) + { + 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 [" << upath << "]" << std::endl; + + return; + } + + std::string path; std::vector::iterator i; std::string fullDirectoryName; - for (i=script_paths.begin();i!=script_paths.end();++i) + for (i=script_paths.begin();i!=script_paths.end();++i)// ==== relative name, iterate + load all .bbs files { path = *i; @@ -792,11 +824,11 @@ verbose = true; } foundFile = true; - std::vector Filenames; + int nbFiles = Utilities::Explore(fullDirectoryName, false, Filenames); // std::cout << "=================nbFiles " << nbFiles << std::endl; - int nbBssFiles = 0; - for (std::vector::iterator i = Filenames.begin(); i!=Filenames.end(); ++i) + nbBssFiles = 0; + for (std::vector::iterator i = Filenames.begin(); i!= Filenames.end(); ++i) { if ((*i).substr((*i).size()-4, 4) != ".bbs") continue; // ignore non .bbs files @@ -812,14 +844,13 @@ verbose = true; return; } - std::string::size_type slash_position = name.find_last_of("/\\"); + //std::string::size_type slash_position = name.find_last_of("/\\"); // 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 // WARNING : starting from current local directory : ./whatYouWant (./ mandatory!) - - // if (slash_position != std::string::npos) + if (name[0]=='/' || name[1] == ':' || name[0]=='.') // absolute path (linux/windows) or relative path { @@ -849,7 +880,6 @@ verbose = true; { foundFile = true; } - } // endif l != 0 } else