-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include "SALOME_GenericObj.idl"
#include "SALOME_Exception.idl"
+#include "SALOME_Comm.idl"
/*! \file SALOME_PyNode.idl \brief interface for remote python execution
*/
{
typedef sequence<octet> pickledArgs;
typedef sequence<string> listofstring;
+ interface Container;
- interface PyNode : SALOME::GenericObj
+ interface PyNodeBase : SALOME::GenericObj
{
+ Container getContainer();
+ string getCode();
+
+ string getName();
+
+ /*!
+ This method allows to define a new global var called \a varName. This newly created var will be
+ set to value \a valueOfVar.
+ */
+ void defineNewCustomVar(in string varName, in pickledArgs valueOfVar) raises (SALOME::SALOME_Exception);
+
+ /*!
+ This method executes the python code in \a codeStr and can append/remove symboles in context to make them available or not for future call of execute on this.
+ \param [in] codeStr - the python code (without statement) to be executed, that can modify the context initialized at initialization.
+ */
+ void executeAnotherPieceOfCode(in string codeStr) raises (SALOME::SALOME_Exception);
+ };
+
+ interface PyNode : PyNodeBase
+ {
/*! \brief execute a python function defined in the node
\param functionName the python function defined in the node to execute
\param inargs input argument values (tuple,dict) provided as a python pickle
\return output argument values (tuple) as a python pickle
*/
- pickledArgs execute(in string functionName,in pickledArgs inargs) raises (SALOME::SALOME_Exception);
+ pickledArgs execute(in string functionName, in pickledArgs inargs) raises (SALOME::SALOME_Exception);
} ;
- interface PyScriptNode : SALOME::GenericObj
+ interface PyScriptNode : PyNodeBase
{
+ /*!
+ This method compiles, but NOT EXECUTE, the code \a codeStr. The result of the compiled code will be used then
+ on execute step.
+ \param codeStr - the python code (without statement) to be executed, that can modify the context initialized at initialization.
+ */
+ void assignNewCompiledCode(in string codeStr) raises (SALOME::SALOME_Exception);
/*! \brief execute a python script defined in the node
*/
pickledArgs execute(in listofstring outargsname, in pickledArgs inargs) raises (SALOME::SALOME_Exception);
+ /*! \brief first part of whole execute method. This split is to reduce the memory peak.
+ */
+ void executeFirst(in SALOME::SenderByte inargs) raises (SALOME::SALOME_Exception);
+
+ /*! \brief second and last part of execute method. This split is to reduce the memory peak.
+ */
+ SALOME::SenderByte executeSecond(in listofstring outargsname) raises (SALOME::SALOME_Exception);
+
+ pickledArgs getValueOfVarInContext(in string varName) raises (SALOME::SALOME_Exception);
+
+ void assignVarInContext(in string varName, in pickledArgs value) raises (SALOME::SALOME_Exception);
+
+ pickledArgs callMethodOnVarInContext(in string varName, in string methodName, in pickledArgs args) raises (SALOME::SALOME_Exception);
} ;
};