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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
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 , ServiceParameter , GateParameter ,
46 InLineParameter , LoopParameter , SwitchParameter ,
47 EndSwitchParameter , GOTOParameter , DataStreamParameter } ;
50 This enumeration contains a set of elements defining the type of the node.
52 enum KindOfNode { FactoryNode , DataFlowNode , ComputingNode ,
53 InLineNode , LoopNode , EndLoopNode ,
54 SwitchNode , EndSwitchNode , GOTONode , UnknownNode };
57 This struct contains fields defining the date.
68 This enumeration contains a set of elements defining the type of operation, which has been performed
72 enum GraphEvent { UndefinedEvent , NoEvent , NewThreadEvent ,
73 WaitingEvent , ReadyEvent ,
74 RunningEvent , DoneEvent , ErroredEvent ,
75 SuspendEvent , ResumeEvent ,
76 KillEvent , StopEvent ,
77 ReRunEvent , ReStartEvent } ;
79 // UndefinedState : Non existing Node, Port etc...
81 This enumeration contains a set of elements defining the current state of the node(graph).
84 enum GraphState { UndefinedState , NoState , EditingState , SuspendState ,
85 WaitingState , ReadyState , SuspendReadyState ,
87 DoneState , ErrorState ,
88 SuspendDoneState , SuspendErroredState ,
89 KillState , StopState ,
90 ReRunState , ReStartState ,
91 NumberOfGraphStates } ;
93 /*! A sequence of string values.
95 typedef sequence<string> ListOfStrings ;
101 typedef sequence<Link> ListOfLinks ;
105 typedef sequence<Port> ListOfPorts ;
115 typedef sequence<CNode> ListOfCNodes ;
116 typedef sequence<FNode> ListOfFNodes ;
117 typedef sequence<INode> ListOfINodes ;
118 typedef sequence<GNode> ListOfGNodes ;
119 typedef sequence<LNode> ListOfLNodes ;
120 typedef sequence<ELNode> ListOfELNodes ;
121 typedef sequence<SNode> ListOfSNodes ;
122 typedef sequence<ESNode> ListOfESNodes ;
124 This struct contains fields defining different types of nodes.
128 ListOfCNodes CNodes ;
129 ListOfFNodes FNodes ;
130 ListOfINodes INodes ;
131 ListOfGNodes GNodes ;
132 ListOfLNodes LNodes ;
133 ListOfELNodes ELNodes ;
134 ListOfSNodes SNodes ;
135 ListOfESNodes ESNodes ;
140 typedef sequence<Graph> ListOfGraphs ;
142 // ToSuspendState : will be Suspended before running if waiting or
143 // will be Suspended while running or
144 // will be Suspended after run
145 // ToSuspendStartState : will be Suspended at the beginning of execution
146 // ToSuspendDoneState : will be Suspended after run
148 This enumeration contains a set of elements defining the %ControlState of the node.
149 The %ControlState gives a possibility to determine the "control actions" which have been done by
150 the user (Suspend, SuspendDone, Kill, etc...).
152 enum ControlState { VoidState , ToSuspendStartState ,
153 ToSuspendState , ToSuspendDoneState ,
154 ToKillState , ToKillDoneState , ToStopState ,
155 NumberOfControlStates } ;
157 The AutomatonState is an internal state of the automaton of the Executor
158 of the %Supervision %Engine. It is used for inner debugging purposes only.
161 enum AutomatonState { UnKnownState ,
166 SuspendedReadyToResumeState ,
171 SuspendedExecutingState ,
172 ResumedExecutingState ,
173 KilledExecutingState ,
174 StoppedExecutingState ,
175 SuccessedExecutingState ,
176 ErroredExecutingState ,
177 SuspendedSuccessedState ,
178 SuspendedErroredState,
179 ResumedSuccessedState ,
180 ResumedErroredState ,
181 KilledSuccessedState ,
183 StoppedSuccessedState ,
184 StoppedErroredState ,
190 SuspendedSuccessedToReStartState ,
191 SuspendedErroredToReStartState ,
194 NumberOfAutomatonStates
205 /*! \brief interface %SuperG
207 This interface contains a set of methods necessary for management of a %graph.
209 interface SuperG : Engines::Component, SALOMEDS::Driver {
212 Constructs a graph with possibility to read/edit it
213 \param aGraph %aGraphName or %aGraphXmlFile
215 SUPERV::Graph Graph(in string aGraph ) ; // aGraphName or aGraphXmlFile
218 Constructs a read Only graph ( for execution ).
219 \note <BR>In this graph there is also a possibility to update nodes, coordinates of the links,
220 of container names and input data.
221 \param aGraph %aGraphName or %aGraphXmlFile
223 SUPERV::Graph GraphE(in string aGraph ) ; // aGraphName or aGraphXmlFile
226 Creates a value of <b>string</b> type which will be used for <VAR>Input</VAR> method in the interface %Node.
227 \param aString Input value of string type.
229 SUPERV::Value StringValue( in string aString ) ;
231 Creates a value of <b>any</b> type which will be used for <VAR>Input</VAR> method in the interface %Node.
232 \param anAny Input value of any type.
234 SUPERV::Value AnyValue( in any anAny ) ;
236 Gets a graph with a definite %IOR
237 \param ior String parameter defining %IOR of the graph.
239 SUPERV::Graph getGraph(in string ior); // get Graph from is IOR
243 /*! \brief %CNode interface
245 This is a base class of the SUPERVISION module. It contains a set of methods allowing:
247 <li>creating a <b>Computation</b> node and setting its parameters (Name, Author, Comments etc.)
248 <li>checking the current state of the node in the data flow
249 <li>node execution follow-up
250 <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)
255 interface CNode : Engines::Component {
260 Returns the name of the node(graph).
264 Returns the service of this node .
266 SALOME_ModuleCatalog::Service Service() ;
268 Returns the type of the node.
270 SUPERV::KindOfNode Kind() ;
272 Returns the date of creation of the node(graph).
274 SUPERV::SDate CreationDate() ;
276 Returns the date of last update of the node(graph).
278 SUPERV::SDate LastUpdateDate() ;
280 Returns the name of the version of the node(graph).
284 Returns the name of the author of the node(graph).
288 Returns the string containing comments about this node(graph).
294 Sets the name of the node(graph).
295 \param aNewName String value defining the name of the node(graph).
296 \return True if the name has been updated.
298 boolean SetName(in string aNewName ) ;
300 Sets the name of the author. Returns True if it is updated.
301 \param anAuthor String value defining the name of the author.
302 \return True if the name has been updated.
304 boolean SetAuthor(in string anAuthor ) ;
306 Allows to update the comments about this node(graph).
307 \param aComment String value containing a comment to this node(graph).
308 \return True if the old comment has been updated.
310 boolean SetComment(in string aComment ) ;
313 Gets a port of the node.
315 SUPERV::Port Port( in string aParameterName ) ;
317 /*! Creates an Input port in an Inline node.
319 \param aParameterName This value sets the name of the parameter which will be defined in this port.
320 \param aParameterType This value sets the type of the parameter which will be defined in this port.
323 SUPERV::Port InPort( in string aParameterName , in string aParameterType ) ;
324 /*! Creates an Output port in an Inline node.
326 \param aParameterName This value sets the name of the parameter which will be defined in this port.
327 \param aParameterType This value sets the type of the parameter which will be defined in this port.
330 SUPERV::Port OutPort( in string aParameterName , in string aParameterType ) ;
331 /*! Creates an Input port in an Inline node.
333 \param aParameterName This value sets the name of the parameter which will be defined in this port.
334 \param aParameterType This value sets the type of the parameter which will be defined in this port.
337 SUPERV::Port InDataStreamPort( in string aParameterName , in string aParameterType ) ;
338 /*! Creates an Output port in an Inline node.
340 \param aParameterName This value sets the name of the parameter which will be defined in this port.
341 \param aParameterType This value sets the type of the parameter which will be defined in this port.
344 SUPERV::Port OutDataStreamPort( in string aParameterName , in string aParameterType ) ;
346 Enters a value into an Input %Port
348 SUPERV::Port Input( in string InputParameterName ,
352 // Create an Input %Port and an Output Port in LabelNode or ControlNode
353 // boolean BusPort( in string InOutParameterName ,
354 // in string InOutParameterType ,
355 // out SUPERV::Port InputPort ,
356 // out SUPERV::Port OutputPort ) ;
357 // boolean BusPorts( in string InputParameterName ,
358 // in string InputParameterType ,
359 // in string OutputParameterName ,
360 // in string OutputParameterType ,
361 // out SUPERV::Port InputPort ,
362 // out SUPERV::Port OutputPort ) ;
365 Gets a list of ports of the node(graph)
367 SUPERV::ListOfPorts Ports() ;
369 /*! Gets a list of links of a port
371 SUPERV::ListOfLinks Links() ;
374 Returns True if this node is a graph.
375 \note <BR>A node of the graph can also represent in its turn another graph.
379 Returns True if the node appears to be a %computing node.
381 boolean IsComputing() ;
383 Returns True if the node appears to be a %factory node.
385 boolean IsFactory() ;
387 Returns True if the node appears to be an %inline node.
391 Returns True if the node appears to be a %GOTO node.
395 Returns True if the node appears to be a %loop node.
399 Returns True if the node appears to be an %endloop node.
401 boolean IsEndLoop() ;
403 Returns True if the node appears to be a %switch node.
407 Returns True if the node appears to be a %endswitch node.
409 boolean IsEndSwitch() ;
412 Returns the number of subgraphs.
417 Returns the number of threads of the graph.
422 Returns True if the node(graph) is waiting for Data input
424 boolean IsWaiting() ;
427 Returns True if the node(graph) is ready for execution
432 Returns True if the node(graph) is currently running
434 boolean IsRunning() ;
437 Returns True if execution is finished
442 Returns True if execution is suspended
445 boolean IsSuspended() ;
447 Returns the current state of the graph.
449 SUPERV::GraphState State() ;
452 Waits for ready_to_run state, Suspend and return.
456 /*! Waits for running state, Suspend and return.
460 /*! Waits for done state, Suspend and return.
464 /*! Waits for Suspend state and return.
466 boolean SuspendedW() ;
472 If not running : will be killed when ready to run.
473 If running : kills immediatly.
479 Execution will be killed only just after running (only for nodes).
485 If not running : will be stopped when ready to run.
486 If running : stops immediatly
489 /*! Suspends execution.
491 If not running : will be Suspended when ready to run. It is used in step-by-step execution.
492 If running : suspends immediatly
495 /*! Suspends execution only just after running.
497 boolean SuspendDone();
499 /*! Resumes execution.
501 If Suspended : running will be continued.
502 If not Suspended : cancels the current ControlState ( Suspend, Kill, ...)
507 Restarts execution of the node.
511 Restarts execution of the graph beginning from a definite node.
513 boolean ReRunAt( in string aNodeName );
516 Restarts and suspends execution of the node(graph).
520 Restarts and suspends execution of the graph beginning from a definite node.
521 \param aNodeName String parameter defining the name of the node.
523 boolean ReStartAt( in string aNodeName );
526 Returns automaton execution state of the node(graph).
528 SUPERV::AutomatonState AutoState() ;
530 // Control state required : Kill, Suspend, Stop
532 Returns control state of the node(graph).
534 SUPERV::ControlState Control() ;
536 Clears the control state of the node(graph).
538 void ControlClear() ;
540 boolean ContainerKill();
542 Sets the position of the node in the window.
544 void Coords( in long X , in long Y ) ;
546 Returns the position of the node along X-axis.
550 Returns the position of the node along Y-axis.
554 Returns the Cpu used by a node for execution of calculations in seconds.
559 /*! \brief %FNode class
561 This class is necessary for management of factory nodes in a data flow. Besides the inherited methods it contains some methods allowing to define
562 the component from the container, which will be called for execution of the calculation.
565 interface FNode : CNode {
567 /*! Gets the name of the component, which will be called for execution of the calculation.
569 string GetComponentName() ;
570 /*! Gets the name of the interface of the component.
572 string GetInterfaceName() ;
573 /*! Gets the container containing the component, which will be called for execution of the calculation.
575 string GetContainer() ;
576 /*! Sets the name of the component, which will be called for execution of the calculation.
577 \param aComponentName Name of the component.
579 boolean SetComponentName(in string aComponentName ) ;
580 /*! Sets the name of the interface of the component.
581 \param anInterfaceName Name of the interface.
583 boolean SetInterfaceName(in string anInterfaceName ) ;
584 /*! Gets the container containing the component, which will be called for execution of the calculation.
585 \param aContainer Container containing the component.
587 boolean SetContainer(in string aContainer ) ;
589 /*! \brief %INode class
591 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
592 executed for performing calculations, as well as input and output parameters for the node.
596 interface INode : CNode {
599 /*! Sets Python function for the InLine Node.
600 \param FuncName Name of the function
601 \param aPyInitFunction Python initialization function of the InLine Node
603 void SetPyFunction( in string FuncName ,
604 in SUPERV::ListOfStrings aPyInitFunction ) ;
605 /*! Returns Python function of the InLine Node.
607 SUPERV::ListOfStrings PyFunction() ;
608 /*! Returns the name of the Python function of the InLine Node.
610 string PyFuncName() ;
613 /*! \brief %GNode class
615 This class is necessary for management of GOTO/EndLoop/EndSwitch nodes in the dataflow.
616 Besides the inherited methods it contains some methods allowing to define the couple node, which will be linked to this one.
618 // GOTO/EndLoop/EndSwitch Nodes
620 interface GNode : INode {
622 /*! Sets the coupled InLine Node to this GOTO/EndLoop/EndSwitch Node.
624 boolean SetCoupled( in string anInLineNode ) ;
625 /*! Returns the coupled InLine Node to this GOTO/EndLoop/EndSwitch Node.
627 SUPERV::INode Coupled() ;
629 /*! %Loop Nodes class
633 interface LNode : GNode {
635 /*! Sets Python Init function of the Loop Node.
636 \param InitName Name of the Init function
637 \param aPyInitFunction Python Init function
639 void SetPyInit( in string InitName ,
640 in SUPERV::ListOfStrings aPyInitFunction ) ;
641 /*! Returns Python Init function of the Loop Node.
643 SUPERV::ListOfStrings PyInit() ;
644 /*! Returns the name of the Python Init function of the Loop Node.
646 string PyInitName() ;
648 /*! Sets Python More function of the Loop Node.
649 \param MoreName Name of the More function
650 \param aPyMoreFunction Python More function
652 void SetPyMore( in string MoreName ,
653 in SUPERV::ListOfStrings aPyMoreFunction ) ;
654 /*! Returns Python More function of the Loop Node.
656 SUPERV::ListOfStrings PyMore() ;
657 /*! Returns the name of the Python More function of the Loop Node.
659 string PyMoreName() ;
661 /*! Sets Python Next function of the Loop Node.
662 \param NextName Name of the Next function
663 \param aPy NextFunction Python Next function
665 void SetPyNext( in string NextName ,
666 in SUPERV::ListOfStrings aPyNextFunction ) ;
668 /*! Returns Python Next function of the Loop Node.
670 SUPERV::ListOfStrings PyNext() ;
671 /*! Returns the name of the Python Next function of the Loop Node.
673 string PyNextName() ;
679 interface ELNode : GNode {
685 interface SNode : GNode {
691 interface ESNode : GNode {
695 /*! \brief Interface of a graph
697 This interface includes a set of methods used for management of the graphs in %SUPERVISION module.
701 interface Graph : INode {
704 /*! Creates a Computing Node in a Graph.
706 SUPERV::CNode CNode( in SALOME_ModuleCatalog::Service aService ) ;
708 /*! Creates a Factory Node in a Graph.
710 SUPERV::FNode FNode( in string aComponentName ,
711 in string anInterfaceName ,
712 in SALOME_ModuleCatalog::Service aService ) ;
714 /*! Creates an InLine Node in a Graph.
716 SUPERV::INode INode( in string FuncName , in ListOfStrings aPythonFunction ) ;
718 /*! Creates a GOTO Node and links it to the corresponding InLine node.
720 SUPERV::GNode GNode( in string FuncName , in ListOfStrings aPythonFunction ,
721 in string anINode ) ;
723 /*! Creates a Loop Node ("for" or "while" loop) and links it to the corresponding end of loop node.
725 SUPERV::LNode LNode( in string InitName , in ListOfStrings InitFunction ,
726 in string MoreName , in ListOfStrings MoreFunction ,
727 in string NextName , in ListOfStrings NextFunction ,
728 out SUPERV::INode anEndOfLoop ) ;
730 /*! Creates a conditional "if/elseif/else" or "switch" node and the corresponding end node
732 SUPERV::SNode SNode( in string FuncName , in ListOfStrings aPythonFunction ,
733 out SUPERV::INode anEndOfSwitch ) ;
735 /*! Returns an existing node with a definite name.
736 \param aNodeName Name of the Node.
738 SUPERV::CNode Node( in string aNodeName ) ;
740 /*! Creates a CORBA Component Object Reference
742 Engines::Component ComponentRef( in string aComputerContainer ,
743 in string aComponentName ) ;
746 Creates a link connecting two ports (%Output %Port and %Input %Port) of the nodes in a Graph
748 SUPERV::Link Link( in SUPERV::Port OutputPort ,
749 in SUPERV::Port InputPort ) ;
752 Imports a graph into a file with XML format
753 \param anXmlFile String parameter defining the name of the XML file.
754 \return True, if the graph has been successfully imported.
756 boolean Import( in string anXmlFile ) ;
758 Exports a graph from a file with XML format
759 \param anXmlFile String parameter defining the name of the XML file.
760 \return True, if the graph has been successfully imported.
762 boolean Export( in string anXmlFile ) ;
764 Returns True if the graph is read Only.
766 boolean IsReadOnly() ;
769 Starts asynchronous execution of the graph.
774 Assigns to the %Node an %Event and a %State of the %Node, if the Event is
775 available. And returns immediately Nil, NoEvent and NoState if not.
776 Returns false if the graph is finished, suspended, killed or stopped.
777 \param aNode %Node for which this method is called
778 \param anEvent An operation, which has been performed on this node(graph).
779 \param aState Current state of the graph
781 boolean EventNoW( out SUPERV::CNode aNode , out SUPERV::GraphEvent anEvent ,
782 out SUPERV::GraphState aState ) ;
785 Assigns to the %Node an %Event and a %State of the %Node, if the Event is
786 available. Waits if it is not available at the current moment.
787 Returns false if the graph is finished, suspended, killed or stopped.
788 \param aNode %Node for which this method is called
789 \param anEvent An operation, which has been performed on this node(graph).
790 \param aState Current state of the graph
792 boolean Event( out SUPERV::CNode aNode , out SUPERV::GraphEvent anEvent ,
793 out SUPERV::GraphState aState ) ;
795 // Same as Event but execution of the thread is suspended between the
796 // return of EventW and the next call to EventW
798 Assigns to the %Node an %Event and a %State of the %Node, if the Event is
799 available. And returns immediately Nil, NoEvent and NoState if not.
800 Returns false if the graph is finished, suspended, killed or stopped.
801 \note <BR>Execution of the thread is suspended between the return of this
802 method and its next usage.
803 \param aNode %Node for which this method is called
804 \param anEvent An operation, which has been performed on this node(graph).
805 \param aState Current state of the graph
807 boolean EventW( out SUPERV::CNode aNode , out SUPERV::GraphEvent anEvent ,
808 out SUPERV::GraphState aState ) ;
809 /*! \name Methods used for inner debugging purposes of threads management :
815 SUPERV::ListOfNodes LevelNodes( in long aLevel ) ;
821 Returns the number of independent subgraphs
823 long GraphsNumber() ;
825 Returns the number of currently running threads.
829 Returns the number of suspended threads.
831 long SuspendedThreads();
833 Returns True if the graph is valid.
837 Returns True if the graph can be executed.
839 boolean IsExecutable() ;
841 Returns True if the graph represents a working algorithm.
843 boolean IsDataFlow() ;
846 Returns True if the graph is being currently edited.
848 boolean IsEditing() ;
850 Returns True if the graph is being currently executed.
852 boolean IsExecuting() ;
854 long LastLevelDone() ;
857 Launches step-by-step execution of the graph.
858 \note The execution is suspended immediatly after performance of operations of the first node and
859 user can specify the nodes, where execution will be again suspended after its resuming.
863 Allows to copy one graph into another.
865 SUPERV::Graph Copy() ;
869 boolean Merge( in Graph aGraph ) ;
871 Returns a list of nodes of the graph.
873 SUPERV::ListOfNodes Nodes() ;
875 Returns a list of links of the graph.
877 SUPERV::ListOfLinks GLinks() ;
879 Gets IOR of the garph.
884 Returns a list of graphs.
885 \note Not implemented
887 SUPERV::ListOfGraphs Graphs() ;
895 /*! \brief Interface of the %link
897 This interface contains a set of methods used for representation and management of the links
898 connecting nodes in a %graph.
902 interface Link : Engines::Component {
905 Associates an %Output %Port to the Link
907 SUPERV::Port OutPort() ;
910 Associates an %Input %Port to the Link
912 SUPERV::Port InPort() ;
915 /*! \name Methods used for representation of links in GUI of %SALOME application :
919 Returns the number of coordinate points which are included in the link.
920 \note <BR>Every link can contain a set of coordinate points which constitute it. These points have
921 index numbers (beginning from 1) and coordinates defining their position in the window. Indexing of
922 the points starts from input port to output port of the corresponding link.
926 Adds a coordinate point to the link.
927 \param index Index of the point.
928 \param X Coordinates of the point.
929 \param Y Coordinates of the point.
931 boolean AddCoord( in long index , in long X , in long Y ) ;
933 Changes the location of a definite coordinate point of the link.
934 \param index Index of the point.
935 \param X Coordinates of the point.
936 \param Y Coordinates of the point.
939 boolean ChangeCoord( in long index , in long X , in long Y ) ;
941 Removes a coordinate point of the link.
942 \param index Index of the point.
945 boolean RemoveCoord( in long index ) ;
948 Sets the location of a coordinate point of the link.
949 \param index Index of the point.
950 \param X Coordinates of the point.
951 \param Y Coordinates of the point.
954 boolean Coords( in long index , out long X , out long Y ) ;
961 /*! \brief %Value interface
963 This interface contains a set of methods used for setting initial parameters of the ports
967 interface Value : Engines::Component {
970 Converts the given value into a value of string type.
974 Converts the given value into a value of independant data type.
978 Returns True if the value represents an IOR.
982 Gets data type of the component.
984 string ComponentDataType() ;
989 /*! \brief %Port interface
991 This interface contains a set of methods used for management of the ports.
995 interface Port : Value {
999 Gives a value to an Input %Port
1000 \param aValue This parameter defines the input value
1002 boolean Input( in SUPERV::Value aValue ) ;
1005 Returns the node of the port
1007 SUPERV::CNode Node() ;
1009 Sets the name of the port.
1013 /* Gets the type of a port.
1014 \return A string defining the type of a port
1019 // Link of an Input Port
1021 Returns the link of an %Input %Port
1023 SUPERV::Link Link() ;
1026 Returns a list of links of an Input %Port of an EndSwitchNode
1028 SUPERV::ListOfLinks Links() ;
1031 Returns True if this port appears to be an %Input %Port of a Node
1036 Returns True if an %Input %Value exists for that %Input %Port (without link)
1038 boolean HasInput() ;
1041 Returns True if the %Port is linked (without value)
1043 // Port with link (without Value)
1044 boolean IsLinked() ;
1047 /*! Returns the type of this port.
1049 SUPERV::KindOfPort Kind() ;
1051 // SetKind of a Port
1052 /*! Sets the type of this port.
1054 void SetKind( in SUPERV::KindOfPort aKindOfPort ) ;
1056 // Port from the service of the node
1058 Returns True if the %Port is a parameter of a service
1061 // Port is a Gate of the node
1063 Returns True if the %Port appears to be a Gate Port of the Node
1066 // Port is a parameter of an InLineNode
1068 Returns True if the %Port appears to be a parameter of an InLine Node.
1070 boolean IsInLine() ;
1072 // Port is a LoopParameter (InitLoop or DoLoop) of an LoopNode
1074 Returns True if the %Port appears to be a Loop Parameter (InitLoop or DoLoop) of a Loop Node
1077 // Port is an output parameter of a SwitchNode connected to an InGate
1079 Returns True if the %Port appears to be a parameter of a switch node
1081 // Port is a parameter of a switch node
1082 boolean IsSwitch() ;
1083 // Port is an Input parameter of a EndSwitchNode connected to several output ports
1085 Returns True if the %Port appears to be an EndSwitch Node connected to several output ports.
1087 boolean IsEndSwitch() ;
1089 boolean IsDataStream() ;
1091 /*! Returns the current state of the graph.
1093 SUPERV::GraphState State() ;
1094 /*! Returns True if calculation is finished.