Program: bbtk
Module: $RCSfile: bbtkInterpreter.cxx,v $ $
Language: C++
- Date: $Date: 2008/01/29 14:11:03 $
- Version: $Revision: 1.12 $
+ 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
info.syntax = "author <string>";
info.help = "Adds the string <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 <list of items, separated by ;>";
+ info.help = "Adds the string <string> to the keyword information of the black box being defined";
+ mCommandDict[info.keyword] = info;
info.keyword = "description";
info.argmin = 1;
case cAuthor :
mExecuter->Author(words[1]);
break;
-
+
+ case cKeyword :
+ mExecuter->Keyword(words[1]);
+ break;
+
case cDescription :
mExecuter->Description(words[1]);
break;
// - 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( \""
<<name<<"\")"<<std::endl);
-// to be remove in final version
+// to be removed in final version
// use : Config v
-verbose = true;
+//verbose = true;
std::vector<std::string> script_paths;
std::string fullPathScriptName; // full path script name
std::string pkgname; // e.g. <scriptname>.bbs
-
+ std::vector<std::string> Filenames;
+
if (use_configuration_file)
{
// The following is *NOT* a debug time message :
}
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<std::string>::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<std::string>::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;
}
foundFile = true;
- std::vector<std::string> Filenames;
+
int nbFiles = Utilities::Explore(fullDirectoryName, false, Filenames);
// std::cout << "=================nbFiles " << nbFiles << std::endl;
- int nbBssFiles = 0;
- for (std::vector<std::string>::iterator i = Filenames.begin(); i!=Filenames.end(); ++i)
+ nbBssFiles = 0;
+ for (std::vector<std::string>::iterator i = Filenames.begin(); i!= Filenames.end(); ++i)
{
if ((*i).substr((*i).size()-4, 4) != ".bbs")
continue; // ignore non .bbs files
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
{
{
foundFile = true;
}
-
} // endif l != 0
}
else
// fullPathScriptName = Utilities::MakePkgnameFromPath(path, name, true); //pkgname);
- fullPathScriptName = Utilities::MakePkgnameFromPath(path, pkgname, true);
+ fullPathScriptName = Utilities::MakePkgnameFromPath(path, name, true);
//std::cout << "FULL PATH = "<<fullPathScriptName<<std::endl;
// Check if library exists