<td bgcolor= "lightgreen"><div align="center"><b>long Y ( )</b></div></td>
<td bgcolor= "lightgreen"><div align="center"><b>return_value = Y ( )</b></div></td>
</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long CpuUsed ( )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CpuUsed ( )</b></div></td>
+</tr>
</table><br>
<table width="100%" BORDER>
<tr bgcolor="#FFFFCC">
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
-PROJECT_NAME = "SALOME PRO - SUPERV - v.1.2"
+PROJECT_NAME = "SALOME - SUPERV - v.1.2"
PROJECT_NUMBER = id#1.0
OUTPUT_DIRECTORY = ../
OUTPUT_LANGUAGE = English
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
-BINARY_TOC = NO
-TOC_EXPAND = NO
-DISABLE_INDEX = NO
+BINARY_TOC = YES
+TOC_EXPAND = YES
+DISABLE_INDEX = YES
ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = NO
+GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
+++ /dev/null
-H1 { text-align: center; }
-CAPTION { font-weight: bold }
-A.qindex {}
-A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
-A:hover { text-decoration: none; background-color: lightblue }
-DL.el { margin-left: -1cm }
-DIV.fragment { width: 100%; border: none; background-color: #CCCCCC }
-DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: lightblue; font-weight: bold; }
-TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; }
-TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: url(sources/bg_salomepro.gif) }
-TD.indexkey {
- background-color: #CCCCCC;
- font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-TD.indexvalue {
- background-color: #CCCCCC;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-span.keyword { color: #008000 }
-span.keywordtype { color: #604020 }
-span.keywordflow { color: #e08000 }
-span.comment { color: #800000 }
-span.preprocessor { color: #806020 }
-span.stringliteral { color: #002080 }
-span.charliteral { color: #008080 }
--- /dev/null
+H1 { text-align: center; }
+CAPTION { font-weight: bold }
+A.qindex {}
+A.qindexRef {}
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code { text-decoration: none; font-weight: normal; color: #4444ee }
+A.codeRef { font-weight: normal; color: #4444ee }
+A:hover { text-decoration: none; background-color: lightblue }
+DL.el { margin-left: -1cm }
+DIV.fragment { width: 100%; border: none; background-color: #CCCCCC }
+DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: lightblue; font-weight: bold; }
+TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; }
+TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
+BODY { background: url(sources/bg_salome.gif) }
+TD.indexkey {
+ background-color: #CCCCCC;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+TD.indexvalue {
+ background-color: #CCCCCC;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+span.keyword { color: #008000 }
+span.keywordtype { color: #604020 }
+span.keywordflow { color: #e08000 }
+span.comment { color: #800000 }
+span.preprocessor { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral { color: #008080 }
--- /dev/null
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+ \r
+ <meta http-equiv="Content-Type"\r
+ content="text/html; charset=iso-8859-1">\r
+ \r
+ <meta name="GENERATOR"\r
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+ <title>Main Page</title>\r
+ \r
+ <link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+ <body>\r
+ \r
+<center>\r
+<table width="96%">\r
+ <tbody>\r
+ <tr>\r
+ <td><a href="http://www.opencascade.com"><img\r
+ src="sources/logocorp.gif" border="0" height="46" width="122">\r
+ </a></td>\r
+ <td> \r
+ <div align="right"><a href="http://www.opencascade.org/SALOME/"><img\r
+ src="sources/application.gif" border="0" height="46" width="108">\r
+ </a></div>\r
+ </td>\r
+ </tr>\r
+ \r
+ </tbody>\r
+</table>\r
+</center>\r
+ \r
+<h1><a name="page2">Examples</a> </h1>\r
+ \r
+<h3><big><i><b>Interfaces:</b></i></big></h3>\r
+<br>\r
+<a href="#Graph"><big>SUPERV::Graph</big></a><br>\r
+<a href="#CNode"><big>SUPERV::CNode</big></a><br>\r
+<a href="#FNode"><big>SUPERV::FNode</big></a><big><br>\r
+<a href="#INode">SUPERV::INode</a></big><br>\r
+<a href="#LNode"><big>SUPERV::LNode</big></a><br>\r
+<a href="#Port"><big>SUPERV::Port</big></a><br>\r
+<a href="#Link"><big>SUPERV::Link</big></a><br>\r
+<b><br>\r
+<br>\r
+<br>\r
+</b><br>\r
+<div align="center"><big><big><b><u><br>\r
+</u></b></big></big></div>\r
+<div align="center"><big><u><b><big><a name="Graph"></a>SUPERV::Graph<br>\r
+</big></b></u></big><br>\r
+<div align="left"><big><b><a href="#CNode">CNode</a> CNode( in SALOME_ModuleCatalog::Service\r
+<i>aService</i> ) </b></big><br>\r
+<br>\r
+<u><i><big>Create a Computing Node in a Graph</big></i></u><br>\r
+<br>\r
+<a name="CreateCNode"></a>GraphEssai = Graph( 'GraphEssai' )<br>\r
+<br>\r
+AddAndCompare_ServiceinParameter = []<br>\r
+AddAndCompare_ServiceinParameter.append( SALOME_ModuleCatalog.ServicesParameter(\r
+'Adder' , 'Adder' ) )<br>\r
+AddAndCompare_ServiceinParameter.append( SALOME_ModuleCatalog.ServicesParameter(\r
+'double' , 'x' ) )<br>\r
+AddAndCompare_ServiceinParameter.append( SALOME_ModuleCatalog.ServicesParameter(\r
+'double' , 'y' ) )<br>\r
+AddAndCompare_ServiceinParameter.append( SALOME_ModuleCatalog.ServicesParameter(\r
+'Adder' , 'anOtherAdder' ) )<br>\r
+<br>\r
+AddAndCompare_ServiceoutParameter = []<br>\r
+AddAndCompare_ServiceoutParameter.append( SALOME_ModuleCatalog.ServicesParameter(\r
+'double' , 'FuncValue' ) )<br>\r
+AddAndCompare_ServiceoutParameter.append( SALOME_ModuleCatalog.ServicesParameter(\r
+'double' , 'z' ) )<br>\r
+AddAndCompare_Service = SALOME_ModuleCatalog.Service( 'AddAndCompare' , AddAndCompare_ServiceinParameter\r
+, AddAndCompare_ServiceoutParameter , 0 )<br>\r
+<br>\r
+AddAndCompare = GraphEssai.CNode( AddAndCompare_Service )<br>\r
+<br>\r
+<br>\r
+<br>\r
+</div>\r
+<div align="left"><big><b><a href="#FNode">FNode</a> FNode( in string <i>aComponentName</i>, \r
+in string <i>anInterfaceName</i>, in SALOME_ModuleCatalog::Service\r
+<i>aService</i> ) </b></big><br>\r
+<br>\r
+<u><i><big>Create a Factory Node in a Graph</big></i></u><br>\r
+<br>\r
+<a name="CreateFNode"></a>GraphEssai = Graph( 'GraphEssai' )<br>\r
+Add = GraphEssai.FNode( 'AddComponent' , 'AddComponent' , 'Add' )<br>\r
+<br>\r
+<br>\r
+<br>\r
+<b><big>INode INode( in string <i>FuncName</i>, in ListOfStrings <i>aPythonFunction</i>\r
+)</big></b><br>\r
+<br>\r
+<u><i><big>Create an InLine Node in a Graph</big></i></u><br>\r
+<br>\r
+<a name="CreateINode"></a>GraphEssai = Graph( 'GraphEssai' )<br>\r
+PyAdd = []<br>\r
+PyAdd.append( 'from time import * ' )<br>\r
+PyAdd.append( 'def Add(a,b) : \r
+' )<br>\r
+PyAdd.append( ' print "Add will wait 5 seconds" \r
+' )<br>\r
+PyAdd.append( ' d = dir() \r
+' )<br>\r
+PyAdd.append( ' print "Add",d \r
+' )<br>\r
+PyAdd.append( ' d = dir(sleep) \r
+' )<br>\r
+PyAdd.append( ' print "Add",d \r
+' )<br>\r
+PyAdd.append( ' sleep(5) \r
+' )<br>\r
+PyAdd.append( ' print "Add waited" \r
+' )<br>\r
+PyAdd.append( ' n = 0 ' )<br>\r
+PyAdd.append( ' while n < 10000 : \r
+' )<br>\r
+PyAdd.append( ' i = 0 \r
+' )<br>\r
+PyAdd.append( ' s = 0 \r
+' )<br>\r
+PyAdd.append( ' while i <= b\r
+: ' )<br>\r
+PyAdd.append( ' \r
+s = s + i ' )<br>\r
+PyAdd.append( ' \r
+i = i + 1 ' )<br>\r
+PyAdd.append( ' n = n + 1 \r
+' )<br>\r
+PyAdd.append( ' return s \r
+' )<br>\r
+PyAdd.append( '' )<br>\r
+Add = GraphEssai.INode( 'Add' , PyAdd )<br>\r
+<br>\r
+<br>\r
+<br>\r
+<b><big>GNode GNode( in string <i>FuncName</i> , in ListOfStrings <i>aPythonFunction</i>,\r
+in string <i>anINode</i> )</big></b><br>\r
+<br>\r
+<u><i><big>Create a GOTO node and link to the corresponding InLine node</big></i></u><br>\r
+<br>\r
+GraphEssai = Graph( 'GraphEssai' )<br>\r
+Pylabel_test = []<br>\r
+Pylabel_test.append( 'def label_test( ValEven , ValOne , NB , KB ):' )<br>\r
+Pylabel_test.append( ' print "label_begin",ValEven,ValOne,NB,KB'\r
+)<br>\r
+Pylabel_test.append( ' return ValEven,ValOne,NB,KB' )<br>\r
+label_test = GraphEssai.INode( 'label_test' , Pylabel_test )<br>\r
+Pycontrol = []<br>\r
+Pycontrol.append( 'def control_m3p1( N , K ):' )<br>\r
+Pycontrol.append( ' return 0,1,N,K' )<br>\r
+control = GraphEssai.GNode( 'control_m3p1' , Pycontrol , 'label_test' )<br>\r
+<br>\r
+<br>\r
+<br>\r
+<big><b>LNode LNode( in string <i>InitName</i> , in ListOfStrings <i>InitFunction</i>\r
+, in string <i>MoreName</i> , in ListOfStrings <i>MoreFunction</i> , in string\r
+<i>NextName</i> , in ListOfStrings <i>NextFunction</i> , out INode <i>anEndOfLoop</i>\r
+)</b></big><br>\r
+<br>\r
+<u><i><big>Create a "for" or "while" node and the corresponding end of loop\r
+node</big></i></u><br>\r
+<br>\r
+<a name="CreateLNode"></a>GraphEssai = Graph( 'GraphEssai' )<br>\r
+<br>\r
+PyforN = []<br>\r
+PyforN.append( 'def InitN( NN , K , SyrComponent , min , max ) :' )<br>\r
+PyforN.append( ' N = max' )<br>\r
+PyforN.append( ' if min > 0 :' )<br>\r
+PyforN.append( ' if max >= min\r
+:' )<br>\r
+PyforN.append( ' \r
+N = min' )<br>\r
+PyforN.append( ' return N,K,SyrComponent,min,max' )<br>\r
+<br>\r
+PyMoreforN = []<br>\r
+PyMoreforN.append( 'def MoreN( NN , KK , SyrComponent , min , max ) :' )<br>\r
+PyMoreforN.append( ' N = 0' )<br>\r
+PyMoreforN.append( ' OutLoop = 0' )<br>\r
+PyMoreforN.append( ' if max > NN :' )<br>\r
+PyMoreforN.append( ' N = NN' )<br>\r
+PyMoreforN.append( ' OutLoop =\r
+1' )<br>\r
+PyMoreforN.append( ' return OutLoop,N,0,SyrComponent,min,max'\r
+)<br>\r
+<br>\r
+PyNextforN = []<br>\r
+PyNextforN.append( 'def NextN( NN , KK , SyrComponent , min , max ) :' )<br>\r
+PyNextforN.append( ' N = NN + 1' )<br>\r
+PyNextforN.append( ' K = KK' )<br>\r
+PyNextforN.append( ' return N,K,SyrComponent,min,max' )<br>\r
+<br>\r
+forN,endforN = GraphEssai.LNode( 'InitN' , PyforN , 'MoreN' , PyMoreforN\r
+, 'NextN' , PyNextforN )<br>\r
+<br>\r
+<br>\r
+<b><big>SNode SNode( in string <i>FuncName,</i> in ListOfStrings <i>aPythonFunction,</i>\r
+out INode <i>anEndOfSwitch</i> )</big></b><br>\r
+<br>\r
+<u><i><big>Create a "if / elseif / else" or "switch" node and the corresponding\r
+end node</big></i></u><br>\r
+<br>\r
+GraphEssai = Graph( 'GraphEssai' )<br>\r
+ <br>\r
+PyifNotEven = []<br>\r
+PyifNotEven.append( 'import SyrComponent_idl' )<br>\r
+PyifNotEven.append( 'def ifNotEven( SyrComponent , N , K ) :' )<br>\r
+PyifNotEven.append( ' Even = SyrComponent.C_ISEVEN( N )'\r
+)<br>\r
+PyifNotEven.append( ' Odd = 1 - Even' )<br>\r
+PyifNotEven.append( ' return Odd,Even,SyrComponent,N,K'\r
+)<br>\r
+<br>\r
+ifNotEven,endifNotEven = GraphEssai.SNode( 'ifNotEven' , PyifNotEven )<br>\r
+<br>\r
+<br>\r
+<big><b>Link Link( in Port <i>OutputPort</i> , in Port <i>InputPort</i>\r
+)</b></big><br>\r
+<br>\r
+<u><i><big>Creates a link connecting two ports of the nodes in a Graph</big></i></u><br>\r
+<br>\r
+GraphEssai = Graph( 'GraphEssai' )<br>\r
+Add = GraphEssai.FNode( 'AddComponent' , 'AddComponent' , 'Add' )<br>\r
+Mul = GraphEssai.FNode( 'MulComponent' , 'MulComponent' , 'Mul' )<br>\r
+Link = GraphEssai.Link( Add.Port( 'FuncValue' ), Mul.Port( 'x' ) )<br>\r
+<br>\r
+<br>\r
+<b><big>boolean Run()</big></b><br>\r
+<br>\r
+<u><i><big>Starts asynchronous execution of the graph</big></i></u><br>\r
+<br>\r
+...<br>\r
+GraphEssai.Run()<br>\r
+<br>\r
+<br>\r
+<b><big>boolean Event( out CNode <i>aNode</i> , out GraphEvent <i>anEvent</i>\r
+, out GraphState <i>aState</i> )</big></b><br>\r
+<br>\r
+<u><i><big>Runs Graph and prints information about Graph performance</big></i></u><br>\r
+<br>\r
+...<br>\r
+<a name="RunandWait"></a>GraphEssai.Run()<br>\r
+aStatus,aNode,anEvent,aState = GraphEssai.Event()<br>\r
+while aStatus :<br>\r
+ print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState<br>\r
+ aStatus,aNode,anEvent,aState = GraphEssai.Event()<br>\r
+<br>\r
+<br>\r
+<br>\r
+<br>\r
+<div align="center"><big><b><big><a name="CNode"></a>SUPERV::CNode</big></b></big><br>\r
+</div>\r
+<br>\r
+<big><b>string Name() <br>\r
+string Author()<br>\r
+string Comment()<br>\r
+boolean SetName(in string <i>aNewName</i> ) <br>\r
+boolean SetAuthor(in string <i>anAuthor</i> ) <br>\r
+boolean SetComment(in string <i>aComment</i> ) <br>\r
+<br>\r
+</b><u><i>Get / Set methods for Name, Author and Comment strings of the node.</i></u><br>\r
+<b><br>\r
+</b><a href="#CreateCNode"><small>#Create CNode</small></a><b><br>\r
+</b></big>AddAndCompare.SetName( 'AddAndCompare' )<br>\r
+AddAndCompare.SetAuthor( 'NoBody' )<br>\r
+AddAndCompare.SetComment( 'Python function' )<br>\r
+print "Name:", AddAndCompare.Name(), " Author:", AddAndCompare.Author(),\r
+" Comment:", AddAndCompare.Comment()<br>\r
+<br>\r
+<br>\r
+<br>\r
+<big><b>Port Port( in string <i>aParameterName</i> )</b></big><br>\r
+<br>\r
+<big><u><i>Returns Port instance from created node</i></u></big><br>\r
+<br>\r
+<a href="#CreateFNode">#Create FNode</a><br>\r
+Addz = Add.Port('z')<br>\r
+<br>\r
+<br>\r
+<big><b>Port Input( in string <i>InputParameterName</i> , in Value\r
+<i>aValue</i> ) </b></big><br>\r
+<br>\r
+<i><u><big>Sets value into Port by its name and returs correspondent port\r
+instance</big></u></i><br>\r
+<br>\r
+<a href="#CreateFNode">#Create FNode</a><br>\r
+Addx = Add.Input("x",3.)<br>\r
+<br>\r
+<br>\r
+<br>\r
+<b><big>void Coords( in long <i>X</i> , in long <i>Y</i> )<br>\r
+</big><big>long X()</big></b><br>\r
+<b><big>long Y()</big></b><br>\r
+<br>\r
+<big><u><i>Methods to sets position of the node and getting current coordinates</i></u></big><br>\r
+<br>\r
+<a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateFNode">#Create\r
+FNode</a><br>\r
+Add.Coords( 1 , 152 )<br>\r
+print "X=", Add.X(), " Y=", Add.Y()<br>\r
+<br>\r
+<br>\r
+<b><big>long CpuUsed()</big></b><br>\r
+<br>\r
+<u><i><big>Returns the Cpu used by a node in seconds</big></i></u><br>\r
+<br>\r
+<a href="#RunandWait">#Run Graph and wait for its finish</a><br>\r
+print "CPU used: ", Add.CpuUsed(), " sec"<br>\r
+<br>\r
+<br>\r
+<br>\r
+<br>\r
+<br>\r
+<div align="center"><big><b><big><a name="FNode"></a>SUPERV::FNode</big><br>\r
+</b></big></div>\r
+<br>\r
+<b><big>string GetContainer() <br>\r
+boolean SetContainer(in string <i>aContainer</i> ) <br>\r
+</big></b><br>\r
+<big><u><i>Get / Set method for container name</i></u></big><br>\r
+<br>\r
+<a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateFNode">#Create\r
+FNode</a><br>\r
+Add.SetContainer( 'localhost/FactoryServer' )<br>\r
+print "Container: ", Add.GetContainer()<br>\r
+<br>\r
+<br>\r
+<br>\r
+<div align="center"><big><b><big><a name="INode"></a>SUPERV::INode</big></b></big><br>\r
+</div>\r
+<br>\r
+<br>\r
+<big><b>void SetPyFunction( in string <i>FuncName</i> , in ListOfStrings\r
+<i>aPyInitFunction</i> )</b></big><br>\r
+<br>\r
+<u><i><big>Replaces Python function of inline node by new one</big></i></u><br>\r
+<br>\r
+<a href="#CreateINode">#Create INode</a><br>\r
+PyIsOdd = []<br>\r
+PyIsOdd.append( 'def IsOdd(a) : ' )<br>\r
+PyIsOdd.append( ' print a,"IsOdd" ' )<br>\r
+PyIsOdd.append( ' return a ' )<br>\r
+Add.SetPyFunction("IsOdd", PyIsOdd)<br>\r
+<br>\r
+<br>\r
+<b><big>string PyFuncName()</big></b><br>\r
+<br>\r
+<div align="left"><u><i><big>Returns Name of the Python function</big></i></u><br>\r
+<br>\r
+<a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateINode">#Create\r
+INode</a><br>\r
+print "Name:", Add.PyFuncName()<br>\r
+<br>\r
+<br>\r
+ </div>\r
+ <b><big>ListOfStrings PyFunction()<br>\r
+<br>\r
+</big></b><u><i><big>Returns Python function as a list of strings</big></i></u><br>\r
+<br>\r
+<a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateINode">#Create\r
+INode</a><br>\r
+PyFunc = Add.PyFunction()<br>\r
+<br>\r
+<br>\r
+<b><big>SUPERV::Port InPort( in string <i>aParameterName</i> , in string\r
+<i>aParameterType</i> ) <br>\r
+SUPERV::Port OutPort( in string <i>aParameterName</i> , in string <i>aParameterType</i>\r
+) <br>\r
+</big></b><br>\r
+<u><i><big>Creation of In and Out ports of Inline Node</big></i></u><br>\r
+<br>\r
+<a name="CreatePorts"></a><a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateINode">#Create\r
+INode</a><br>\r
+Add.InPort('a', 'long')<br>\r
+<div align="left">Add.InPort('b', 'long')<br>\r
+ \r
+<div align="left">Add.OutPort('s', 'long')<br>\r
+ <br>\r
+ </div>\r
+ <br>\r
+ </div>\r
+ <br>\r
+<div align="center"><big><b><big><a name="LNode"></a>SUPERV::LNode</big></b></big><br>\r
+</div>\r
+<br>\r
+<br>\r
+<b><big>void SetPyInit( in string <i>InitName</i> , in ListOfStrings\r
+<i>aPyInitFunction</i> )</big></b><br>\r
+<b><big>void SetPyMore( in string <i>MoreName</i> , in ListOfStrings\r
+<i>aPyMoreFunction</i> )<br>\r
+void SetPyNext( in string <i>NextName</i> , in ListOfStrings <i>aPyNextFunction</i>\r
+)<br>\r
+</big></b><br>\r
+<i><u><big>Sets (replaces) Python fonction of according clause (Init, More,\r
+Next) in Loop Node</big></u></i><br>\r
+<br>\r
+<a href="#CreateLNode">#Create Loop Node</a><br>\r
+Pyfori = []<br>\r
+Pyfori.append( 'def Initfori( ii , K ) :' )<br>\r
+Pyfori.append( ' return 1,0,K' )<br>\r
+PyMorefori = []<br>\r
+PyMorefori.append( 'def Morefori( ii , K ) :' )<br>\r
+PyMorefori.append( ' OutLoop = 0' )<br>\r
+PyMorefori.append( ' if 2 > ii :' )<br>\r
+PyMorefori.append( ' OutLoop =\r
+1' )<br>\r
+PyMorefori.append( ' return OutLoop,ii,K' )<br>\r
+PyNextfori = []<br>\r
+PyNextfori.append( 'def Nextfori( ii , K ) :' )<br>\r
+PyNextfori.append( ' ii = ii + 1' )<br>\r
+PyNextfori.append( ' return ii,K' )<br>\r
+forN.SetPyInit('Initfori', Pyfori)<br>\r
+<div align="left">forN.SetPyMore('Morefori', PyMorefori)<br>\r
+ \r
+<div align="left">forN.SetPyNext('Nextfori', PyNextfori)<br>\r
+ <br>\r
+<br>\r
+<br>\r
+<b><big>string PyInitName() <br>\r
+</big></b></div>\r
+<b><big>string PyMoreName()<br>\r
+string PyNextName()<br>\r
+</big></b> </div>\r
+ <b><big><br>\r
+</big></b><u><i><big>Returns Python function name of according clause</big></i></u><br>\r
+<br>\r
+<a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateLNode">#Create\r
+Loop Node</a><br>\r
+print "Init Name:", forN.PyInitName()<br>\r
+print "More Name:", forN.PyMoreName()<br>\r
+print "Next Name:", forN.PyNextName()<br>\r
+<br>\r
+<br>\r
+<b><big>ListOfStrings PyInit()<br>\r
+ListOfStrings PyMore()<br>\r
+ListOfStrings PyNext()<br>\r
+</big></b><br>\r
+<u><i><big>Returns Python function as a list of strings</big></i><i><big>\r
+from according clause</big></i></u><br>\r
+<br>\r
+<a\r
+ href="file:///vsv/salome/build/doc/html/html/examples_SUPERV.html#CreateLNode">#Create\r
+Loop Node</a><br>\r
+InitFunc = forN.PyInit()<br>\r
+<div align="left">MoreFunc = forN.PyMoret()<br>\r
+ \r
+<div align="left">NextFunc = forN.PyNext()<br>\r
+ <br>\r
+ <br>\r
+ </div>\r
+ <br>\r
+ \r
+<div align="center"><big><b><big><a name="Port"></a>SUPERV::Port</big></b></big><br>\r
+</div>\r
+<br>\r
+<b><big>boolean Input( in Value <i>aValue</i> )</big></b><br>\r
+<br>\r
+<u><i><big>Sets value to the input port instance</big></i></u><br>\r
+<br>\r
+<a href="#CreatePorts">#CreatePorts</a><br>\r
+aPort = Add.Port('a')<br>\r
+aPort.Input(10)<br>\r
+<br>\r
+<br>\r
+<b><big>CNode Node()</big></b><br>\r
+<br>\r
+<u><i><big>Returns Node - owner of the port</big></i></u><br>\r
+<br>\r
+Add = aPort.Node()<br>\r
+<br>\r
+<br>\r
+<b><big>string Name()</big></b><br>\r
+<br>\r
+<u><i><big>Returns Name of the Port</big></i></u><br>\r
+<br>\r
+print "Port Name:", aPort.Name()<br>\r
+<br>\r
+<br>\r
+<br>\r
+ \r
+ </div>\r
+</div>\r
+ </div>\r
+</div>\r
+</body>\r
+</html>\r
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+ <title>Main Page</title>\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+<body>\r
+ \r
+<center>\r
+ <table WIDTH="96%" >\r
+ <tr> \r
+ <td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+ <td> \r
+ <div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+ </td>\r
+ </tr>\r
+ </table>\r
+</center>\r
+<h1><a name="page2">General overview</a> </h1>\r
+<a name="cont"></a><h2>Table of contents </h2>\r
+<b><i>\r
+<ul>\r
+ <li><a href="#1">1. Introduction</a></li>\r
+ <li><a href="#2">2. Definitions </a></li>\r
+ <ul>\r
+ <li><a href="#2_1">2.1 Computing scheme of type DataFlow</a></li>\r
+ <li><a href="#2_2">2.2 Types of nodes </a></li>\r
+ <ul>\r
+ <li><a href="#2_2_1">2.2.1 Computation node </a></li>\r
+ <li><a href="#2_2_2">2.2.2 Loop node </a></li>\r
+ <li><a href="#2_2_3">2.2.3 Switch node </a></li>\r
+ <li><a href="#2_2_4">2.2.4 GOTO node </a></li>\r
+ </ul>\r
+ </ul>\r
+ <li><a href="#3">3. Services and features of the SUPERVISION component</a></li>\r
+ <ul>\r
+ <li><a href="#3_1">3.1 CNode class</a></li>\r
+ <li><a href="#3_2">3.2 FNode class </a></li>\r
+ <li><a href="#3_3">3.3 INode class </a></li>\r
+ <li><a href="#3_4">3.4 GNode class </a></li>\r
+ <li><a href="#3_5">3.5 LNode class </a></li>\r
+ <li><a href="#3_6">3.6 ELNode class </a></li>\r
+ <li><a href="#3_7">3.7 SNode class </a></li>\r
+ <li><a href="#3_8">3.8 ESNode class </a></li>\r
+ <li><a href="#3_9">3.9 Graph class </a></li>\r
+ <li><a href="#3_10">3.10 Link class </a></li>\r
+ <li><a href="#3_11">3.11 Value class </a></li>\r
+ <li><a href="#3_12">3.12 Port class </a></li>\r
+ <li><a href="#3_13">3.13 SuperG class </a></li>\r
+ </ul>\r
+</ul>\r
+</i> </b> <br>\r
+<a name="1"></a><h2>1. Introduction </h2>\r
+<p>The Supervision module of the SALOME platform allows to define and execute \r
+ a chain of distributed numeric components, as well as to control the progress \r
+ of this chain. The various calculations to be chained and the exchanged data \r
+ are specified in a computing scheme, which can be of two types : </p>\r
+<ul>\r
+ <li>Data flow computing schemes. <br>\r
+ These schemes are represented by graphs without loops, conditional branches \r
+ or any operation of control. The execution of theses schemes can be automatically \r
+ optimized by the supervision engine by detecting and executing simultaneously \r
+ independant branches and by managing in a optimal way the life cycle of components.</li>\r
+ <br>\r
+ <br>\r
+ <li>Script type computing schemes.<br>\r
+ These schemes allow to define chainings or complex couplings of components \r
+ using loops, conditional execution and control flow breaks by leaning on a \r
+ scripting language (parametric studies, multi-physical coupling). Contrary \r
+ in data flows, the specification of these schemes must define the sequence \r
+ of execution of components. Notably, the simultaneous execution of components \r
+ should be explicitly defined.</li>\r
+</ul>\r
+<p>Of simple conception, the data flow schemes can be built in a graphic way and \r
+ validated automatically by the supervision engine.</p>\r
+<p>The script type computing schemes, which offer the possibility of building \r
+ complex chains, should be conceived by warned users (developers) who master \r
+ the syntax and the use of the scripting language.</p>\r
+<p>Once specified and validated, certain computing schemes defined by scripts \r
+ can be made customizable (input and output data, parameter sets) and integrated \r
+ into the platform to form components. These components can be used to build \r
+ schemes of higher level. </p>\r
+<p>Besides the definition of computing schemes, the Supervision module must also \r
+ take care of their execution and follow-up (complete execution or step by step) \r
+ : </p>\r
+<ul>\r
+ <li> Asking of instanciation of the components (kernel calls) and data (data \r
+ servers calls),</li>\r
+ <li>Launching computations specified in the computing scheme, </li>\r
+ <li>Managing the events emitted or received by the supervision engine and the \r
+ component,</li>\r
+ <li> Recovering the results of computations and demand of filing for the data \r
+ service. </li>\r
+</ul>\r
+<p>The user can visualize the progress of the scheme and the exchanged data, be \r
+ informed about the evolution of the execution of a component (errors, warning, \r
+ tracks, ...), to intervene by stopping, pausing or by resuming the execution \r
+ of the scheme or a particular component. </p>\r
+ <i><a href="#cont">Back to the contents</a></i>\r
+<a name="2"></a><h2>2. Defintions </h2>\r
+<a name="2_1"></a><h3>2.1 Computing scheme of type DataFlow</h3>\r
+<p>The computing schemes of type dataflow, feasible by the Supervision module, \r
+ are directed acyclic graphs, described by a set of nodes and of directed links. \r
+ A node represents a service of an instance of a computation component.</p>\r
+<p>A node is provided with input port(s) and/or output port(s). The input port(s) \r
+ (resp. output port(s)) represent the input argument(s) (resp. output argument(s)) \r
+ of the service. Certain services can possibly require the use of parameters \r
+ which will be grouped together in configuration files (defined in the Data/Properties \r
+ module, and recorded in the study).</p>\r
+<p>The computing schemes of type data flow do not contain either loops, conditional \r
+ branches or any operation of control. They can thus be built easily in a graphic \r
+ way, by connecting output ports to input ports of nodes. Although the graphic \r
+ construction is the simplest way, these computing schemes can also be defined \r
+ in the language of script.</p>\r
+<p>A node represents a service (function, method) of an instance of a component. \r
+ If the component possesses a unique service (\93Run\94 method), one will omit the \r
+ term \93service of\94. Various services of the same component can be used in various \r
+ nodes of the graph, or the same service can be used several times.</p>\r
+<a name="2_2"></a><h3>2.2 Types of nodes </h3>\r
+<p>In the SUPERVISION module there are the following types of nodes: </p>\r
+<b>\r
+<ul>\r
+ <li>computation node,</li>\r
+ <li> loop node,</li>\r
+ <li> switch node,</li>\r
+ <li> GOTO node. </li>\r
+</ul>\r
+</b> \r
+<p>The dependance between different types of nodes is shown on the following picture: \r
+</p>\r
+<div align="center"><img src="nodestypes.jpg"> </div>\r
+<a name="2_2_1"></a><h4>2.2.1 Computation node </h4>\r
+<p>This node represents a computation algorithm in the graph structure. Nodes \r
+ of such type can present a service registered in the Component Catalog (<b>Factory \r
+ Node</b>) or an external service defined in Python script by user (<b>InLine node</b>). \r
+ Python function of InLine node can be edited in Supervision Graph edit mode. \r
+</p>\r
+<a name="2_2_2"></a><h4><b>2.2.2 Loop node</b> </h4>\r
+<p>Loop node is a kind of Control nodes. In fact two nodes represent Loop: \r
+<b>start</b> loop and <b>end</b> loop nodes. Nodes of such type are always InLine nodes. \r
+User have to supply this type of node by service, which will check conditions of end of loop. </p>\r
+\r
+<p>With that kind of nodes may be defined all kinds of loops:<br><br>\r
+\r
+\93for( initial condition(s) ; end condition(s) ; end loop code )\94 or <br><br>\r
+\r
+\93while( end condition )\94<br><br>\r
+\r
+etc\85</p>\r
+<p>Here you can see a simple example of Python functions set in a Loop node:</p>\r
+<pre><code>\r
+def Init(Index,Min,Max,Incr) : \r
+\r
+ if Min <= Max : \r
+\r
+ Index = Min \r
+\r
+ else : \r
+\r
+ Index = Max \r
+\r
+ return Index,Min,Max,Incr \r
+\r
+ \r
+\r
+def More(Index,Min,Max,Incr) : \r
+\r
+ if Index < Max : \r
+\r
+ DoLoop = 1 \r
+\r
+ else : \r
+\r
+ DoLoop = 0 \r
+\r
+ return DoLoop,Index,Min,Max,Incr \r
+\r
+ \r
+\r
+def Next(Index,Min,Max,Incr) : \r
+\r
+ Index = Index + Incr \r
+\r
+ return Index,Min,Max,Incr\r
+</code></pre>\r
+\r
+<a name="2_2_3"></a><h4>2.2.3 Switch node </h4>\r
+<p>Switch node is a kind of Control node. In fact two nodes present Switch: <b>start</b> Switch and <b>end</b> Switch.\r
+ Nodes of such type are always InLine nodes. You have to supply this type of node by service, which will perform switching. That's why nodes of such type can have at least two or more switch ports (Boolean), but only one switch port can have "True" value at a definite moment of graph execution.</p>\r
+ \r
+ <p> With that kind of node you can define all kinds of tests or switches :</p>\r
+\r
+<p>\93if( condition ) ; else if( condition ) \85 ; else\94 or<br><br>\r
+\r
+\93switch( variable ) ; case value \85; default\94.<br><br>\r
+\r
+Etc\85</p>\r
+<p>The associated Python function will have all input ports of the Switch node \r
+ as input arguments. And that function must return a value for all output ports. \r
+ A simple example of this Python function: </p>\r
+ <pre><code>\r
+ \r
+def Switch(x): \r
+\r
+ i1=0 \r
+\r
+ i2=0 \r
+\r
+ i3=0 \r
+\r
+ if x>13: \r
+\r
+ i1=1 \r
+\r
+ elif x==13: \r
+\r
+ i2=1 \r
+\r
+ else: \r
+\r
+ i3=1 \r
+\r
+ return i1,i2,i3 \r
+ </code></pre>\r
+<p>In this example <b>i1</b>, <b>i2</b>, <b>i3</b> parameters of the function correspond to Switch \r
+ ports of the node. So, depending on the result of execution of the initial condition \r
+ (in our case it's a comparison of the input parameter with an integer 13), one \r
+ of the switch ports will get the value 1. And this port will transmit further \r
+ dataflow to the corresponding node. </p>\r
+<a name="2_2_4"></a><h4>2.2.4 GOTO node </h4>\r
+<p>GOTO node represents a simple transmitter of data from one port into another. \r
+ This InLine node can be with service or without it. In the first case the data \r
+ received by a GOTO node will be processed by this function and only after that \r
+ it will be transferred to another node. GOTO nodes may have as many Input and \r
+ Output ports as it's necessary. </p>\r
+ <i><a href="#cont">Back to the contents</a></i>\r
+<a name="3"></a><h2>3. SUPERVISION module features and services </h2>\r
+<p>The functionality of the SUPERVISION module is provided by a set of classes which are combined into \r
+the <b>SUPERV</b> package.\r
+<p>The API reference of the SUPERVISION component can be found <a href="namespaceSUPERV.html">here</a>.</p>\r
+<a name="3_1"></a><h3>3.1 CNode class </h3>\r
+<p>This is a base class of the SUPERVISION module. It contains a set of methods allowing:</p>\r
+\r
+<ul>\r
+ <li>creating a <b>Computation node </b>and setting its parameters (Name, Author, Comments \r
+ etc.)</li>\r
+ <li>checking the current state of the node in the data flow</li>\r
+ <li>node execution follow-up</li>\r
+ <li>management of the components, which can be initialized for execution of calculations in the data flow. (For that purpose\r
+ CNode class inherits the methods of the <b>Engines:Container</b> class)</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1CNode.html">here</a>.</p>\r
+\r
+<a name="3_2"></a><h3>3.2 FNode class </h3>\r
+\r
+<p>This class is necessary for management of <b>Factory nodes</b> in the data flow. Besides the inherited methods it contains some methods allowing\r
+to define the component from the container, which will be called for execution of the calculation.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1FNode.html">here</a>.</p>\r
+<a name="3_3"></a>\r
+<h3>3.3 INode class </h3>\r
+<p>This class is necessary for management of <b>Inline nodes</b> in the data flow. Besides the inherited methods it contains some methods allowing to set\r
+the Python function, which will be executed for performing calculations, as well as input and output parameters for the node.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1INode.html">here</a>.</p>\r
+\r
+<a name="3_4"></a><h3>3.4 GNode class </h3>\r
+<p>This class is necessary for management of <b>GOTO nodes</b> in the data flow. Besides the inherited methods it contains some methods allowing to define\r
+the couple node, which will be linked to this one.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1GNode.html">here</a>.</p>\r
+\r
+<a name="3_5"></a><h3>3.5 LNode class </h3>\r
+<p>This class is necessary for management of <b>Loop nodes</b> (or <b>Start Loop nodes</b>) in the data flow. Besides the inherited methods it contains some methods allowing to define\r
+the Python function, which will control the loop.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1LNode.html">here</a>.</p>\r
+\r
+<a name="3_6"></a><h3>3.6 ELNode class </h3>\r
+<p>This class is necessary for management of <b>End Loop nodes</b> (or <b>start</b> Loop nodes) in the data flow.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1ELNode.html">here</a>.</p>\r
+\r
+<a name="3_7"></a><h3>3.7 SNode class </h3>\r
+<p>This class is necessary for management of <b>Switch nodes</b> (or <b>Start Switch nodes</b>) in the data flow. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1SNode.html">here</a>.</p>\r
+\r
+<a name="3_8"></a><h3>3.8 ESNode class </h3>\r
+<p>This class is necessary for management of <b>End Switch nodes</b> in the data flow. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1ESNode.html">here</a>.</p>\r
+\r
+<a name="3_9"></a><h3>3.9 Graph class </h3>\r
+<p>This class is used for management of a data flow. It contains a set of methods, which allows:</p>\r
+<ul>\r
+ <li>creation of a data flow consisting of one or several different nodes</li>\r
+ <li>import/export of an existing data flow</li>\r
+ <li>execution of the data flow </li>\r
+ <li>follow-up of data flow execution</li>\r
+ <li>checking the state of the data flow</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1Graph.html">here</a>.</p>\r
+<a name="3_10"></a><h3>3.10 Link class </h3>\r
+<p>This class contains a set of methods used for representation and management of the links connecting nodes in a data flow. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1Link.html">here</a>.</p>\r
+\r
+<a name="3_11"></a><h3>3.11 Value class </h3>\r
+<p>This class contains a set of methods used for management of the values which can be set in the ports of nodes. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1Value.html">here</a>.</p>\r
+\r
+<a name="3_12"></a><h3>3.12 Port class </h3>\r
+<p>This class contains a set of methods used for management of the ports of the nodes in a data flow: </p>\r
+\r
+<ul>\r
+ <li>setting the attributes of a port</li>\r
+ <li>initialization of input ports with initial values</li>\r
+ <li>linking ports of different nodes</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1Port.html">here</a>.</p>\r
+\r
+<a name="3_13"></a><h3>3.13 SuperG class </h3>\r
+<p>The main class of the SUPERVISION ccomponent which is used for construction and initialization of a data flow. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSUPERV_1_1SuperG.html">here</a>.</p>\r
+\r
+\r
+<i><a href="#cont">Back to the contents</a></i>\r
+</body>\r
+</html>\r
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.3-rc2 -->
+<ul>
+<li><b>SALOME SUPERVISION module</b><ul>
+<li><a href="HTML/SUPERV.html">Mapping of SUPERV functions</a></li></ul>
+</li></ul>
+</body>
+</html>
--- /dev/null
+foldersTree = gFld("<b>SALOME v.1.2 </b>", "", "")
+ insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
+
+aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
+ aux2 = insFld(aux1, gFld("Modules", ""))
+ aux3 = insFld(aux2, gFld("SALOME SUPERVISION module", ""))
+ insDoc(aux3, gLnk("Overview", "", "overview_Supervision.html"))
+ aux4 = insFld(aux3, gFld("Packages", ""))
+ insDoc(aux4, gLnk("SUPERV", "", "namespaceSUPERV.html"))
+ insDoc(aux3, gLnk("Examples", "", "examples_SUPERV.html"))
+
+
+/*! Data structures
+*/
+ insDoc(aux1, gLnk("Data Structures", "", "annotated.html"))
+
+/*! insDoc(aux1, gLnk("SUPERV::CNode", "", "interfaceSUPERV_1_1CNode.html"))
+ insDoc(aux1, gLnk("SUPERV::ELNode", "", "interfaceSUPERV_1_1ELNode.html"))
+ insDoc(aux1, gLnk("SUPERV::ESNode", "", "interfaceSUPERV_1_1ESNode.html"))
+ insDoc(aux1, gLnk("SUPERV::FNode", "", "interfaceSUPERV_1_1FNode.html"))
+ insDoc(aux1, gLnk("SUPERV::GNode", "", "interfaceSUPERV_1_1GNode.html"))
+ insDoc(aux1, gLnk("SUPERV::Graph", "", "interfaceSUPERV_1_1Graph.html"))
+ insDoc(aux1, gLnk("SUPERV::INode", "", "interfaceSUPERV_1_1INode.html"))
+ insDoc(aux1, gLnk("SUPERV::Link", "", "interfaceSUPERV_1_1Link.html"))
+ insDoc(aux1, gLnk("SUPERV::ListOfNodes", "", "structSUPERV_1_1ListOfNodes.html"))
+ insDoc(aux1, gLnk("SUPERV::LNode", "", "interfaceSUPERV_1_1LNode.html"))
+ insDoc(aux1, gLnk("SUPERV::Port", "", "interfaceSUPERV_1_1Port.html"))
+ insDoc(aux1, gLnk("SUPERV::SDate", "", "structSUPERV_1_1SDate.html"))
+ insDoc(aux1, gLnk("SUPERV::SNode", "", "interfaceSUPERV_1_1SNode.html"))
+ insDoc(aux1, gLnk("SUPERV::SuperG", "", "interfaceSUPERV_1_1SuperG.html"))
+*/
+ insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html"))
+
+/*!
+ aux3 = insFld(aux2, gFld("SUPERV::CNode", "", "interfaceSUPERV_1_1CNode.html"))
+ insDoc(aux3, gLnk("SUPERV::FNode", "", "interfaceSUPERV_1_1FNode.html"))
+ aux4 = insFld(aux3, gFld("SUPERV::INode", "", "interfaceSUPERV_1_1INode.html"))
+ aux5 = insFld(aux4, gFld("SUPERV::GNode", "", "interfaceSUPERV_1_1GNode.html"))
+ insDoc(aux5, gLnk("SUPERV::ELNode", "", "interfaceSUPERV_1_1ELNode.html"))
+ insDoc(aux5, gLnk("SUPERV::ESNode", "", "interfaceSUPERV_1_1ESNode.html"))
+ insDoc(aux5, gLnk("SUPERV::LNode", "", "interfaceSUPERV_1_1LNode.html"))
+ insDoc(aux5, gLnk("SUPERV::SNode", "", "interfaceSUPERV_1_1SNode.html"))
+ insDoc(aux4, gLnk("SUPERV::Graph", "", "interfaceSUPERV_1_1Graph.html"))
+ insDoc(aux2, gLnk("SUPERV::Link", "", "interfaceSUPERV_1_1Link.html"))
+ insDoc(aux2, gLnk("SUPERV::SuperG", "", "interfaceSUPERV_1_1SuperG.html"))
+ aux3 = insFld(aux2, gFld("SUPERV::Value", "", "interfaceSUPERV_1_1Value.html"))
+ insDoc(aux3, gLnk("SUPERV::Port", "", "interfaceSUPERV_1_1Port.html"))
+ insDoc(aux2, gLnk("SUPERV::SuperG", "", "interfaceSUPERV_1_1SuperG.html"))
+ insDoc(aux1, gLnk("SUPERV::ListOfNodes", "", "structSUPERV_1_1ListOfNodes.html"))
+ insDoc(aux1, gLnk("SUPERV::SDate", "", "structSUPERV_1_1SDate.html"))
+*/
+ insDoc(aux1, gLnk("Class methods list", "", "functions.html"))
+/*!
+aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html"))
+ insDoc(aux1, gLnk("SUPERV", "", "namespaceSUPERV.html"))
+*/
+ insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html"))
+
+ insDoc(aux1, gLnk("File List", "", "files.html"))
+
+/*!
+
+ insDoc(aux1, gLnk("SUPERV.idl", "", "SUPERV_8idl.html"))
+*/
+
--- /dev/null
+//****************************************************************
+// You are free to copy the "Folder-Tree" script as long as you
+// keep this copyright notice:
+// Script found in: http://www.geocities.com/Paris/LeftBank/2178/
+// Author: Marcelino Alves Martins (martins@hks.com) December '97.
+//****************************************************************
+
+//Log of changes:
+// 17 Feb 98 - Fix initialization flashing problem with Netscape
+//
+// 27 Jan 98 - Root folder starts open; support for USETEXTLINKS;
+// make the ftien4 a js file
+//
+// DvH: Dec 2000 - Made some minor changes to support external
+// references
+
+// Definition of class Folder
+// *****************************************************************
+
+function Folder(folderDescription, tagName, hreference) //constructor
+{
+ //constant data
+ this.desc = folderDescription
+ this.tagName = tagName
+ this.hreference = hreference
+ this.id = -1
+ this.navObj = 0
+ this.iconImg = 0
+ this.nodeImg = 0
+ this.isLastNode = 0
+
+ //dynamic data
+ this.isOpen = true
+ this.iconSrc = "ftv2folderopen.png"
+ this.children = new Array
+ this.nChildren = 0
+
+ //methods
+ this.initialize = initializeFolder
+ this.setState = setStateFolder
+ this.addChild = addChild
+ this.createIndex = createEntryIndex
+ this.hide = hideFolder
+ this.display = display
+ this.renderOb = drawFolder
+ this.totalHeight = totalHeight
+ this.subEntries = folderSubEntries
+ this.outputLink = outputFolderLink
+}
+
+function setStateFolder(isOpen)
+{
+ var subEntries
+ var totalHeight
+ var fIt = 0
+ var i=0
+
+ if (isOpen == this.isOpen)
+ return
+
+ if (browserVersion == 2)
+ {
+ totalHeight = 0
+ for (i=0; i < this.nChildren; i++)
+ totalHeight = totalHeight + this.children[i].navObj.clip.height
+ subEntries = this.subEntries()
+ if (this.isOpen)
+ totalHeight = 0 - totalHeight
+ for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++)
+ indexOfEntries[fIt].navObj.moveBy(0, totalHeight)
+ }
+ this.isOpen = isOpen
+ propagateChangesInState(this)
+}
+
+function propagateChangesInState(folder)
+{
+ var i=0
+
+ if (folder.isOpen)
+ {
+ if (folder.nodeImg)
+ if (folder.isLastNode)
+ folder.nodeImg.src = "ftv2mlastnode.png"
+ else
+ folder.nodeImg.src = "ftv2mnode.png"
+ folder.iconImg.src = "ftv2folderopen.png"
+ for (i=0; i<folder.nChildren; i++)
+ folder.children[i].display()
+ }
+ else
+ {
+ if (folder.nodeImg)
+ if (folder.isLastNode)
+ folder.nodeImg.src = "ftv2plastnode.png"
+ else
+ folder.nodeImg.src = "ftv2pnode.png"
+ folder.iconImg.src = "ftv2folderclosed.png"
+ for (i=0; i<folder.nChildren; i++)
+ folder.children[i].hide()
+ }
+}
+
+function hideFolder()
+{
+ if (browserVersion == 1 || browserVersion == 3) {
+ if (this.navObj.style.display == "none")
+ return
+ this.navObj.style.display = "none"
+ } else {
+ if (this.navObj.visibility == "hidden")
+ return
+ this.navObj.visibility = "hidden"
+ }
+
+ this.setState(0)
+}
+
+function initializeFolder(level, lastNode, leftSide)
+{
+var j=0
+var i=0
+var numberOfFolders
+var numberOfDocs
+var nc
+
+ nc = this.nChildren
+
+ this.createIndex()
+
+ var auxEv = ""
+
+ if (browserVersion > 0)
+ auxEv = "<a href='javascript:clickOnNode("+this.id+")'>"
+ else
+ auxEv = "<a>"
+
+ if (level>0)
+ if (lastNode) //the last 'brother' in the children array
+ {
+ this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mlastnode.png' width=16 height=22 border=0></a>")
+// leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"
+ this.isLastNode = 1
+ }
+ else
+ {
+ this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mnode.png' width=16 height=22 border=0></a>")
+ leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
+ this.isLastNode = 0
+ }
+ else
+ this.renderOb("")
+
+ if (nc > 0)
+ {
+ level = level + 1
+ for (i=0 ; i < this.nChildren; i++)
+ {
+ if (i == this.nChildren-1)
+ this.children[i].initialize(level, 1, leftSide)
+ else
+ this.children[i].initialize(level, 0, leftSide)
+ }
+ }
+}
+
+function drawFolder(leftSide)
+{
+ if (browserVersion == 2) {
+ if (!doc.yPos)
+ doc.yPos=8
+ doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
+ }
+ if (browserVersion == 3)
+ {
+ doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>")
+ }
+
+ doc.write("\n<table ")
+ if (browserVersion == 1)
+ doc.write(" id='folder" + this.id + "' style='position:block;' ")
+ doc.write(" border=0 cellspacing=0 cellpadding=0>")
+ doc.write("\n<tr><td>")
+ doc.write(leftSide)
+ this.outputLink()
+ doc.write("<img name='folderIcon" + this.id + "' ")
+ doc.write("src='" + this.iconSrc+"' border=0></a>")
+ doc.write("</td>\n<td valign=middle nowrap>")
+ if (USETEXTLINKS)
+ {
+ this.outputLink()
+ doc.write(this.desc + "</a>")
+ }
+ else
+ doc.write(this.desc)
+
+/*!
+ if (this.tagName!="")
+ {
+ doc.write(" [external]")
+ }
+*/
+ doc.write("</td>")
+ doc.write("\n</table>\n")
+
+ if (browserVersion == 2) {
+ doc.write("</layer>")
+ }
+ if (browserVersion == 3) {
+ doc.write("</div>")
+ }
+
+ if (browserVersion == 1) {
+ this.navObj = doc.all["folder"+this.id]
+ this.iconImg = doc.all["folderIcon"+this.id]
+ this.nodeImg = doc.all["nodeIcon"+this.id]
+ } else if (browserVersion == 2) {
+ this.navObj = doc.layers["folder"+this.id]
+ this.iconImg = this.navObj.document.images["folderIcon"+this.id]
+ this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
+ doc.yPos=doc.yPos+this.navObj.clip.height
+ } else if (browserVersion == 3) {
+ this.navObj = doc.getElementById("folder"+this.id)
+ this.iconImg = doc.images.namedItem("folderIcon"+this.id)
+ this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
+ }
+}
+
+function outputFolderLink()
+{
+ if (this.hreference)
+ {
+ doc.write("<a ")
+ if (this.tagName)
+ {
+ doc.write("doxygen='" + this.tagName + "' ");
+ }
+ doc.write("href='" + this.hreference + "' TARGET=\"basefrm\" ")
+ if (browserVersion > 0)
+ doc.write("onClick='javascript:clickOnFolder("+this.id+")'")
+ doc.write(">")
+ }
+ else
+ doc.write("<a>")
+}
+
+function addChild(childNode)
+{
+ this.children[this.nChildren] = childNode
+ this.nChildren++
+ return childNode
+}
+
+function folderSubEntries()
+{
+ var i = 0
+ var se = this.nChildren
+
+ for (i=0; i < this.nChildren; i++){
+ if (this.children[i].children) //is a folder
+ se = se + this.children[i].subEntries()
+ }
+
+ return se
+}
+
+
+// Definition of class Item (a document or link inside a Folder)
+// *************************************************************
+
+function Item(itemDescription, tagName, itemLink) // Constructor
+{
+ // constant data
+ this.desc = itemDescription
+ this.tagName = tagName
+ this.link = itemLink
+ this.id = -1 //initialized in initalize()
+ this.navObj = 0 //initialized in render()
+ this.iconImg = 0 //initialized in render()
+ this.iconSrc = "ftv2doc.png"
+
+ // methods
+ this.initialize = initializeItem
+ this.createIndex = createEntryIndex
+ this.hide = hideItem
+ this.display = display
+ this.renderOb = drawItem
+ this.totalHeight = totalHeight
+}
+
+function hideItem()
+{
+ if (browserVersion == 1 || browserVersion == 3) {
+ if (this.navObj.style.display == "none")
+ return
+ this.navObj.style.display = "none"
+ } else {
+ if (this.navObj.visibility == "hidden")
+ return
+ this.navObj.visibility = "hidden"
+ }
+}
+
+function initializeItem(level, lastNode, leftSide)
+{
+ this.createIndex()
+
+ if (level>0)
+ if (lastNode) //the last 'brother' in the children array
+ {
+ this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>")
+ leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"
+ }
+ else
+ {
+ this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>")
+ leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
+ }
+ else
+ this.renderOb("")
+}
+
+function drawItem(leftSide)
+{
+ if (browserVersion == 2)
+ doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
+ if (browserVersion == 3)
+ doc.write("<div id='item" + this.id + "' style='display:block;'>")
+
+ doc.write("\n<table ")
+ if (browserVersion == 1)
+ doc.write(" id='item" + this.id + "' style='position:block;' ")
+ doc.write(" border=0 cellspacing=0 cellpadding=0>\n")
+ doc.write("<tr><td>")
+ doc.write(leftSide)
+ if (this.link!="")
+ {
+ doc.write("<a href=" + this.link + ">")
+ }
+ doc.write("<img id='itemIcon"+this.id+"' ")
+ doc.write("src='"+this.iconSrc+"' border=0>")
+ if (this.link!="")
+ {
+ doc.write("</a>")
+ }
+ doc.write("</td>\n<td valign=middle nowrap>")
+ if (USETEXTLINKS && this.link!="")
+ doc.write("<a href=" + this.link + ">" + this.desc + "</a>")
+ else
+ doc.write(this.desc)
+/*!
+ if (this.tagName!="")
+ {
+ doc.write(" [external]");
+ }
+*/
+ doc.write("\n</table>\n")
+
+ if (browserVersion == 2)
+ doc.write("</layer>")
+ if (browserVersion == 3)
+ doc.write("</div>")
+
+ if (browserVersion == 1) {
+ this.navObj = doc.all["item"+this.id]
+ this.iconImg = doc.all["itemIcon"+this.id]
+ } else if (browserVersion == 2) {
+ this.navObj = doc.layers["item"+this.id]
+ this.iconImg = this.navObj.document.images["itemIcon"+this.id]
+ doc.yPos=doc.yPos+this.navObj.clip.height
+ } else if (browserVersion == 3) {
+ this.navObj = doc.getElementById("item"+this.id)
+ this.iconImg = doc.images.namedItem("itemIcon"+this.id)
+ }
+}
+
+
+// Methods common to both objects (pseudo-inheritance)
+// ********************************************************
+
+function display()
+{
+ if (browserVersion == 1 || browserVersion == 3)
+ this.navObj.style.display = "block"
+ else
+ this.navObj.visibility = "show"
+}
+
+function createEntryIndex()
+{
+ this.id = nEntries
+ indexOfEntries[nEntries] = this
+ nEntries++
+}
+
+// total height of subEntries open
+function totalHeight() //used with browserVersion == 2
+{
+ var h = this.navObj.clip.height
+ var i = 0
+
+ if (this.isOpen) //is a folder and _is_ open
+ for (i=0 ; i < this.nChildren; i++)
+ h = h + this.children[i].totalHeight()
+
+ return h
+}
+
+
+// Events
+// *********************************************************
+
+function clickOnFolder(folderId)
+{
+ var clicked = indexOfEntries[folderId]
+
+ if (!clicked.isOpen)
+ clickOnNode(folderId)
+
+ return
+
+ if (clicked.isSelected)
+ return
+}
+
+function clickOnNode(folderId)
+{
+ var clickedFolder = 0
+ var state = 0
+
+ clickedFolder = indexOfEntries[folderId]
+ state = clickedFolder.isOpen
+
+ clickedFolder.setState(!state) //open<->close
+}
+
+function initializeDocument()
+{
+ doc = document;
+ if (doc.all)
+ browserVersion = 1 //IE4
+ else
+ if (doc.layers)
+ browserVersion = 2 //NS4
+ else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
+ browserVersion = 3 //mozilla
+ else
+ browserVersion = 0 //other
+
+ foldersTree.initialize(0, 1, "")
+ foldersTree.display()
+
+ if (browserVersion > 0)
+ {
+ if(browserVersion != 3)
+ doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+"> </layer>")
+
+ // close the whole tree
+ clickOnNode(0)
+ // open the root folder
+ clickOnNode(0)
+ }
+}
+
+// Auxiliary Functions for Folder-Treee backward compatibility
+// *********************************************************
+
+function gFld(description, tagName, hreference)
+{
+ folder = new Folder(description, tagName, hreference)
+ return folder
+}
+
+function gLnk(description, tagName, linkData)
+{
+ fullLink = ""
+
+ if (linkData!="")
+ {
+ fullLink = "'"+linkData+"' target=\"basefrm\""
+ }
+
+ linkItem = new Item(description, tagName, fullLink)
+ return linkItem
+}
+
+function insFld(parentFolder, childFolder)
+{
+ return parentFolder.addChild(childFolder)
+}
+
+function insDoc(parentFolder, document)
+{
+ parentFolder.addChild(document)
+}
+
+// Global variables
+// ****************
+
+USETEXTLINKS = 1
+indexOfEntries = new Array
+nEntries = 0
+doc = document
+browserVersion = 0
+selectedFolder=0
-# -* Makefile *-
+# Copyright (C) 2003 CEA/DEN, EDF R&D
#
-# Author : Vasily Rusyaev (Open Cascade NN)
-# Date : 13/02/2003
-# $Header:
#
-# source path
+#
+# File : Makefile.in
+# Author : Vasily Rusyaev (Open Cascade NN)
+# Module : doc
+# $Header:
+
top_srcdir=@top_srcdir@
top_builddir=../..
srcdir=@srcdir@
mv -f doxyfile1 doxyfile; \
$(doxygen) ./doxyfile; \
cd ..; \
- cp -f $(srcdir)/INPUT/sources/doxygen.css ./html/doxygen.css
+ cp -fr $(srcdir)/INPUT/sources/static/*.* ./html/
cp -fr $(srcdir)/INPUT/sources/ html/
- cp -fr $(srcdir)/INPUT/exemple/ html/
cp -fr $(srcdir)/INPUT/HTML/ html/
clean: