#include <unistd.h>
#include <stdio.h>
+#include <Python.h>
+
+#include <string>
+#include <map>
+
#include "DataFlowBase_Base.hxx"
#include <SALOMEconfig.h>
GraphExecutor::StateEventAction _ActionTable[ SUPERV::NumberOfAutomatonStates ]
[ GraphExecutor::NumberOfEvents ] ;
+ pthread_mutex_t _MutexPythonWait ;
+ map< string , PyObject * > _MapOfPyFunctions ;
+ bool _PyInitModule ;
+ int _ExecNumber ;
+ int _GraphExecutingNumber ;
+
bool _JoinThread ;
pthread_t _JoinThreadNo ;
pthread_mutex_t _MutexJoinWait ;
FiniteStateMachine() ;
virtual ~FiniteStateMachine() {} ;
+ int ExecNumber() ;
+ void Executed() ;
+ bool PyInitModule() ;
+ void PyLock() ;
+ void PyUnLock() ;
+ bool PyFunction( const char * aPyFuncName , PyObject * aPyFunction ) ;
+ PyObject * PyFunction( const char * aPyFuncName ) ;
+
void JoinThread() ;
void JoinThread( pthread_t aThread ) ;
- const char * ControlStateName(
- const SUPERV::ControlState & aState ) const {
+ const char * ControlStateName( const SUPERV::ControlState & aState ) const {
return _ControlStateName[ aState ] ; } ;
- const char * StateName(
- const SUPERV::AutomatonState & aState ) const {
+ const char * StateName( const SUPERV::AutomatonState & aState ) const {
return _StateName[ aState ] ; } ;
- const char * StateName(
- const SUPERV::GraphState & aState ) const {
+ const char * StateName( const SUPERV::GraphState & aState ) const {
return _GraphStateName[ aState ] ; } ;
- const char * EventName(
- const GraphExecutor::NodeEvent & anEvent ) const {
+ const char * EventName( const GraphExecutor::NodeEvent & anEvent ) const {
return _EventName[ anEvent ] ; } ;
- const char * ActionName(
- const GraphExecutor::StateEventAction & anAction ) const {
+ const char * ActionName( const GraphExecutor::StateEventAction & anAction ) const {
return _ActionName[ anAction ] ; } ;
- const SUPERV::AutomatonState NextState(
- const SUPERV::AutomatonState & aState ,
- const GraphExecutor::NodeEvent & anEvent ) const {
+ const SUPERV::AutomatonState NextState( const SUPERV::AutomatonState & aState ,
+ const GraphExecutor::NodeEvent & anEvent ) const {
return _TransitionTable[ aState ][ anEvent ] ; } ;
- const GraphExecutor::StateEventAction NextAction(
- const SUPERV::AutomatonState & aState ,
- const GraphExecutor::NodeEvent & anEvent ) const {
+ const GraphExecutor::StateEventAction NextAction( const SUPERV::AutomatonState & aState ,
+ const GraphExecutor::NodeEvent & anEvent ) const {
return _ActionTable[ aState ][ anEvent ] ; } ;
};