Program: bbtk
Module: $RCSfile: bbtkInterpreter.h,v $ $
Language: C++
- Date: $Date: 2008/02/04 13:02:58 $
- Version: $Revision: 1.7 $
+ Date: $Date: 2008/03/18 12:51:26 $
+ Version: $Revision: 1.15 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
namespace bbtk
{
+
+#ifdef _USE_WXWIDGETS_
+ class WxConsole;
+#endif
+
class BBTK_EXPORT Interpreter
{
cConfig, // JPR
cReset, // EED
cAuthor,
- cKeyword, // JPR
+ cCategory, // JPR
cDescription,
cHelp,
cMessage,
/// The structure storing the informations on a command
typedef struct
{
- std::string keyword;
+ std::string category;
int argmin, argmax;
CommandCodeType code;
std::string syntax;
/// Destructor
~Interpreter();
- static Interpreter* mGlobalInterpreter;
-
/// Launches a command line interpreter (with a prompt)
void CommandLineInterpreter();
void SetDialogMode(DialogModeType t) { mExecuter->SetDialogMode(t); }
/// Runs the interpretation of a file
- void InterpretFile( const std::string& filename, bool use_configuration_file=true, bool verbose=false);
+ void InterpretFile( const std::string& filename);
+
+ /// Runs the interpretation of a buffer and deletes it !
+ void InterpretBuffer( std::stringstream* buffer );
/// Interprets a line (either from a file or typed interactively)
void InterpretLine( const std::string& line, bool &insideComment );
CommandInfoType& info );
/// Switch to the interpretation of a file
- void SwitchToFile( const std::string& filename, bool use_configuration_file=true, bool verbose=false );
+ void SwitchToFile( const std::string& filename );
+
+ /// Switch to the interpretation of a stringstream
+ void SwitchToStream( std::stringstream* stream );
/// Closes the currently open file
void CloseCurrentFile();
void Graph(const std::vector<std::string>& words);
///
- void Config(bool verbose) const; // JPR
+ void Config() const;
///
void Print(const std::string&);
/// Sets the bool that indicates wether we are in command line context
void SetCommandLine(bool v = true) { mCommandLine = v; }
+#ifdef _USE_WXWIDGETS_
+ /// Sets the WxConsole that created the interpreter (if any)
+ void SetWxConsole(WxConsole* c) { mWxConsole = c; }
+ /// Gets the WxConsole that created the interpreter (if any)
+ WxConsole* GetWxConsole() { return mWxConsole; }
+ /// Gets the WxConsole that created the interpreter (if any) - const
+ const WxConsole* GetWxConsole() const { return mWxConsole; }
+#endif
+
+ /// Gets the Executer
+ VirtualExec* GetExecuter() { return mExecuter; }
+ /// Gets the Executer (const)
+ const VirtualExec* GetExecuter() const { return mExecuter; }
+
private:
- void LoadScript( std::string fullPathScriptName);
+ /// Opens the file fullPathScriptName
+ /// includeScriptName is the name as given to the include command
+ void LoadScript( std::string fullPathScriptName,
+ std::string includeScriptName);
private:
//==================================================================
// ATTRIBUTES
- /// The factory
- // bbtk::Factory* mFactory;
-
- /// The command executer
+ /// The command executer used
bbtk::VirtualExec* mExecuter;
- /// Vector of opened files
- std::vector<std::ifstream*> mFile;
+#ifdef _USE_WXWIDGETS_
+ /// The WxConsole which uses the interpreter (0 if none)
+ bbtk::WxConsole* mWxConsole;
+#endif
+
+ /// Vector of open files / buffers (can be stringstream)
+ std::vector<std::istream*> mFile;
- /// Vector of names of open files
+ /// Vector of names of open files with full path (as open)
std::vector<std::string> mFileName;
+ /// Vector of names of open files as given to the include command
+ std::vector<std::string> mIncludeFileName;
+
/// Stores the current line number in each open file
std::vector<int> mLine;
/// The history of commands
std::deque< char* > mHistory;
- bool verbose; // true -> displays the search results (for packages)
+ int bufferNb;
};
+ // EO class Interpreter
// The "Quit" exception