1 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License.
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // Author : Jean Rahuel
26 /*! \file SUPERV.idl This file contains a set of interfaces of the %SUPERVISION module
29 #ifndef __SUPERV_IDL__
30 #define __SUPERV_IDL__
32 #include "SALOME_ModuleCatalog.idl"
33 #include "SALOME_Component.idl"
34 #include "SALOMEDS.idl"
36 The main package of interfaces of %SUPERVISION module
41 This enumeration contains a set of elements defining the type of the port.
42 \note <BR>In general, ports represent <STRONG>input or output parameters</STRONG> of the functions,
43 implemented in different kinds of nodes of the graph.
45 enum KindOfPort { UndefinedParameter ,
53 DataStreamParameter } ;
56 This enumeration contains a set of dependencies of InPorts and OutPorts.
58 // enum KindOfDependency { UndefinedDependency , TimeDependency , IterationDependency } ;
61 This enumeration contains a set of schemas of InPorts.
63 enum KindOfSchema { SCHENULL , TI , TF , DELTA } ;
66 This enumeration contains a set of interpolations of InPorts.
68 enum KindOfInterpolation { INTERNULL , L0 , L1 } ;
71 This enumeration contains a set of extrapolations of InPorts.
73 enum KindOfExtrapolation { EXTRANULL , E0 , E1 } ;
76 This enumeration contains a set of dependencies of Ports.
78 enum KindOfDataStreamTrace { WithoutTrace , SummaryTrace , DetailedTrace } ;
81 This enumeration contains a set of elements defining the type of the node.
83 enum KindOfNode { FactoryNode ,
97 This struct contains fields defining the date.
108 This enumeration contains a set of elements defining the type of operation, which has been performed
112 enum GraphEvent { UndefinedEvent ,
125 // UndefinedState : Non existing Node, Port etc...
127 This enumeration contains a set of elements defining the current state of the node(graph).
130 enum GraphState { UndefinedState ,
141 SuspendErroredState ,
145 NumberOfGraphStates } ;
147 /*! A sequence of string values.
149 typedef sequence<string> ListOfStrings ;
154 interface StreamLink ;
156 typedef sequence<Link> ListOfLinks ;
157 typedef sequence<StreamLink> ListOfStreamLinks ;
160 interface StreamPort ;
162 typedef sequence<Port> ListOfPorts ;
163 typedef sequence<StreamPort> ListOfStreamPorts ;
174 interface StreamGraph ;
176 typedef sequence<CNode> ListOfCNodes ;
177 typedef sequence<FNode> ListOfFNodes ;
178 typedef sequence<INode> ListOfINodes ;
179 typedef sequence<GNode> ListOfGNodes ;
180 typedef sequence<LNode> ListOfLNodes ;
181 typedef sequence<ELNode> ListOfELNodes ;
182 typedef sequence<SNode> ListOfSNodes ;
183 typedef sequence<ESNode> ListOfESNodes ;
184 typedef sequence<Graph> ListOfGraphs ;
187 This struct contains fields defining different types of nodes.
191 ListOfCNodes CNodes ;
192 ListOfFNodes FNodes ;
193 ListOfINodes INodes ;
194 ListOfGNodes GNodes ;
195 ListOfLNodes LNodes ;
196 ListOfELNodes ELNodes ;
197 ListOfSNodes SNodes ;
198 ListOfESNodes ESNodes ;
199 ListOfGraphs Graphs ;
202 // ToSuspendState : will be Suspended before running if waiting or
203 // will be Suspended while running or
204 // will be Suspended after run
205 // ToSuspendStartState : will be Suspended at the beginning of execution
206 // ToSuspendDoneState : will be Suspended after run
208 This enumeration contains a set of elements defining the %ControlState of the node.
209 The %ControlState gives a possibility to determine the "control actions" which have been done by
210 the user (Suspend, SuspendDone, Kill, etc...).
212 enum ControlState { VoidState ,
213 ToSuspendStartState ,
219 NumberOfControlStates } ;
224 /*! \brief interface %SuperG
226 This interface contains a set of methods necessary for management of a %graph.
228 interface SuperG : Engines::Component, SALOMEDS::Driver {
231 //DumpPython is defined in SALOME_Component.idl (SALOMEDS::Driver)
232 // SALOMEDS::TMPFile DumpPython( in SALOMEDS::Study theStudy ,
233 // in boolean isPublished ,
234 // out boolean isValisScript ) ;
237 Constructs a graph with possibility to read/edit it
238 \param aGraph %aGraphName or %aGraphXmlFile
240 SUPERV::Graph Graph(in string aGraph ) ; // aGraphName or aGraphXmlFile
243 Constructs a read Only graph ( for execution ).
244 \note <BR>In this graph there is also a possibility to update nodes, coordinates of the links,
245 of container names and input data.
246 \param aGraph %aGraphName or %aGraphXmlFile
248 SUPERV::Graph GraphE(in string aGraph ) ; // aGraphName or aGraphXmlFile
251 Constructs a StreamGraph with possibility to read/edit it
252 \param aGraph %aGraphName or %aGraphXmlFile
254 SUPERV::StreamGraph StreamGraph(in string aGraph ) ; // aGraphName or aGraphXmlFile
257 Constructs a read Only StreamGraph ( for execution ).
258 \note <BR>In this graph there is also a possibility to update nodes, coordinates of the links,
259 of container names and input data.
260 \param aGraph %aGraphName or %aGraphXmlFile
262 SUPERV::StreamGraph StreamGraphE(in string aGraph ) ; // aGraphName or aGraphXmlFile
265 Creates a value of <b>string</b> type which will be used for <VAR>Input</VAR> method in the interface %Node.
266 \param aString Input value of string type.
268 SUPERV::Value StringValue( in string aString ) ;
270 Creates a value of <b>any</b> type which will be used for <VAR>Input</VAR> method in the interface %Node.
271 \param anAny Input value of any type.
273 SUPERV::Value AnyValue( in any anAny ) ;
275 Gets a graph with a definite %IOR
276 \param ior String parameter defining %IOR of the graph.
278 SUPERV::Graph getGraph(in string ior); // get Graph from is IOR
281 Gets a graph with a definite %IOR
282 \param ior String parameter defining %IOR of the graph.
284 SUPERV::StreamGraph getStreamGraph(in string ior); // get Graph from is IOR
288 /*! \brief %CNode interface
290 This is a base class of the SUPERVISION module. It contains a set of methods allowing:
292 <li>creating a <b>Computation</b> node and setting its parameters (Name, Author, Comments etc.)
293 <li>checking the current state of the node in the data flow
294 <li>node execution follow-up
295 <li>management of the components, which can be initialized for execution of calculations in the data flow. (For that purpose %CNode class inherits the methods of the %Engines:Component class)
300 interface CNode : Engines::Component {
305 Returns the name of the node(graph).
309 Returns the service of this node .
311 SALOME_ModuleCatalog::Service Service() ;
313 Returns the type of the node.
315 SUPERV::KindOfNode Kind() ;
317 Returns the date of creation of the node(graph).
319 SUPERV::SDate CreationDate() ;
321 Returns the date of last update of the node(graph).
323 SUPERV::SDate LastUpdateDate() ;
325 Returns the name of the version of the node(graph).
329 Returns the name of the author of the node(graph).
333 Returns the string containing comments about this node(graph).
339 Sets the name of the node(graph).
340 \param aNewName String value defining the name of the node(graph).
341 \return True if the name has been updated.
343 boolean SetName(in string aNewName ) ;
345 Sets the name of the author. Returns True if it is updated.
346 \param anAuthor String value defining the name of the author.
347 \return True if the name has been updated.
349 boolean SetAuthor(in string anAuthor ) ;
351 Allows to update the comments about this node(graph).
352 \param aComment String value containing a comment to this node(graph).
353 \return True if the old comment has been updated.
355 boolean SetComment(in string aComment ) ;
358 Gets a port of the node (for compatibility : see GetInPort - GetOutPort).
360 SUPERV::Port Port( in string aParameterName ) ;
362 /*! Gets an Input port in a node.
363 \param aParameterName This value sets the name of the parameter which will be defined in this port.
365 SUPERV::Port GetInPort( in string aParameterName ) ;
367 /*! Gets an Output port in a node.
368 \param aParameterName This value sets the name of the parameter which will be defined in this port.
370 SUPERV::Port GetOutPort( in string aParameterName ) ;
372 /*! Gets an Input StreamPort in a node.
373 \param aParameterName This value sets the name of the parameter which will be defined in this port.
375 SUPERV::StreamPort GetInStreamPort( in string aParameterName ) ;
377 /*! Gets an Output StreamPort in a node.
378 \param aParameterName This value sets the name of the parameter which will be defined in this port.
380 SUPERV::StreamPort GetOutStreamPort( in string aParameterName ) ;
383 Returns true if a Node (or Graph) has StreamPorts
385 boolean HasStreamPort() ;
388 Enters a value into an Input %Port
390 SUPERV::Port Input( in string InputParameterName ,
394 Gets a list of ports of the node(graph)
396 SUPERV::ListOfPorts Ports() ;
399 Gets a list of ports of the node(graph)
401 SUPERV::ListOfStreamPorts StreamPorts() ;
403 /*! Gets a list of links of a node(graph)
405 SUPERV::ListOfLinks Links() ;
407 /*! Gets a list of StreamLinks of a node(graph)
409 SUPERV::ListOfStreamLinks StreamLinks() ;
412 Returns True if this node is a graph.
414 boolean IsStreamGraph() ;
416 Returns True if this node is a graph.
421 Returns True if this node is a MacroNode of a DataFlowGraph or a DataStreamGraph.
425 Returns True if this node is a MacroNode of a DataFlowGraph.
427 boolean IsFlowMacro() ;
429 Returns True if this node is a MacroNode of a DataStreamGraph.
431 boolean IsStreamMacro() ;
434 Returns True if this node is a Head Graph .
436 boolean IsHeadGraph() ;
438 Returns the MacroNode Level of this node.
443 Returns True if the node appears to be a %computing node.
445 boolean IsComputing() ;
447 Returns True if the node appears to be a %factory node.
449 boolean IsFactory() ;
451 Returns True if the node appears to be an %inline node.
455 Returns True if the node appears to be a %GOTO node.
459 Returns True if the node appears to be a %loop node.
463 Returns True if the node appears to be an %endloop node.
465 boolean IsEndLoop() ;
467 Returns True if the node appears to be a %switch node.
471 Returns True if the node appears to be a %endswitch node.
473 boolean IsEndSwitch() ;
476 Returns the numero of subgraph of a node.
480 Returns the numero of substreamgraph of a node.
482 long SubStreamGraph() ;
485 Returns the number of threads of the graph.
490 Returns True if the node(graph) is waiting for Data input
492 boolean IsWaiting() ;
495 Returns True if the node(graph) is ready for execution
500 Returns True if the node(graph) is currently running
502 boolean IsRunning() ;
505 Returns True if execution is finished
510 Returns True if execution is suspended
513 boolean IsSuspended() ;
515 Returns the current state of the graph.
517 SUPERV::GraphState State() ;
520 Waits for ready_to_run state, Suspend and return.
524 /*! Waits for running state, Suspend and return.
528 /*! Waits for done state, Suspend and return.
532 /*! Waits for Suspend state and return.
534 boolean SuspendedW() ;
540 If not running : will be killed when ready to run.
541 If running : kills immediatly.
547 Execution will be killed only just after running (only for nodes).
553 If not running : will be stopped when ready to run.
554 If running : stops immediatly
557 /*! Suspends execution.
559 If not running : will be Suspended when ready to run. It is used in step-by-step execution.
560 If running : suspends immediatly
563 /*! Suspends execution only just after running.
565 boolean SuspendDone();
567 /*! Resumes execution.
569 If Suspended : running will be continued.
570 If not Suspended : cancels the current ControlState ( Suspend, Kill, ...)
575 // Control state required : Kill, Suspend, Stop
577 Returns control state of the node(graph).
579 SUPERV::ControlState Control() ;
581 Clears the control state of the node(graph).
583 void ControlClear() ;
585 boolean ContainerKill();
588 Sets the position of the node in the window.
590 void Coords( in long X , in long Y ) ;
592 Returns the position of the node along X-axis.
596 Returns the position of the node along Y-axis.
600 Returns the Cpu used by a node for execution of calculations in seconds.
605 /*! \brief %FNode class
607 This class is necessary for management of factory nodes in a data flow. Besides the inherited methods it contains some methods allowing to define
608 the component from the container, which will be called for execution of the calculation.
611 interface FNode : CNode {
613 /*! Gets the name of the component, which will be called for execution of the calculation.
615 string GetComponentName() ;
616 /*! Gets the name of the interface of the component.
618 string GetInterfaceName() ;
619 /*! Gets the container containing the component, which will be called for execution of the calculation.
621 string GetContainer() ;
622 /*! Sets the name of the component, which will be called for execution of the calculation.
623 \param aComponentName Name of the component.
625 boolean SetComponentName(in string aComponentName ) ;
626 /*! Sets the name of the interface of the component.
627 \param anInterfaceName Name of the interface.
629 boolean SetInterfaceName(in string anInterfaceName ) ;
630 /*! Gets the container containing the component, which will be called for execution of the calculation.
631 \param aContainer Container containing the component.
633 boolean SetContainer(in string aContainer ) ;
634 /*! Method to define if %FNode gets from a component, which is implemented in C++ or Python.
635 Returns True if it's a C++ component node
640 /*! \brief %INode class
642 This class is necessary for management of inline nodes in a data flow. Besides the inherited methods it contains some methods allowing to set a Python function, which will be
643 executed for performing calculations, as well as input and output parameters for the node.
647 interface INode : CNode {
650 /*! Sets Python function for the InLine Node.
651 \param FuncName Name of the function
652 \param aPyInitFunction Python initialization function of the InLine Node
654 void SetPyFunction( in string FuncName ,
655 in SUPERV::ListOfStrings aPyInitFunction ) ;
656 /*! Returns Python function of the InLine Node.
658 SUPERV::ListOfStrings PyFunction() ;
659 /*! Returns the name of the Python function of the InLine Node.
661 string PyFuncName() ;
663 /*! Creates an Input port in a node.
664 \param aParameterName This value sets the name of the parameter which will be defined in this port.
665 \param aParameterType This value sets the type of the parameter which will be defined in this port.
667 SUPERV::Port InPort( in string aParameterName , in string aParameterType ) ;
668 /*! Creates an Output port in an Inline node.
669 \param aParameterName This value sets the name of the parameter which will be defined in this port.
670 \param aParameterType This value sets the type of the parameter which will be defined in this port.
672 SUPERV::Port OutPort( in string aParameterName , in string aParameterType ) ;
674 /*! Creates an Input DataStreamPort in an Inline node.
675 \param aParameterName This value sets the name of the parameter which will be defined in this port.
676 \param aParameterType This value sets the type of the parameter which will be defined in this port.
678 SUPERV::StreamPort InStreamPort (in string aParameterName, in string aParameterType,
679 in SALOME_ModuleCatalog::DataStreamDependency aDependency);
681 /*! Creates an Output DataStreamPort in an Inline node.
682 \param aParameterName This value sets the name of the parameter which will be defined in this port.
683 \param aParameterType This value sets the type of the parameter which will be defined in this port.
685 SUPERV::StreamPort OutStreamPort (in string aParameterName, in string aParameterType,
686 in SALOME_ModuleCatalog::DataStreamDependency aDependency);
689 /*! \brief %GNode class
691 This class is necessary for management of GOTO/EndLoop/EndSwitch nodes in the dataflow.
692 Besides the inherited methods it contains some methods allowing to define the couple node, which will be linked to this one.
694 // GOTO/EndLoop/EndSwitch Nodes
696 interface GNode : INode {
698 /*! Sets the coupled InLine Node to this GOTO/EndLoop/EndSwitch Node.
700 boolean SetCoupled( in string anInLineNode ) ;
701 /*! Returns the coupled InLine Node to this GOTO/EndLoop/EndSwitch Node.
703 SUPERV::INode Coupled() ;
705 /*! %Loop Nodes class
709 interface LNode : GNode {
711 /*! Sets Python Init function of the Loop Node.
712 \param InitName Name of the Init function
713 \param aPyInitFunction Python Init function
715 void SetPyInit( in string InitName ,
716 in SUPERV::ListOfStrings aPyInitFunction ) ;
717 /*! Returns Python Init function of the Loop Node.
719 SUPERV::ListOfStrings PyInit() ;
720 /*! Returns the name of the Python Init function of the Loop Node.
722 string PyInitName() ;
724 /*! Sets Python More function of the Loop Node.
725 \param MoreName Name of the More function
726 \param aPyMoreFunction Python More function
728 void SetPyMore( in string MoreName ,
729 in SUPERV::ListOfStrings aPyMoreFunction ) ;
730 /*! Returns Python More function of the Loop Node.
732 SUPERV::ListOfStrings PyMore() ;
733 /*! Returns the name of the Python More function of the Loop Node.
735 string PyMoreName() ;
737 /*! Sets Python Next function of the Loop Node.
738 \param NextName Name of the Next function
739 \param aPy NextFunction Python Next function
741 void SetPyNext( in string NextName ,
742 in SUPERV::ListOfStrings aPyNextFunction ) ;
744 /*! Returns Python Next function of the Loop Node.
746 SUPERV::ListOfStrings PyNext() ;
747 /*! Returns the name of the Python Next function of the Loop Node.
749 string PyNextName() ;
755 interface ELNode : GNode {
761 interface SNode : GNode {
767 interface ESNode : GNode {
771 /*! \brief Interface of a graph
773 This interface includes a set of methods used for management of the graphs in %SUPERVISION module.
777 interface Graph : GNode {
780 /*! Creates a Computing Node in a Graph.
782 SUPERV::CNode CNode( in SALOME_ModuleCatalog::Service aService ) ;
784 /*! Creates a Factory Node in a Graph.
786 SUPERV::FNode FNode( in string aComponentName ,
787 in string anInterfaceName ,
788 in SALOME_ModuleCatalog::Service aService ,
789 in SALOME_ModuleCatalog::ImplType implType ) ;
791 /*! Creates an InLine Node in a Graph.
793 SUPERV::INode INode( in string FuncName , in ListOfStrings aPythonFunction ) ;
795 /*! Creates a GOTO Node and links it to the corresponding InLine node.
797 SUPERV::GNode GNode( in string FuncName , in ListOfStrings aPythonFunction ,
798 in string anINode ) ;
800 /*! Creates a Loop Node ("for" or "while" loop) and links it to the corresponding end of loop node.
802 SUPERV::LNode LNode( in string InitName , in ListOfStrings InitFunction ,
803 in string MoreName , in ListOfStrings MoreFunction ,
804 in string NextName , in ListOfStrings NextFunction ,
805 out SUPERV::INode anEndOfLoop ) ;
807 /*! Creates a conditional "if/elseif/else" or "switch" node and the corresponding end node
809 SUPERV::SNode SNode( in string FuncName , in ListOfStrings aPythonFunction ,
810 out SUPERV::INode anEndOfSwitch ) ;
812 /*! Creates a "MacroNode" node which corresponds to a Graph with a xml file
814 SUPERV::Graph MNode( in string aXmlFileName ) ;
816 /*! Creates a "MacroNode" node which corresponds to a Graph with a Graph
818 SUPERV::Graph GraphMNode( in Graph aGraph ) ;
820 /*! Returns a Graph of a "MacroNode" or a "MacroNode" of a Graph
822 SUPERV::Graph FlowObjRef() ;
824 /*! Returns a StreamGraph of a "MacroNode" or a "MacroNode" of a StreamGraph
826 SUPERV::StreamGraph StreamObjRef() ;
828 /*! Returns an existing node with a definite name.
829 \param aNodeName Name of the Node.
831 SUPERV::CNode Node( in string aNodeName ) ;
833 /*! Creates a CORBA Component Object Reference
835 Engines::Component ComponentRef( in string aComputerContainer ,
836 in string aComponentName ) ;
838 /*! Creates a link connecting two ports (%Output %Port and %Input %Port) of the nodes in a Graph
840 SUPERV::Link Link( in SUPERV::Port OutputPort ,
841 in SUPERV::Port InputPort ) ;
844 Give the last error[s] message[s]
845 \return string[s] corresponding to last error[s].
850 Imports a graph into a file with XML format
851 \param anXmlFile String parameter defining the name of the XML file.
852 \return True, if the graph has been successfully imported.
854 boolean Import( in string anXmlFile ) ;
857 Exports a graph to a file with XML format
858 \param anXmlFile String parameter defining the name of the XML file.
859 \return True, if the graph has been successfully exported.
861 boolean Export( in string anXmlFile ) ;
864 Exports a graph to a string in python format
866 string SavePY( in boolean importSuperV ) ;
869 Returns True if the graph is read Only.
871 boolean IsReadOnly() ;
874 Starts asynchronous execution of the graph.
879 Assigns to the %Node an %Event and a %State of the %Node, if the Event is
880 available. And returns immediately Nil, NoEvent and NoState if not.
881 Returns false if the graph is finished, suspended, killed or stopped.
882 \param aNode %Node for which this method is called
883 \param anEvent An operation, which has been performed on this node(graph).
884 \param aState Current state of the graph
886 boolean EventNoW( out SUPERV::CNode aNode , out SUPERV::GraphEvent anEvent ,
887 out SUPERV::GraphState aState ) ;
890 Assigns to the %Node an %Event and a %State of the %Node, if the Event is
891 available. Waits if it is not available at the current moment.
892 Returns false if the graph is finished, suspended, killed or stopped.
893 \param aNode %Node for which this method is called
894 \param anEvent An operation, which has been performed on this node(graph).
895 \param aState Current state of the graph
897 boolean Event( out SUPERV::CNode aNode , out SUPERV::GraphEvent anEvent ,
898 out SUPERV::GraphState aState ) ;
900 // Same as Event but execution of the thread is suspended between the
901 // return of EventW and the next call to EventW
903 Assigns to the %Node an %Event and a %State of the %Node, if the Event is
904 available. And returns immediately Nil, NoEvent and NoState if not.
905 Returns false if the graph is finished, suspended, killed or stopped.
906 \note <BR>Execution of the thread is suspended between the return of this
907 method and its next usage.
908 \param aNode %Node for which this method is called
909 \param anEvent An operation, which has been performed on this node(graph).
910 \param aState Current state of the graph
912 boolean EventW( out SUPERV::CNode aNode , out SUPERV::GraphEvent anEvent ,
913 out SUPERV::GraphState aState ) ;
914 /*! \name Methods used for inner debugging purposes of threads management :
920 SUPERV::ListOfNodes LevelNodes( in long aLevel ) ;
926 Returns the number of currently running threads.
930 Returns the number of suspended threads.
932 long SuspendedThreads();
934 Returns True if the graph is valid.
938 Returns True if the graph can be executed.
940 boolean IsExecutable() ;
942 Returns True if the graph is being currently edited.
944 boolean IsEditing() ;
946 Returns True if the graph is being currently executed.
948 boolean IsExecuting() ;
950 long LastLevelDone() ;
953 Launches step-by-step execution of the graph.
954 \note The execution is suspended immediatly after performance of operations of the first node and
955 user can specify the nodes, where execution will be again suspended after its resuming.
959 Allows to copy one graph into another.
961 SUPERV::Graph Copy() ;
963 Convert a FlowGraph to a StreamGraph.
965 SUPERV::StreamGraph ToStreamGraph() ;
969 boolean Merge( in Graph aGraph ) ;
971 Returns a list of nodes of the graph.
973 SUPERV::ListOfNodes Nodes() ;
975 Returns a list of links of the graph.
977 SUPERV::ListOfLinks GLinks() ;
979 Gets IOR of the garph.
984 Returns the number of independent subgraphs
986 long SubGraphsNumber() ;
988 Returns a list of Nodes of a SubGraph.
990 SUPERV::ListOfNodes SubGraphsNodes( in long SubGraphNumber ) ;
992 /*! Forces use of Editor's data model and destroy of Executor
996 /*! Returns the default name of container for C component
998 string DefaultCContainerName();
1000 /*! Returns the default name of container for Python component
1002 string DefaultPythonContainerName();
1004 /*! Returns the last container name associated with the ComponentName component
1006 string ContainerNameForComponent( in string ComponentName );
1014 /*! \brief Interface of a StreamGraph
1016 This interface includes a set of methods used for management of the graphs in %SUPERVISION module.
1019 /////////////////////
1020 interface StreamGraph : Graph {
1021 /////////////////////
1024 Allows to copy one graph into another.
1026 SUPERV::StreamGraph StreamCopy() ;
1027 /*! Creates a "MacroNode" node which corresponds to a StreamGraph with a xml file
1029 SUPERV::StreamGraph StreamMNode( in string aXmlFileName ) ;
1031 /*! Creates a "MacroNode" node which corresponds to a StreamGraph with a Graph
1033 SUPERV::StreamGraph StreamGraphMNode( in StreamGraph aStreamGraph ) ;
1036 Creates a link connecting two ports (%Output %Port and %Input %Port) of the nodes in a Graph
1038 SUPERV::StreamLink StreamLink( in SUPERV::StreamPort OutputPort ,
1039 in SUPERV::StreamPort InputPort ) ;
1042 Returns a list of links of the graph.
1044 SUPERV::ListOfStreamLinks GStreamLinks() ;
1045 boolean SetStreamParams( in long Timeout ,
1046 in SUPERV::KindOfDataStreamTrace DataStreamTrace ,
1047 in double DeltaTime ) ;
1048 void StreamParams( out long Timeout ,
1049 out SUPERV::KindOfDataStreamTrace DataStreamTrace ,
1050 out double DeltaTime ) ;
1053 Returns the number of independent subStreamgraphs
1055 long SubStreamGraphsNumber() ;
1057 Returns a list of Nodes of a SubStreamGraph.
1059 SUPERV::ListOfNodes SubStreamGraphsNodes( in long SubStreamGraphNumber ) ;
1062 Convert a StreamGraph to a FlowGraph.
1064 SUPERV::Graph ToFlowGraph() ;
1067 Merge a StreamGraph.
1069 boolean StreamMerge( in StreamGraph aStreamGraph ) ;
1078 /*! \brief Interface of the %link
1080 This interface contains a set of methods used for representation and management of the links
1081 connecting nodes in a %graph.
1085 interface Link : Engines::Component {
1088 Returns the %Output %Port of the Link
1090 SUPERV::Port OutPort() ;
1093 Returns the %Input %Port of the Link
1095 SUPERV::Port InPort() ;
1098 /*! \name Methods used for representation of links in GUI of %SALOME application :
1102 Returns the number of coordinate points which are included in the link.
1103 \note <BR>Every link can contain a set of coordinate points which constitute it. These points have
1104 index numbers (beginning from 1) and coordinates defining their position in the window. Indexing of
1105 the points starts from input port to output port of the corresponding link.
1109 Adds a coordinate point to the link.
1110 \param index Index of the point.
1111 \param X Coordinates of the point.
1112 \param Y Coordinates of the point.
1114 boolean AddCoord( in long index , in long X , in long Y ) ;
1116 Changes the location of a definite coordinate point of the link.
1117 \param index Index of the point.
1118 \param X Coordinates of the point.
1119 \param Y Coordinates of the point.
1122 boolean ChangeCoord( in long index , in long X , in long Y ) ;
1124 Removes a coordinate point of the link.
1125 \param index Index of the point.
1128 boolean RemoveCoord( in long index ) ;
1131 Sets the location of a coordinate point of the link.
1132 \param index Index of the point.
1133 \param X Coordinates of the point.
1134 \param Y Coordinates of the point.
1137 boolean Coords( in long index , out long X , out long Y ) ;
1142 /*! Checks if the types of Ports that it connects are compatible
1146 /*! Check if the Link equals to the another given Link
1148 boolean IsEqual( in SUPERV::Link aLink );
1157 /*! \brief Interface of the %link
1159 This interface contains a set of methods used for representation and management of the links
1160 connecting nodes in a %graph.
1163 ////////////////////
1164 interface StreamLink : Link {
1165 ////////////////////
1167 Returns the %Output %StreamPort of the StreamLink
1169 SUPERV::StreamPort OutStreamPort() ;
1172 Returns the %Input %StreamPort of the StreamLink
1174 SUPERV::StreamPort InStreamPort() ;
1183 /*! \brief %Value interface
1185 This interface contains a set of methods used for setting initial parameters of the ports
1189 interface Value : Engines::Component {
1192 Converts the given value into a value of string type.
1196 Converts the given value into a value of independant data type.
1200 Returns True if the value represents an IOR.
1204 Gets data type of the component.
1206 string ComponentDataType() ;
1211 /*! \brief %Port interface
1213 This interface contains a set of methods used for management of the ports.
1217 interface Port : Value {
1221 Gives a value to an Input %Port
1222 \param aValue This parameter defines the input value
1224 boolean Input( in SUPERV::Value aValue ) ;
1227 Returns the node of the port
1229 SUPERV::CNode Node() ;
1231 Sets the name of the port.
1235 /* Gets the type of a port.
1236 \return A string defining the type of a port
1241 // Link of an Input Port
1243 Returns the link of an %Input %Port
1245 SUPERV::Link Link() ;
1248 Returns a list of links of an Input %Port of an EndSwitchNode
1250 SUPERV::ListOfLinks Links() ;
1253 Returns True if this port appears to be an %Input %Port of a Node
1258 Returns True if an %Input %Value exists for that %Input %Port (without link)
1260 boolean HasInput() ;
1263 Returns True if the %Port is linked (without value)
1265 // Port with link (without Value)
1266 boolean IsLinked() ;
1269 /*! Returns the type of this port.
1271 SUPERV::KindOfPort Kind() ;
1273 // Port from the service of the node
1275 Returns True if the %Port is a parameter of a service
1278 // Port is a Gate of the node
1280 Returns True if the %Port appears to be a Gate Port of the Node
1283 // Port is a parameter of an InLineNode
1285 Returns True if the %Port appears to be a parameter of an InLine Node.
1287 boolean IsInLine() ;
1289 // Port is a LoopParameter (InitLoop or DoLoop) of an LoopNode
1291 Returns True if the %Port appears to be a Loop Parameter (InitLoop or DoLoop) of a Loop Node
1294 // Port is an output parameter of a SwitchNode connected to an InGate
1296 Returns True if the %Port appears to be a parameter of a switch node
1298 // Port is a parameter of a switch node
1299 boolean IsSwitch() ;
1300 // Port is an Input parameter of a EndSwitchNode connected to several output ports
1302 Returns True if the %Port appears to be an EndSwitch Node connected to several output ports.
1304 boolean IsEndSwitch() ;
1306 boolean IsDataStream() ;
1308 /*! Returns the current state of the port.
1310 SUPERV::GraphState State() ;
1311 /*! Returns True if computation is finished.
1315 /*! deactivate the objref of a Port when its node is destroyed
1321 ////////////////////
1322 interface StreamPort : Port {
1323 ////////////////////
1325 // Link of a StreamPort
1327 Returns the link of a %StreamPort
1329 SUPERV::StreamLink StreamLink() ;
1331 /*! Returns the current Dependency of the DataStreamPort : TimeDependency or IterationDependency
1333 SALOME_ModuleCatalog::DataStreamDependency Dependency() ;
1334 boolean SetDependency( in SALOME_ModuleCatalog::DataStreamDependency aDependency ) ;
1336 /*! Sets or Returns the current kinds of Schema, Interpolation and Extrapolation of the InDataStreamPort
1338 boolean SetParams( in KindOfSchema aKindOfSchema ,
1339 in KindOfInterpolation aKindOfInterpolation ,
1340 in KindOfExtrapolation aKindOfExtrapolation ) ;
1341 boolean Params( out KindOfSchema aKindOfSchema ,
1342 out KindOfInterpolation aKindOfInterpolation ,
1343 out KindOfExtrapolation aKindOfExtrapolation ) ;
1345 /*! Sets or Returns the current number of values ("NIVEAU") of the OutDataStreamPort
1347 boolean SetNumberOfValues( in long aNumberOfValues ) ;
1348 long NumberOfValues() ;