#include <fstream>
#include <deque>
-// Signal/slot mechanism for 'break' commands
-//#include <boost/signal.hpp>
-//#include <boost/bind.hpp>
namespace bbtk
{
class WxConsole;
#endif
-/* EED Borrame
- //=======================================================================
- class BBTK_EXPORT InterpreterUser
- {
- public:
- InterpreterUser() {}
- virtual ~InterpreterUser() {}
-
- virtual bool InterpreterUserHasOwnHtmlPageViewer() { return false; }
- virtual void InterpreterUserViewHtmlPage(const std::string&) {}
- };
- //=======================================================================
-*/
-/* EED Borrame
- //=======================================================================
- class BBTK_EXPORT InterpreterException : public Exception
- {
- public:
- InterpreterException( const std::string& message,
- bool in_script_file,
- const std::string& script_file,
- int script_line
- );
- InterpreterException( const Exception& excep,
- bool in_script_file,
- const std::string& script_file,
- int script_line
- );
- ~InterpreterException() throw() {}
-
- bool IsInScriptFile() const { return mInScriptFile; }
- const std::string& GetScriptFile() const { return mScriptFile; }
- int GetScriptLine() const { return mScriptLine; }
- private:
- bool mInScriptFile;
- std::string mScriptFile;
- int mScriptLine;
- };
- //=======================================================================
-*/
-
- /*
- //=======================================================================
- // The "Quit" exception
- class BBTK_EXPORT QuitException : public InterpreterError
- {
- public:
- QuitException( bool in_script_file,
- const std::string& script_file,
- int script_line
- )
- : InterpreterError("QUIT",in_script_file,script_file,script_line)
- {}
- ~QuitException() throw() {}
- };
- //=======================================================================
- const std::string BREAK("BREAK");
- //=======================================================================
- // The "Break" exception
- class BBTK_EXPORT BreakException : public InterpreterError
- {
- public:
- BreakException( bool in_script_file,
- std::string script_file,
- int script_line
- )
- : InterpreterError(BREAK,in_script_file,script_file,script_line)
- { std::cout << "BUILDING BREAK"<<std::endl; }
- ~BreakException() throw() {}
- };
- //=======================================================================
- */
//=======================================================================
class BBTK_EXPORT Interpreter : public InterpreterVirtual
static Pointer New(const std::string& cpp_file = "");
static Pointer New(VirtualExec::Pointer);
-/* EED Borrame
- typedef enum
- {
- Interpreter_OK,
- Interpreter_ERROR,
- Interpreter_QUIT,
- Interpreter_BREAK,
- }
- ExitStatus;
-
- /// Runs the interpretation of a file
- ExitStatus InterpretFile( const std::string& filename, bool source = false);
-
- /// Runs the interpretation of a buffer and deletes it !
- ExitStatus InterpretBuffer( std::stringstream* buffer );
-
- /// Runs the interpretation of a command
- ExitStatus InterpretLine( const std::string& line );
-
- /// Runs the interpretation of the currently open streams
- ExitStatus InterpretCurrentStreams();
-
- /// Launches a command line interpreter (with a prompt)
- void CommandLineInterpreter();
-*/
-
/// Sets the inputs of the workspace :
/// the map is passed as is to the Executer
void SetDialogMode(DialogModeType t) { mVirtualExecuter->SetDialogMode(t);}
-/*EED Borrame
- /// Sets the bool that indicates wether we are in command line context
- void SetCommandLine(bool v = true) { mCommandLine = v; }
-
- void SetThrow(bool b) { mThrow = b; }
-
-#ifdef USE_WXWIDGETS
- /// Sets the user of the interpreter (if any)
- void SetUser(InterpreterUser* c) { mUser = c; }
- /// Gets the InterpreterUser of this
- InterpreterUser* GetUser() { return mUser; }
- /// Gets the InterpreterUser of this (const)
- const InterpreterUser* GetUser() const { return mUser; }
-
-#endif
- */
/// Gets the Executer
VirtualExec::Pointer GetExecuter() const { return mVirtualExecuter; }
protected:
-/* EED Borrame
- /// The enumeration of command codes == Command name
- typedef enum
- {
- cBreak, // LG 12/12/08 : Stops the current script execution (if not exec frozen) - used in tutorial + debugging
- cClear, // LG 12/12/08 : Clears the current complex black box (e.g. workspace) - used in tours
- cNew,
- cDelete,
- cConnect,
- cExec,
- cPackage,
- cEndPackage,
- cDefine,
- cEndDefine,
- cInput,
- cOutput,
- cSet,
- cConfig, // JPR
- cReset, // EED
- cAuthor,
- cCategory, // JPR
- cDescription,
- cHelp,
- cMessage,
- cInclude,
- cQuit,
- cLoad,
- cUnload,
- cGraph,
- cPrint,
- cIndex,
- cKind, // LG
- cNewGUI, // LG
- cWorkspace, // LG
- cDebug // LG
- } CommandCodeType;
-
- /// The structure storing the informations on a command
- typedef struct
- {
- std::string keyword;
- int argmin, argmax;
- CommandCodeType code;
- std::string syntax;
- std::string help;
- } CommandInfoType;
-
- /// The type of dictionnary of commands
- typedef std::map<std::string,CommandInfoType> CommandDictType;
-
-
- /// Interprets a line
- void DoInterpretLine( const std::string& line ); //, bool &insideComment );
-
- /// Reads a line from prompt
- void GetLineFromPrompt( std::string& line );
-
- /// Splits a line into words
- void SplitLine ( const std::string& line,
- std::vector<std::string>& words );
-
- /// Executes the right action depending on the command name
- void InterpretCommand( const std::vector<std::string>& words,
- CommandInfoType& info );
-
- /// Switch to the interpretation of a file
- void SwitchToFile( const std::string& filename, bool source = false );
-
- /// Switch to the interpretation of a stringstream
- void SwitchToStream( std::stringstream* stream );
-
- /// Closes the currently open file
- void CloseCurrentFile();
-
- /// Closes all open files
- void CloseAllFiles();
-*/
/// Resets all
virtual void commandReset();
virtual void commandIndex(const std::string& filename,
const std::string& type = "Initials");
-/*EED Borrame
- ///
- void FindCommandsWithPrefix( char* buf,
- int n,
- std::vector<std::string>& commands );
-*/
/// Creates and connects the piece of pipeline which defines a GUI
/// for the box box.
/// Define it as a complex box type with name instanceName+"Type"
/// The instance is called instanceName
/// and connected to the existing pipeline
- virtual void commandNewGUI(const std::string& box,const std::string& instanceName);
- virtual void commandDebug(const std::string& arg);
+ virtual void commandNewGUI(const std::string& box,const std::string& instanceName);
+ virtual void commandDebug(const std::string& arg);
virtual void commandNew(const std::string &boxType,const std::string &boxName);
virtual void commandDelete(const std::string &boxName);
virtual void commandConnection(const std::string &nodeFrom,const std::string &outputLabel,const std::string &nodeTo,const std::string &inputLabel);
void Init(VirtualExec::Pointer, const std::string& cpp_file);
-/*EED Borrame
- /// Opens the file fullPathScriptName
- /// includeScriptName is the name as given to the include command
- void LoadScript( std::string fullPathScriptName,
- std::string includeScriptName);
-*/
+
//==================================================================
// ATTRIBUTES
bbtk::VirtualExec::Pointer mVirtualExecuter;
bbtk::Executer::WeakPointer mRealExecuter;
-/*EED Borrame
- /// The user of the interpreter (0 if none)
- bbtk::InterpreterUser* mUser;
- /// Vector of open files / buffers (can be stringstream)
- std::vector<std::istream*> mFile;
-
- /// Vector of names of open files with full path (as open)
- std::vector<std::string> mFileName;
-
- /// Vector of names of files which have been open
- /// before (and may closed then which are no more in mFileName)
- /// with full path (as open)
- std::vector<std::string> mFileNameHistory;
-
- /// 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 dictionnary of commands
- CommandDictType mCommandDict;
-
- /// Are we in a command line context ?
- bool mCommandLine;
-
- /// Are we inside a commented-out zone ?
- bool mInsideComment;
-
- /// The current interpreter status
- ExitStatus mStatus;
-
- /// The history of commands
- std::deque< char* > mHistory;
-
- int bufferNb;
-
- bool mThrow;
-
- /// The break signal
- // BreakSignalType mBreakSignal;
-
- */
protected:
~Interpreter();