COOLFluiD  Release kernel
COOLFluiD is a Collaborative Simulation Environment (CSE) focused on complex MultiPhysics simulations.
Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
ScriptEngine Class Reference

Manage a python interpreter. More...

#include <ScriptEngine.hpp>

Inherits Component.

Classes

class  PythonDictEntry
 Allow to make a tree representation of the python scope. the root of the tree is supposed to be a python dictionnary, children are simple python objects. More...
 

Public Member Functions

 ScriptEngine (const std::string &name)
 Contructor. More...
 
virtual ~ScriptEngine ()
 
int execute_script (std::string script, int code_fragment=-1)
 Execute the script passed as a string, code fragment is used for traceability. More...
 
void signal_execute_script (common::SignalArgs &node)
 Signal to execute a script. More...
 
void signal_change_debug_state (common::SignalArgs &node)
 Modify the debug state the first argument is the debug_command named command, if the debug command is equal to TOGGLE_BREAK_POINT fragment and line argument must be defined (both int) More...
 
void signal_completion (common::SignalArgs &node)
 Signal to retrieve the completion list; no argument. More...
 
void signal_get_documentation (common::SignalArgs &node)
 Signal to get the documentation of the symbol under the mouse in the gui takes one argument, expression, must be a string containing the symbol. More...
 
int new_line_reached (int code_fragment, int line_number)
 Called by the trace function when a new line is reached. More...
 
void check_python_change ()
 Verify if the python scope has changed, or if there is some data on the python sys.out code_fragment allow to redirect correctly the output if this was a documentation request. More...
 
void no_more_instruction ()
 Called when the interpreter have no more instruction avalaible used in debug to clear the debug trace at the end of the code. More...
 
- Public Member Functions inherited from Component
 Component (const std::string &name)
 
virtual ~Component ()
 Virtual destructor. More...
 
const std::string & name () const
 Access the name of the component. More...
 
void rename (const std::string &name)
 Rename the component. More...
 
URI uri () const
 Construct the full path. More...
 
void complete_path (URI &path) const
 
Handle< Componentaccess_component (const URI &path) const
 
Handle< Componentaccess_component_checked (const URI &path)
 
Handle< Component const > access_component_checked (const URI &path) const
 
Handle< Componenthandle ()
 Get a handle to the component. More...
 
Handle< Component const > handle () const
 
template<typename ComponentT >
Handle< ComponentT > handle ()
 
template<typename ComponentT >
Handle< ComponentT const > handle () const
 
Handle< Componentparent () const
 
Handle< Component const > root () const
 
Handle< Componentroot ()
 
Handle< Componentget_child (const std::string &name)
 
Handle< Component const > get_child (const std::string &name) const
 
Handle< Componentget_child_checked (const std::string &name)
 
Handle< Component const > get_child_checked (const std::string &name) const
 
Handle< Componentcreate_component (const std::string &name, const std::string &builder)
 Build a (sub)component of this component using the extended type_name of the component. More...
 
template<typename T >
Handle< T > create_component (const std::string &name)
 Create a (sub)component of this component automatically cast to the specified type. More...
 
template<typename T >
Handle< T > create_static_component (const std::string &name)
 Create a static "always there" subcomponent. More...
 
Componentadd_component (const boost::shared_ptr< Component > &subcomp)
 Add the passed component as a subcomponent. More...
 
void add_link (Component &linked_component)
 
boost::shared_ptr< Componentremove_component (const std::string &name)
 Remove a (sub)component of this component. More...
 
boost::shared_ptr< Componentremove_component (Component &subcomp)
 Remove a (sub)component of this component. More...
 
void clear ()
 Remove all sub-components of this component, except for the static ones. More...
 
void move_to (Component &to_parent)
 
std::string tree (bool basic_mode=false, Uint depth=0, Uint recursion_level=0) const
 
std::string info (const std::string &what=std::string("cospt")) const
 
size_t count_children () const
 
virtual std::string derived_type_name () const =0
 
PropertyListproperties ()
 
const PropertyListproperties () const
 
OptionListoptions ()
 
const OptionListoptions () const
 
void reset_options ()
 Reset all options to their default value. More...
 
void configure_option_recursively (const std::string &optname, const boost::any &val)
 
Componentmark_basic ()
 marks this component as basic. More...
 
template<typename ComponentT >
void put_components (std::vector< boost::shared_ptr< ComponentT > > &vec, const bool recurse)
 
template<typename ComponentT >
void put_components (std::vector< boost::shared_ptr< ComponentT const > > &vec, const bool recurse) const
 
template<>
void put_components (std::vector< boost::shared_ptr< Component > > &vec, const bool recurse)
 
template<>
void put_components (std::vector< boost::shared_ptr< Component const > > &vec, const bool recurse) const
 
Component::iterator begin ()
 The begin iterator for a range containing Components. More...
 
Component::iterator end ()
 The end iterator for a range containing Components. More...
 
Component::const_iterator begin () const
 The begin iterator for a range containing Components (const version) More...
 
Component::const_iterator end () const
 The end iterator for a range containing Components (const version) More...
 
Component::iterator recursive_begin ()
 The begin iterator for a recursive range containing Components. More...
 
Component::iterator recursive_end ()
 The end iterator for a recursive range containing Components. More...
 
Component::const_iterator recursive_begin () const
 The begin iterator for a recursive range containing Components (const version) More...
 
Component::const_iterator recursive_end () const
 The end iterator for a recursive range containing Components (const version) More...
 
template<typename T >
Handle< T > create_component (const std::string &name, const std::string &builder)
 Create a component using the reduced builder name. More...
 
void signal_configure (SignalArgs &args)
 configures all the options on this class More...
 
void signal_create_component (SignalArgs &args)
 creates a component from this component More...
 
void signal_delete_component (SignalArgs &args)
 delete this component More...
 
void signal_move_component (SignalArgs &args)
 moves a component from this component to another More...
 
void signal_list_tree (SignalArgs &args) const
 lists the sub components and puts them on the xml_tree More...
 
void signal_list_tree_recursive (SignalArgs &args) const
 prints tree recursively More...
 
void signal_list_properties (SignalArgs &args) const
 lists the properties of this component More...
 
void signal_list_options (SignalArgs &args) const
 lists the properties of this component More...
 
void signal_list_options_recursive (SignalArgs &args) const
 prints all options recursive More...
 
void signal_list_signals (SignalArgs &args) const
 lists the signals of this component More...
 
void signal_list_signals_recursive (SignalArgs &args) const
 prints all signals recursive More...
 
void signal_print_info (SignalArgs &args) const
 gets info on this component More...
 
void signal_print_tree (SignalArgs &args) const
 signal to print the tree More...
 
void signature_print_tree (SignalArgs &args) const
 signature to signal_print_tree More...
 
void signal_rename_component (SignalArgs &args)
 renames this component More...
 
void signal_save_tree (SignalArgs &args)
 dumps the tree to a file More...
 
void signal_list_content (SignalArgs &args)
 gives information about this component such as options, signals, ... More...
 
void signal_signature (SignalArgs &args)
 Gives a signal signature, if any. More...
 
void signature_create_component (SignalArgs &args)
 
void signature_rename_component (SignalArgs &args)
 
void signature_move_component (SignalArgs &args)
 
void signal_store_timings (SignalArgs &args)
 Signal to store the timings (if enabled) into properties, i.e. for readout from python or the GUI. More...
 
void signal_clear (SignalArgs &args)
 Signal to remove all sub-components. More...
 
void signal_reset_options (SignalArgs &args)
 Signal to set all options to their default value. More...
 
void signal_add_tag (SignalArgs &args)
 Signal to add a tag. More...
 
void signature_add_tag (SignalArgs &args)
 
- Public Member Functions inherited from SignalHandler
 ~SignalHandler ()
 
const storage_tsignal_list () const
 
SignalPtr signal (const SignalID &sname)
 
SignalCPtr signal (const SignalID &sname) const
 
SignalRet call_signal (const SignalID &sname, SignalArgs &sinput)
 Calls the signal by providing its name and input. More...
 
SignalRet call_signal (const SignalID &sname, std::vector< std::string > &sinput)
 Calls the signal by providing its name and input. More...
 
bool signal_exists (const SignalID &sname) const
 Checks if a signal exists or not. More...
 
Signalregist_signal (const SignalID &sname)
 Regist signal. More...
 
void unregist_signal (const SignalID &sname)
 Unregist signal. More...
 
- Public Member Functions inherited from ConnectionManager
 ~ConnectionManager ()
 destructor closes all connections More...
 
Connectionconnection (const std::string &name)
 
Connectionmanage_connection (const std::string &name)
 manages a connection (creates if necessary) More...
 
- Public Member Functions inherited from TaggedObject
 TaggedObject ()
 Constructor. More...
 
bool has_tag (const std::string &tag) const
 
void add_tag (const std::string &tag)
 
std::vector< std::string > get_tags () const
 
void remove_tag (const std::string &tag)
 

Static Public Member Functions

static std::string type_name ()
 Get the class name. More...
 
- Static Public Member Functions inherited from Component
static std::string type_name ()
 Get the class name. More...
 

Private Types

enum  debug_command {
  INVALID =-1, STOP =0, CONTINUE =1, LINE_BY_LINE_EXECUTION =2,
  NORMAL_EXECUTION =3, BREAK =4, TOGGLE_BREAK_POINT =5
}
 debugging commands More...
 

Private Member Functions

void signature_execute_script (common::SignalArgs &node)
 Signature for the execute_script signal. More...
 
void emit_debug_trace (int fragment, int line)
 Emit when the interpreter stop on a line. More...
 
void emit_completion_list (std::vector< std::string > *add, std::vector< std::string > *sub)
 Send the list of known keywords to the client. More...
 
void emit_documentation (std::string doc)
 Send the documentation string to the client, documntation strings are emitted when a fragment 0 code prints output. (so documentation request must be in fragment 0) More...
 
void check_scope_difference (PythonDictEntry &entry, std::string name, std::vector< std::string > *add, std::vector< std::string > *sub, int rec=0, bool child=false)
 Recursive function that checks for scope modification,. More...
 
void flush_python_stdout ()
 Look if there are no outputs in python sys.out (replaced with a simple storing class), output are then sendend throught CFinfo. More...
 
void access_pe_manager ()
 

Private Attributes

std::string current_instruction
 
bool new_command
 
Handle< common::PE::Managerm_manager
 
PythonDictEntry local_scope_entry
 
PythonDictEntry builtin_scope_entry
 
PythonDictEntry local_frame_scope_entry
 
PythonDictEntry global_frame_scope_entry
 
debug_command interpreter_mode
 
std::vector< std::pair< int, int > > break_points
 
int break_fragment
 
int break_line
 
int fragment_generator
 
bool stoped
 
boost::mutex compile_mutex
 

Static Private Attributes

static int python_close =0
 

Additional Inherited Members

- Public Types inherited from Component
typedef ComponentIterator< Componentiterator
 type of the iterator to Component More...
 
typedef ComponentIterator< Component const > const_iterator
 type of the iterator to constant Component More...
 
- Public Types inherited from SignalHandler
typedef std::vector< SignalPtrstorage_t
 storage type for signals More...
 
- Public Attributes inherited from SignalHandler
storage_t m_signals
 storage of the signals More...
 
- Protected Member Functions inherited from Component
Componentadd_static_component (const boost::shared_ptr< Component > &subcomp)
 Add a static (sub)component of this component. More...
 
void raise_tree_updated_event ()
 raise event that the path has changed More...
 

Detailed Description

Manage a python interpreter.

Exposes an execute_script signal, taking as single argument the string containing the python script to run

Author
Bolsee Vivian

Definition at line 43 of file ScriptEngine.hpp.

Member Enumeration Documentation

enum debug_command
private

debugging commands

Enumerator
INVALID 
STOP 

do nothing

CONTINUE 

put the interpreter in stop state, he will stop before the next line

LINE_BY_LINE_EXECUTION 

continue the execution, if the interpreter was in line by line state he will stay in this state, if he was in stop state he will go back normal execution state

NORMAL_EXECUTION 

the interpreter will stop before each line

BREAK 

the interpreter execute normaly the python code

TOGGLE_BREAK_POINT 

the interpreter go out of the current execution frame

Definition at line 85 of file ScriptEngine.hpp.

Constructor & Destructor Documentation

ScriptEngine ( const std::string &  name)

Contructor.

Parameters
nameof the component

Definition at line 128 of file ScriptEngine.cpp.

~ScriptEngine ( )
virtual

Definition at line 189 of file ScriptEngine.cpp.

Member Function Documentation

void access_pe_manager ( )
private

Definition at line 617 of file ScriptEngine.cpp.

void check_python_change ( )

Verify if the python scope has changed, or if there is some data on the python sys.out code_fragment allow to redirect correctly the output if this was a documentation request.

Definition at line 384 of file ScriptEngine.cpp.

void check_scope_difference ( PythonDictEntry entry,
std::string  name,
std::vector< std::string > *  add,
std::vector< std::string > *  sub,
int  rec = 0,
bool  child = false 
)
private

Recursive function that checks for scope modification,.

Definition at line 245 of file ScriptEngine.cpp.

void emit_completion_list ( std::vector< std::string > *  add,
std::vector< std::string > *  sub 
)
private

Send the list of known keywords to the client.

Definition at line 556 of file ScriptEngine.cpp.

void emit_debug_trace ( int  fragment,
int  line 
)
private

Emit when the interpreter stop on a line.

Definition at line 585 of file ScriptEngine.cpp.

void emit_documentation ( std::string  doc)
private

Send the documentation string to the client, documntation strings are emitted when a fragment 0 code prints output. (so documentation request must be in fragment 0)

Definition at line 571 of file ScriptEngine.cpp.

int execute_script ( std::string  script,
int  code_fragment = -1 
)

Execute the script passed as a string, code fragment is used for traceability.

Definition at line 205 of file ScriptEngine.cpp.

void flush_python_stdout ( )
private

Look if there are no outputs in python sys.out (replaced with a simple storing class), output are then sendend throught CFinfo.

Definition at line 362 of file ScriptEngine.cpp.

int new_line_reached ( int  code_fragment,
int  line_number 
)

Called by the trace function when a new line is reached.

Definition at line 480 of file ScriptEngine.cpp.

void no_more_instruction ( )

Called when the interpreter have no more instruction avalaible used in debug to clear the debug trace at the end of the code.

Definition at line 412 of file ScriptEngine.cpp.

void signal_change_debug_state ( common::SignalArgs node)

Modify the debug state the first argument is the debug_command named command, if the debug command is equal to TOGGLE_BREAK_POINT fragment and line argument must be defined (both int)

Definition at line 513 of file ScriptEngine.cpp.

void signal_completion ( common::SignalArgs node)

Signal to retrieve the completion list; no argument.

Definition at line 600 of file ScriptEngine.cpp.

void signal_execute_script ( common::SignalArgs node)

Signal to execute a script.

Definition at line 426 of file ScriptEngine.cpp.

void signal_get_documentation ( common::SignalArgs node)

Signal to get the documentation of the symbol under the mouse in the gui takes one argument, expression, must be a string containing the symbol.

Definition at line 470 of file ScriptEngine.cpp.

void signature_execute_script ( common::SignalArgs node)
private

Signature for the execute_script signal.

Definition at line 458 of file ScriptEngine.cpp.

static std::string type_name ( )
inlinestatic

Get the class name.

Definition at line 53 of file ScriptEngine.hpp.

Member Data Documentation

int break_fragment
private

Definition at line 142 of file ScriptEngine.hpp.

int break_line
private

Definition at line 143 of file ScriptEngine.hpp.

std::vector<std::pair<int,int> > break_points
private

Definition at line 140 of file ScriptEngine.hpp.

PythonDictEntry builtin_scope_entry
private

Definition at line 135 of file ScriptEngine.hpp.

boost::mutex compile_mutex
private

Definition at line 146 of file ScriptEngine.hpp.

std::string current_instruction
private

Definition at line 131 of file ScriptEngine.hpp.

int fragment_generator
private

Definition at line 144 of file ScriptEngine.hpp.

PythonDictEntry global_frame_scope_entry
private

Definition at line 137 of file ScriptEngine.hpp.

debug_command interpreter_mode
private

Definition at line 138 of file ScriptEngine.hpp.

PythonDictEntry local_frame_scope_entry
private

Definition at line 136 of file ScriptEngine.hpp.

PythonDictEntry local_scope_entry
private

Definition at line 134 of file ScriptEngine.hpp.

Handle< common::PE::Manager > m_manager
private

Definition at line 133 of file ScriptEngine.hpp.

bool new_command
private

Definition at line 132 of file ScriptEngine.hpp.

int python_close =0
staticprivate

Definition at line 141 of file ScriptEngine.hpp.

bool stoped
private

Definition at line 145 of file ScriptEngine.hpp.


The documentation for this class was generated from the following files:
Send comments to:
COOLFluiD Web Admin