Salome HOME
New Switch tests with Gates
authorrahuel <rahuel@opencascade.com>
Wed, 16 Feb 2005 14:24:19 +0000 (14:24 +0000)
committerrahuel <rahuel@opencascade.com>
Wed, 16 Feb 2005 14:24:19 +0000 (14:24 +0000)
14 files changed:
examples/GraphSwitchCheckDefault1.py
examples/GraphSwitchCheckDefault1.xml
examples/GraphSwitchGates.py [new file with mode: 0644]
examples/GraphSwitchGates.xml [new file with mode: 0644]
examples/GraphSwitchGatesDefault.py [new file with mode: 0644]
examples/GraphSwitchGatesDefault.xml [new file with mode: 0644]
examples/GraphSwitchGatesNoDefaultAborted.py [new file with mode: 0644]
examples/GraphSwitchGatesNoDefaultAborted.xml [new file with mode: 0644]
examples/GraphSwitchGatesdefault.py [new file with mode: 0644]
examples/GraphSwitchGatesdefault.xml [new file with mode: 0644]
examples/GraphSwitchGatesdefaultBranch.py [new file with mode: 0644]
examples/GraphSwitchGatesdefaultBranch.xml [new file with mode: 0644]
examples/GraphSwitchNOTValid.py
examples/GraphSwitchNOTValid.xml

index cf92c4082b0839531598ff16a6fe9ca499e1fe16..dcd74d4d2866fc66c3c04c2a34f75d95dbee3dbf 100644 (file)
@@ -64,11 +64,11 @@ def DefGraphSwitchCheckDefault1() :
     OPrintOddGate = PrintOdd.GetOutPort( 'Gate' )
     
     PyPrintEven = []
-    PyPrintEven.append( 'from time import * ' )
-    PyPrintEven.append( 'def Print_1(a,Branch) :     ' )
-    PyPrintEven.append( '    print "Print ",a,Branch ' )
-    PyPrintEven.append( '    sleep(1) ' )
-    PyPrintEven.append( '    return Branch     ' )
+    PyPrintEven.append( 'from time import *  ' )
+    PyPrintEven.append( 'def Print_1(a,Branch) :      ' )
+    PyPrintEven.append( '    print "Print ",a,Branch  ' )
+    PyPrintEven.append( '    sleep(1)  ' )
+    PyPrintEven.append( '    return a,Branch      ' )
     PrintEven = GraphSwitchCheckDefault1.INode( 'Print_1' , PyPrintEven )
     PrintEven.SetName( 'PrintEven' )
     PrintEven.SetAuthor( '' )
@@ -77,6 +77,7 @@ def DefGraphSwitchCheckDefault1() :
     IPrintEvena = PrintEven.InPort( 'a' , 'long' )
     IPrintEvenBranch = PrintEven.InPort( 'Branch' , 'string' )
     IPrintEvenGate = PrintEven.GetInPort( 'Gate' )
+    OPrintEvena = PrintEven.OutPort( 'a' , 'long' )
     OPrintEvenBranch = PrintEven.OutPort( 'Branch' , 'string' )
     OPrintEvenGate = PrintEven.GetOutPort( 'Gate' )
     
@@ -196,10 +197,12 @@ def DefGraphSwitchCheckDefault1() :
     LIsOddaEmptyNodea = GraphSwitchCheckDefault1.Link( OIsOdda , IEmptyNodea )
     LIsOddaEmptyNodea.AddCoord( 1 , 646 , 78 )
     
-    LIsEvenaEndOfSwitcha = GraphSwitchCheckDefault1.Link( OIsEvena , IEndOfSwitcha )
+    LIsEvenGateEndOfSwitchDefault = GraphSwitchCheckDefault1.Link( OIsEvenGate , IEndOfSwitchDefault )
     
     LPrintOddBranchEmptyNodeBranch = GraphSwitchCheckDefault1.Link( OPrintOddBranch , IEmptyNodeBranch )
     
+    LPrintEvenaEndOfSwitcha = GraphSwitchCheckDefault1.Link( OPrintEvena , IEndOfSwitcha )
+    
     LPrintEvenBranchEndOfSwitchBranch = GraphSwitchCheckDefault1.Link( OPrintEvenBranch , IEndOfSwitchBranch )
     
     LEmptyNodeaEndOfSwitcha = GraphSwitchCheckDefault1.Link( OEmptyNodea , IEndOfSwitcha )
@@ -239,14 +242,10 @@ def DefGraphSwitchCheckDefault1() :
     LSwitchaPrintOdda = GraphSwitchCheckDefault1.Link( OSwitcha , IPrintOdda )
     
     LSwitchaPrintEvena = GraphSwitchCheckDefault1.Link( OSwitcha , IPrintEvena )
-    LSwitchaPrintEvena.AddCoord( 1 , 381 , 361 )
-    LSwitchaPrintEvena.AddCoord( 2 , 382 , 200 )
     
     LSwitchBranchPrintOddBranch = GraphSwitchCheckDefault1.Link( OSwitchBranch , IPrintOddBranch )
     
     LSwitchBranchPrintEvenBranch = GraphSwitchCheckDefault1.Link( OSwitchBranch , IPrintEvenBranch )
-    LSwitchBranchPrintEvenBranch.AddCoord( 1 , 369 , 381 )
-    LSwitchBranchPrintEvenBranch.AddCoord( 2 , 369 , 219 )
     
     LSwitchDefaultEndOfSwitchDefault = GraphSwitchCheckDefault1.Link( OSwitchDefault , IEndOfSwitchDefault )
     
@@ -258,6 +257,7 @@ def DefGraphSwitchCheckDefault1() :
     IInitLoopSwitchMax.Input( 10 )
     
     # Output Ports of the graph
+    #OIsEvena = IsEven.GetOutPort( 'a' )
     #OEndOfInitLoopSwitchIndex = EndOfInitLoopSwitch.GetOutPort( 'Index' )
     #OEndOfInitLoopSwitchMin = EndOfInitLoopSwitch.GetOutPort( 'Min' )
     #OEndOfInitLoopSwitchMax = EndOfInitLoopSwitch.GetOutPort( 'Max' )
index 227fb593f51926ebe101b95b8a8ca9035c407d6f..a61959c35f410d79b6be2107073e42b58d738fc1 100644 (file)
@@ -9,7 +9,7 @@
     <kind>1</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>GraphSwitchCheckDefault_1</service-name>
+<service-name>GraphSwitchCheckDefault1</service-name>
      <inParameter-list>
 <inParameter>
 <inParameter-type>long</inParameter-type>
@@ -22,6 +22,9 @@
        <inParameter-name>InitLoopSwitch__Max</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>IsEven__a</outParameter-name>      </outParameter>
+      <outParameter>
 <outParameter-type>long</outParameter-type>
        <outParameter-name>EndOfInitLoopSwitch__Index</outParameter-name>      </outParameter>
       <outParameter>
@@ -36,7 +39,7 @@
     <DataStream-list/>
     <PyFunction-list/>
     <creation-date>13/1/2005 - 12:21:43</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <lastmodification-date>16/2/2005 - 14:31:44</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>JR</author>
     <container>?</container>
@@ -69,8 +72,8 @@
       <PyFunc><![CDATA[    print a,"IsOdd (GraphSwitch)"      ]]></PyFunc>
       <PyFunc><![CDATA[    sleep( 1 )   ]]></PyFunc>
       <PyFunc><![CDATA[    return a     ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[    print a,"IsEven (GraphSwitch)"       ]]></PyFunc>
       <PyFunc><![CDATA[    sleep( 1 )    ]]></PyFunc>
       <PyFunc><![CDATA[    return a      ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[    print "Print ",a,Branch ]]></PyFunc>
       <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
       <PyFunc><![CDATA[    return Branch     ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
        <inParameter-name>Branch</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>a</outParameter-name>      </outParameter>
+      <outParameter>
 <outParameter-type>string</outParameter-type>
        <outParameter-name>Branch</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list>
 <PyFunction>
 <FuncName>Print_1</FuncName>
-      <PyFunc><![CDATA[from time import * ]]></PyFunc>
-      <PyFunc><![CDATA[def Print_1(a,Branch) :     ]]></PyFunc>
-      <PyFunc><![CDATA[    print "Print ",a,Branch ]]></PyFunc>
-      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
-      <PyFunc><![CDATA[    return Branch     ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+      <PyFunc><![CDATA[from time import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def Print_1(a,Branch) :      ]]></PyFunc>
+      <PyFunc><![CDATA[    print "Print ",a,Branch  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return a,Branch      ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[def EmptyNode(a,Branch) : ]]></PyFunc>
       <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
       <PyFunc><![CDATA[    return a,Branch  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[def NextLoop(Index,Min,Max) :       ]]></PyFunc>
       <PyFunc><![CDATA[        Index = Index - 1       ]]></PyFunc>
       <PyFunc><![CDATA[        return Index,Min,Max       ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[def EndOfInitLoopSwitch(DoLoop,Index,Min,Max) :  ]]></PyFunc>
       <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
       <PyFunc><![CDATA[    return DoLoop,Index,Min,Max  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[    else :    ]]></PyFunc>
       <PyFunc><![CDATA[        Branch = "Odd"    ]]></PyFunc>
       <PyFunc><![CDATA[    return a & 1,1-(a&1),a,Branch,0  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[def EndOfSwitch(a,Branch) : ]]></PyFunc>
       <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
       <PyFunc><![CDATA[    return a ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>9/2/2005 - 17:21:22</creation-date>
-    <lastmodification-date>9/2/2005 - 17:21:22</lastmodification-date>
+    <creation-date>16/2/2005 - 14:29:20</creation-date>
+    <lastmodification-date>16/2/2005 - 14:29:20</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
       <y>78</y>     </coord>    </coord-list>   </link>
    <link>
 <fromnode-name>IsEven</fromnode-name>
-    <fromserviceparameter-name>a</fromserviceparameter-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
     <tonode-name>EndOfSwitch</tonode-name>
-    <toserviceparameter-name>a</toserviceparameter-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
     <coord-list/>   </link>
    <link>
 <fromnode-name>PrintOdd</fromnode-name>
     <toserviceparameter-name>Branch</toserviceparameter-name>
     <coord-list/>   </link>
    <link>
+<fromnode-name>PrintEven</fromnode-name>
+    <fromserviceparameter-name>a</fromserviceparameter-name>
+    <tonode-name>EndOfSwitch</tonode-name>
+    <toserviceparameter-name>a</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
 <fromnode-name>PrintEven</fromnode-name>
     <fromserviceparameter-name>Branch</fromserviceparameter-name>
     <tonode-name>EndOfSwitch</tonode-name>
     <fromserviceparameter-name>a</fromserviceparameter-name>
     <tonode-name>PrintEven</tonode-name>
     <toserviceparameter-name>a</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>381</x>
-      <y>361</y>     </coord>
-     <coord>
-<x>382</x>
-      <y>200</y>     </coord>    </coord-list>   </link>
+    <coord-list/>   </link>
    <link>
 <fromnode-name>Switch</fromnode-name>
     <fromserviceparameter-name>Branch</fromserviceparameter-name>
     <fromserviceparameter-name>Branch</fromserviceparameter-name>
     <tonode-name>PrintEven</tonode-name>
     <toserviceparameter-name>Branch</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>369</x>
-      <y>381</y>     </coord>
-     <coord>
-<x>369</x>
-      <y>219</y>     </coord>    </coord-list>   </link>
+    <coord-list/>   </link>
    <link>
 <fromnode-name>Switch</fromnode-name>
     <fromserviceparameter-name>Default</fromserviceparameter-name>
diff --git a/examples/GraphSwitchGates.py b/examples/GraphSwitchGates.py
new file mode 100644 (file)
index 0000000..6999ae1
--- /dev/null
@@ -0,0 +1,156 @@
+
+# Generated python file of Graph GraphSwitchGates
+
+from SuperV import *
+
+# Graph creation of GraphSwitchGates
+def DefGraphSwitchGates() :
+    GraphSwitchGates = Graph( 'GraphSwitchGates' )
+    GraphSwitchGates.SetName( 'GraphSwitchGates' )
+    GraphSwitchGates.SetAuthor( 'JR' )
+    GraphSwitchGates.SetComment( '' )
+    GraphSwitchGates.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    PyIsOdd = []
+    PyIsOdd.append( 'from time import * ' )
+    PyIsOdd.append( 'def IsOdd() : ' )
+    PyIsOdd.append( '    sleep(1) ' )
+    PyIsOdd.append( '    return  ' )
+    IsOdd = GraphSwitchGates.INode( 'IsOdd' , PyIsOdd )
+    IsOdd.SetName( 'IsOdd' )
+    IsOdd.SetAuthor( '' )
+    IsOdd.SetComment( 'Compute Node' )
+    IsOdd.Coords( 424 , 116 )
+    IIsOddGate = IsOdd.GetInPort( 'Gate' )
+    OIsOddGate = IsOdd.GetOutPort( 'Gate' )
+    
+    PyIsEven = []
+    PyIsEven.append( 'from time import * ' )
+    PyIsEven.append( 'def IsEven() :  ' )
+    PyIsEven.append( '    sleep(1) ' )
+    PyIsEven.append( '    return  ' )
+    IsEven = GraphSwitchGates.INode( 'IsEven' , PyIsEven )
+    IsEven.SetName( 'IsEven' )
+    IsEven.SetAuthor( '' )
+    IsEven.SetComment( 'Compute Node' )
+    IsEven.Coords( 428 , 345 )
+    IIsEvenGate = IsEven.GetInPort( 'Gate' )
+    OIsEvenGate = IsEven.GetOutPort( 'Gate' )
+    
+    # Creation of Loop Nodes
+    PyLoopGates = []
+    PyLoopGates.append( 'def InitLoop(Index,Max,Min) :    ' )
+    PyLoopGates.append( '    Index = Max   ' )
+    PyLoopGates.append( '    return Index,Max,Min    ' )
+    PyMoreLoopGates = []
+    PyMoreLoopGates.append( 'from time import *  ' )
+    PyMoreLoopGates.append( 'def MoreLoop(Index,Max,Min) :  ' )
+    PyMoreLoopGates.append( '    sleep(1)  ' )
+    PyMoreLoopGates.append( '    DoLoop = 0   ' )
+    PyMoreLoopGates.append( '    if Index >= Min :   ' )
+    PyMoreLoopGates.append( '        DoLoop = 1   ' )
+    PyMoreLoopGates.append( '    return DoLoop,Index,Max,Min ' )
+    PyNextLoopGates = []
+    PyNextLoopGates.append( 'def  NextLoop(Index,Max,Min) :   ' )
+    PyNextLoopGates.append( '    Index = Index - 1   ' )
+    PyNextLoopGates.append( '    return Index,Max,Min   ' )
+    LoopGates,EndLoopGates = GraphSwitchGates.LNode( 'InitLoop' , PyLoopGates , 'MoreLoop' , PyMoreLoopGates , 'NextLoop' , PyNextLoopGates )
+    EndLoopGates.SetName( 'EndLoopGates' )
+    EndLoopGates.SetAuthor( '' )
+    EndLoopGates.SetComment( 'Compute Node' )
+    EndLoopGates.Coords( 875 , 216 )
+    PyEndLoopGates = []
+    EndLoopGates.SetPyFunction( 'EndLoopGates' , PyEndLoopGates )
+    ILoopGatesDoLoop = LoopGates.GetInPort( 'DoLoop' )
+    ILoopGatesIndex = LoopGates.InPort( 'Index' , 'long' )
+    ILoopGatesMax = LoopGates.InPort( 'Max' , 'long' )
+    ILoopGatesMin = LoopGates.InPort( 'Min' , 'long' )
+    ILoopGatesGate = LoopGates.GetInPort( 'Gate' )
+    OLoopGatesDoLoop = LoopGates.GetOutPort( 'DoLoop' )
+    OLoopGatesIndex = LoopGates.GetOutPort( 'Index' )
+    OLoopGatesMax = LoopGates.GetOutPort( 'Max' )
+    OLoopGatesMin = LoopGates.GetOutPort( 'Min' )
+    IEndLoopGatesDoLoop = EndLoopGates.GetInPort( 'DoLoop' )
+    IEndLoopGatesIndex = EndLoopGates.GetInPort( 'Index' )
+    IEndLoopGatesMax = EndLoopGates.GetInPort( 'Max' )
+    IEndLoopGatesMin = EndLoopGates.GetInPort( 'Min' )
+    IEndLoopGatesGate = EndLoopGates.GetInPort( 'Gate' )
+    OEndLoopGatesDoLoop = EndLoopGates.GetOutPort( 'DoLoop' )
+    OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    OEndLoopGatesGate = EndLoopGates.GetOutPort( 'Gate' )
+    LoopGates.SetName( 'LoopGates' )
+    LoopGates.SetAuthor( '' )
+    LoopGates.SetComment( 'Compute Node' )
+    LoopGates.Coords( 13 , 236 )
+    
+    # Creation of Switch Nodes
+    PySwitchGates = []
+    PySwitchGates.append( 'def SwitchGates(Index) :  ' )
+    PySwitchGates.append( '    Odd = 0  ' )
+    PySwitchGates.append( '    Even = 0  ' )
+    PySwitchGates.append( '    if (Index & 1) == 1 :  ' )
+    PySwitchGates.append( '        Odd = 1  ' )
+    PySwitchGates.append( '    if (Index & 1) == 0 :  ' )
+    PySwitchGates.append( '        Even = 1  ' )
+    PySwitchGates.append( '    return Odd,Even   ' )
+    SwitchGates,EndSwitchGates = GraphSwitchGates.SNode( 'SwitchGates' , PySwitchGates )
+    EndSwitchGates.SetName( 'EndSwitchGates' )
+    EndSwitchGates.SetAuthor( '' )
+    EndSwitchGates.SetComment( 'Compute Node' )
+    EndSwitchGates.Coords( 648 , 276 )
+    PyEndSwitchGates = []
+    PyEndSwitchGates.append( 'from time import * ' )
+    PyEndSwitchGates.append( 'def EndSwitchGates() : ' )
+    PyEndSwitchGates.append( '    sleep(1) ' )
+    PyEndSwitchGates.append( '    return ' )
+    PyEndSwitchGates.append( '' )
+    EndSwitchGates.SetPyFunction( 'EndSwitchGates' , PyEndSwitchGates )
+    IEndSwitchGatesDefault = EndSwitchGates.GetInPort( 'Default' )
+    OEndSwitchGatesGate = EndSwitchGates.GetOutPort( 'Gate' )
+    SwitchGates.SetName( 'SwitchGates' )
+    SwitchGates.SetAuthor( '' )
+    SwitchGates.SetComment( 'Compute Node' )
+    SwitchGates.Coords( 204 , 236 )
+    ISwitchGatesIndex = SwitchGates.InPort( 'Index' , 'long' )
+    ISwitchGatesGate = SwitchGates.GetInPort( 'Gate' )
+    OSwitchGatesOdd = SwitchGates.OutPort( 'Odd' , 'long' )
+    OSwitchGatesEven = SwitchGates.OutPort( 'Even' , 'long' )
+    OSwitchGatesDefault = SwitchGates.GetOutPort( 'Default' )
+    
+    # Creation of Links
+    LLoopGatesIndexEndLoopGatesIndex = GraphSwitchGates.Link( OLoopGatesIndex , IEndLoopGatesIndex )
+    
+    LLoopGatesIndexSwitchGatesIndex = GraphSwitchGates.Link( OLoopGatesIndex , ISwitchGatesIndex )
+    
+    LLoopGatesMaxEndLoopGatesMax = GraphSwitchGates.Link( OLoopGatesMax , IEndLoopGatesMax )
+    
+    LLoopGatesMinEndLoopGatesMin = GraphSwitchGates.Link( OLoopGatesMin , IEndLoopGatesMin )
+    
+    LSwitchGatesOddIsOddGate = GraphSwitchGates.Link( OSwitchGatesOdd , IIsOddGate )
+    
+    LSwitchGatesEvenIsEvenGate = GraphSwitchGates.Link( OSwitchGatesEven , IIsEvenGate )
+    
+    LEndSwitchGatesGateEndLoopGatesGate = GraphSwitchGates.Link( OEndSwitchGatesGate , IEndLoopGatesGate )
+    
+    LIsOddGateEndSwitchGatesDefault = GraphSwitchGates.Link( OIsOddGate , IEndSwitchGatesDefault )
+    
+    LIsEvenGateEndSwitchGatesDefault = GraphSwitchGates.Link( OIsEvenGate , IEndSwitchGatesDefault )
+    
+    # Input datas
+    ILoopGatesIndex.Input( 0 )
+    ILoopGatesMax.Input( 13 )
+    ILoopGatesMin.Input( -7 )
+    
+    # Output Ports of the graph
+    #OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    #OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    #OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    return GraphSwitchGates
+
+
+GraphSwitchGates = DefGraphSwitchGates()
diff --git a/examples/GraphSwitchGates.xml b/examples/GraphSwitchGates.xml
new file mode 100644 (file)
index 0000000..7c6b883
--- /dev/null
@@ -0,0 +1,354 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GraphSwitchGates</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GraphSwitchGatesDefault</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>16/2/2005 - 10:40:8</creation-date>
+    <lastmodification-date>16/2/2005 - 11:44:13</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>JR</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>LoopGates</node-name>
+    <kind>4</kind>
+    <coupled-node>EndLoopGates</coupled-node>
+    <service>
+<service-name>LoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>InitLoop</FuncName>
+      <PyFunc><![CDATA[def InitLoop(Index,Max,Min) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Max   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min    ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>MoreLoop</FuncName>
+      <PyFunc><![CDATA[from time import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def MoreLoop(Index,Max,Min) :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    DoLoop = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index >= Min :   ]]></PyFunc>
+      <PyFunc><![CDATA[        DoLoop = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return DoLoop,Index,Max,Min ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>NextLoop</FuncName>
+      <PyFunc><![CDATA[def  NextLoop(Index,Max,Min) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Index - 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:33:14</creation-date>
+    <lastmodification-date>16/2/2005 - 11:33:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>13</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndLoopGates</node-name>
+    <kind>5</kind>
+    <coupled-node>LoopGates</coupled-node>
+    <service>
+<service-name>EndLoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndLoopGates</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:33:14</creation-date>
+    <lastmodification-date>16/2/2005 - 11:33:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>875</x-position>
+    <y-position>216</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>SwitchGates</node-name>
+    <kind>6</kind>
+    <coupled-node>EndSwitchGates</coupled-node>
+    <service>
+<service-name>SwitchGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Odd</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Even</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>SwitchGates</FuncName>
+      <PyFunc><![CDATA[def SwitchGates(Index) :  ]]></PyFunc>
+      <PyFunc><![CDATA[    Odd = 0  ]]></PyFunc>
+      <PyFunc><![CDATA[    Even = 0  ]]></PyFunc>
+      <PyFunc><![CDATA[    if (Index & 1) == 1 :  ]]></PyFunc>
+      <PyFunc><![CDATA[        Odd = 1  ]]></PyFunc>
+      <PyFunc><![CDATA[    if (Index & 1) == 0 :  ]]></PyFunc>
+      <PyFunc><![CDATA[        Even = 1  ]]></PyFunc>
+      <PyFunc><![CDATA[    return Odd,Even   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:33:14</creation-date>
+    <lastmodification-date>16/2/2005 - 11:33:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>204</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndSwitchGates</node-name>
+    <kind>7</kind>
+    <coupled-node>SwitchGates</coupled-node>
+    <service>
+<service-name>EndSwitchGates</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndSwitchGates</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def EndSwitchGates() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return ]]></PyFunc>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:33:14</creation-date>
+    <lastmodification-date>16/2/2005 - 11:33:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>648</x-position>
+    <y-position>276</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsOdd</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsOdd</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsOdd</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsOdd() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:33:14</creation-date>
+    <lastmodification-date>16/2/2005 - 11:33:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>424</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsEven</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsEven</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsEven</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsEven() :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:33:14</creation-date>
+    <lastmodification-date>16/2/2005 - 11:33:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>428</x-position>
+    <y-position>345</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>SwitchGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Max</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Min</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndLoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Odd</fromserviceparameter-name>
+    <tonode-name>IsOdd</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Even</fromserviceparameter-name>
+    <tonode-name>IsEven</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndSwitchGates</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsOdd</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsEven</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GraphSwitchGates</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Index</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGates</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Max</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>13</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGates</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Min</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>-7</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/GraphSwitchGatesDefault.py b/examples/GraphSwitchGatesDefault.py
new file mode 100644 (file)
index 0000000..dd176ff
--- /dev/null
@@ -0,0 +1,159 @@
+
+# Generated python file of Graph GraphSwitchGatesDefault
+
+from SuperV import *
+
+# Graph creation of GraphSwitchGatesDefault
+def DefGraphSwitchGatesDefault() :
+    GraphSwitchGatesDefault = Graph( 'GraphSwitchGatesDefault' )
+    GraphSwitchGatesDefault.SetName( 'GraphSwitchGatesDefault' )
+    GraphSwitchGatesDefault.SetAuthor( 'JR' )
+    GraphSwitchGatesDefault.SetComment( '' )
+    GraphSwitchGatesDefault.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    PyIsOdd = []
+    PyIsOdd.append( 'from time import * ' )
+    PyIsOdd.append( 'def IsOdd() : ' )
+    PyIsOdd.append( '    sleep(1) ' )
+    PyIsOdd.append( '    return  ' )
+    IsOdd = GraphSwitchGatesDefault.INode( 'IsOdd' , PyIsOdd )
+    IsOdd.SetName( 'IsOdd' )
+    IsOdd.SetAuthor( '' )
+    IsOdd.SetComment( 'Compute Node' )
+    IsOdd.Coords( 424 , 116 )
+    IIsOddGate = IsOdd.GetInPort( 'Gate' )
+    OIsOddGate = IsOdd.GetOutPort( 'Gate' )
+    
+    PyIsEven = []
+    PyIsEven.append( 'from time import * ' )
+    PyIsEven.append( 'def IsEven() :  ' )
+    PyIsEven.append( '    sleep(1) ' )
+    PyIsEven.append( '    return  ' )
+    IsEven = GraphSwitchGatesDefault.INode( 'IsEven' , PyIsEven )
+    IsEven.SetName( 'IsEven' )
+    IsEven.SetAuthor( '' )
+    IsEven.SetComment( 'Compute Node' )
+    IsEven.Coords( 428 , 345 )
+    IIsEvenGate = IsEven.GetInPort( 'Gate' )
+    OIsEvenGate = IsEven.GetOutPort( 'Gate' )
+    
+    # Creation of Loop Nodes
+    PyLoopGates = []
+    PyLoopGates.append( 'def InitLoop(Index,Max,Min) :    ' )
+    PyLoopGates.append( '    Index = Max   ' )
+    PyLoopGates.append( '    return Index,Max,Min    ' )
+    PyMoreLoopGates = []
+    PyMoreLoopGates.append( 'from time import *  ' )
+    PyMoreLoopGates.append( 'def MoreLoop(Index,Max,Min) :  ' )
+    PyMoreLoopGates.append( '    sleep(1)  ' )
+    PyMoreLoopGates.append( '    DoLoop = 0   ' )
+    PyMoreLoopGates.append( '    if Index >= Min :   ' )
+    PyMoreLoopGates.append( '        DoLoop = 1   ' )
+    PyMoreLoopGates.append( '    return DoLoop,Index,Max,Min ' )
+    PyNextLoopGates = []
+    PyNextLoopGates.append( 'def  NextLoop(Index,Max,Min) :   ' )
+    PyNextLoopGates.append( '    Index = Index - 1   ' )
+    PyNextLoopGates.append( '    return Index,Max,Min   ' )
+    LoopGates,EndLoopGates = GraphSwitchGatesDefault.LNode( 'InitLoop' , PyLoopGates , 'MoreLoop' , PyMoreLoopGates , 'NextLoop' , PyNextLoopGates )
+    EndLoopGates.SetName( 'EndLoopGates' )
+    EndLoopGates.SetAuthor( '' )
+    EndLoopGates.SetComment( 'Compute Node' )
+    EndLoopGates.Coords( 875 , 216 )
+    PyEndLoopGates = []
+    EndLoopGates.SetPyFunction( 'EndLoopGates' , PyEndLoopGates )
+    ILoopGatesDoLoop = LoopGates.GetInPort( 'DoLoop' )
+    ILoopGatesIndex = LoopGates.InPort( 'Index' , 'long' )
+    ILoopGatesMax = LoopGates.InPort( 'Max' , 'long' )
+    ILoopGatesMin = LoopGates.InPort( 'Min' , 'long' )
+    ILoopGatesGate = LoopGates.GetInPort( 'Gate' )
+    OLoopGatesDoLoop = LoopGates.GetOutPort( 'DoLoop' )
+    OLoopGatesIndex = LoopGates.GetOutPort( 'Index' )
+    OLoopGatesMax = LoopGates.GetOutPort( 'Max' )
+    OLoopGatesMin = LoopGates.GetOutPort( 'Min' )
+    IEndLoopGatesDoLoop = EndLoopGates.GetInPort( 'DoLoop' )
+    IEndLoopGatesIndex = EndLoopGates.GetInPort( 'Index' )
+    IEndLoopGatesMax = EndLoopGates.GetInPort( 'Max' )
+    IEndLoopGatesMin = EndLoopGates.GetInPort( 'Min' )
+    IEndLoopGatesGate = EndLoopGates.GetInPort( 'Gate' )
+    OEndLoopGatesDoLoop = EndLoopGates.GetOutPort( 'DoLoop' )
+    OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    OEndLoopGatesGate = EndLoopGates.GetOutPort( 'Gate' )
+    LoopGates.SetName( 'LoopGates' )
+    LoopGates.SetAuthor( '' )
+    LoopGates.SetComment( 'Compute Node' )
+    LoopGates.Coords( 13 , 236 )
+    
+    # Creation of Switch Nodes
+    PySwitchGates = []
+    PySwitchGates.append( 'def SwitchGates(Index) :   ' )
+    PySwitchGates.append( '    Odd = 0   ' )
+    PySwitchGates.append( '    Even = 0   ' )
+    PySwitchGates.append( '    if Index > 0 : ' )
+    PySwitchGates.append( '        if (Index & 1) == 1 :   ' )
+    PySwitchGates.append( '            Odd = 1   ' )
+    PySwitchGates.append( '        if (Index & 1) == 0 :   ' )
+    PySwitchGates.append( '            Even = 1   ' )
+    PySwitchGates.append( '    return Odd,Even    ' )
+    SwitchGates,EndSwitchGates = GraphSwitchGatesDefault.SNode( 'SwitchGates' , PySwitchGates )
+    EndSwitchGates.SetName( 'EndSwitchGates' )
+    EndSwitchGates.SetAuthor( '' )
+    EndSwitchGates.SetComment( 'Compute Node' )
+    EndSwitchGates.Coords( 648 , 276 )
+    PyEndSwitchGates = []
+    PyEndSwitchGates.append( 'from time import * ' )
+    PyEndSwitchGates.append( 'def EndSwitchGates() : ' )
+    PyEndSwitchGates.append( '    sleep(1) ' )
+    PyEndSwitchGates.append( '    return ' )
+    PyEndSwitchGates.append( '' )
+    EndSwitchGates.SetPyFunction( 'EndSwitchGates' , PyEndSwitchGates )
+    IEndSwitchGatesDefault = EndSwitchGates.GetInPort( 'Default' )
+    OEndSwitchGatesGate = EndSwitchGates.GetOutPort( 'Gate' )
+    SwitchGates.SetName( 'SwitchGates' )
+    SwitchGates.SetAuthor( '' )
+    SwitchGates.SetComment( 'Compute Node' )
+    SwitchGates.Coords( 204 , 236 )
+    ISwitchGatesIndex = SwitchGates.InPort( 'Index' , 'long' )
+    ISwitchGatesGate = SwitchGates.GetInPort( 'Gate' )
+    OSwitchGatesOdd = SwitchGates.OutPort( 'Odd' , 'long' )
+    OSwitchGatesEven = SwitchGates.OutPort( 'Even' , 'long' )
+    OSwitchGatesDefault = SwitchGates.GetOutPort( 'Default' )
+    
+    # Creation of Links
+    LLoopGatesIndexEndLoopGatesIndex = GraphSwitchGatesDefault.Link( OLoopGatesIndex , IEndLoopGatesIndex )
+    
+    LLoopGatesIndexSwitchGatesIndex = GraphSwitchGatesDefault.Link( OLoopGatesIndex , ISwitchGatesIndex )
+    
+    LLoopGatesMaxEndLoopGatesMax = GraphSwitchGatesDefault.Link( OLoopGatesMax , IEndLoopGatesMax )
+    
+    LLoopGatesMinEndLoopGatesMin = GraphSwitchGatesDefault.Link( OLoopGatesMin , IEndLoopGatesMin )
+    
+    LSwitchGatesOddIsOddGate = GraphSwitchGatesDefault.Link( OSwitchGatesOdd , IIsOddGate )
+    
+    LSwitchGatesEvenIsEvenGate = GraphSwitchGatesDefault.Link( OSwitchGatesEven , IIsEvenGate )
+    
+    LSwitchGatesDefaultEndSwitchGatesDefault = GraphSwitchGatesDefault.Link( OSwitchGatesDefault , IEndSwitchGatesDefault )
+    
+    LEndSwitchGatesGateEndLoopGatesGate = GraphSwitchGatesDefault.Link( OEndSwitchGatesGate , IEndLoopGatesGate )
+    
+    LIsOddGateEndSwitchGatesDefault = GraphSwitchGatesDefault.Link( OIsOddGate , IEndSwitchGatesDefault )
+    
+    LIsEvenGateEndSwitchGatesDefault = GraphSwitchGatesDefault.Link( OIsEvenGate , IEndSwitchGatesDefault )
+    
+    # Input datas
+    ILoopGatesIndex.Input( 0 )
+    ILoopGatesMax.Input( 13 )
+    ILoopGatesMin.Input( -7 )
+    
+    # Output Ports of the graph
+    #OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    #OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    #OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    return GraphSwitchGatesDefault
+
+
+GraphSwitchGatesDefault = DefGraphSwitchGatesDefault()
diff --git a/examples/GraphSwitchGatesDefault.xml b/examples/GraphSwitchGatesDefault.xml
new file mode 100644 (file)
index 0000000..2dbc8c8
--- /dev/null
@@ -0,0 +1,361 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GraphSwitchGatesDefault</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GraphSwitchGatesDefault_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>16/2/2005 - 10:40:8</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>JR</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>LoopGates</node-name>
+    <kind>4</kind>
+    <coupled-node>EndLoopGates</coupled-node>
+    <service>
+<service-name>LoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>InitLoop</FuncName>
+      <PyFunc><![CDATA[def InitLoop(Index,Max,Min) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Max   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min    ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>MoreLoop</FuncName>
+      <PyFunc><![CDATA[from time import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def MoreLoop(Index,Max,Min) :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    DoLoop = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index >= Min :   ]]></PyFunc>
+      <PyFunc><![CDATA[        DoLoop = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return DoLoop,Index,Max,Min ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>NextLoop</FuncName>
+      <PyFunc><![CDATA[def  NextLoop(Index,Max,Min) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Index - 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:46:44</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>13</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndLoopGates</node-name>
+    <kind>5</kind>
+    <coupled-node>LoopGates</coupled-node>
+    <service>
+<service-name>EndLoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndLoopGates</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:46:44</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>875</x-position>
+    <y-position>216</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>SwitchGates</node-name>
+    <kind>6</kind>
+    <coupled-node>EndSwitchGates</coupled-node>
+    <service>
+<service-name>SwitchGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Odd</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Even</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>SwitchGates</FuncName>
+      <PyFunc><![CDATA[def SwitchGates(Index) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Odd = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    Even = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index > 0 : ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 1 :   ]]></PyFunc>
+      <PyFunc><![CDATA[            Odd = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 0 :   ]]></PyFunc>
+      <PyFunc><![CDATA[            Even = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Odd,Even    ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:46:44</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>204</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndSwitchGates</node-name>
+    <kind>7</kind>
+    <coupled-node>SwitchGates</coupled-node>
+    <service>
+<service-name>EndSwitchGates</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndSwitchGates</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def EndSwitchGates() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return ]]></PyFunc>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:46:44</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>648</x-position>
+    <y-position>276</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsOdd</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsOdd</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsOdd</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsOdd() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:46:44</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>424</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsEven</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsEven</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsEven</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsEven() :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 11:46:44</creation-date>
+    <lastmodification-date>16/2/2005 - 11:46:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>428</x-position>
+    <y-position>345</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>SwitchGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Max</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Min</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndLoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Odd</fromserviceparameter-name>
+    <tonode-name>IsOdd</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Even</fromserviceparameter-name>
+    <tonode-name>IsEven</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Default</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndSwitchGates</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsOdd</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsEven</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GraphSwitchGatesDefault</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Index</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesDefault</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Max</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>13</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesDefault</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Min</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>-7</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/GraphSwitchGatesNoDefaultAborted.py b/examples/GraphSwitchGatesNoDefaultAborted.py
new file mode 100644 (file)
index 0000000..cccfc8f
--- /dev/null
@@ -0,0 +1,157 @@
+
+# Generated python file of Graph GraphSwitchGatesNoDefaultAborted
+
+from SuperV import *
+
+# Graph creation of GraphSwitchGatesNoDefaultAborted
+def DefGraphSwitchGatesNoDefaultAborted() :
+    GraphSwitchGatesNoDefaultAborted = Graph( 'GraphSwitchGatesNoDefaultAborted' )
+    GraphSwitchGatesNoDefaultAborted.SetName( 'GraphSwitchGatesNoDefaultAborted' )
+    GraphSwitchGatesNoDefaultAborted.SetAuthor( 'JR' )
+    GraphSwitchGatesNoDefaultAborted.SetComment( '' )
+    GraphSwitchGatesNoDefaultAborted.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    PyIsOdd = []
+    PyIsOdd.append( 'from time import * ' )
+    PyIsOdd.append( 'def IsOdd() : ' )
+    PyIsOdd.append( '    sleep(1) ' )
+    PyIsOdd.append( '    return  ' )
+    IsOdd = GraphSwitchGatesNoDefaultAborted.INode( 'IsOdd' , PyIsOdd )
+    IsOdd.SetName( 'IsOdd' )
+    IsOdd.SetAuthor( '' )
+    IsOdd.SetComment( 'Compute Node' )
+    IsOdd.Coords( 424 , 116 )
+    IIsOddGate = IsOdd.GetInPort( 'Gate' )
+    OIsOddGate = IsOdd.GetOutPort( 'Gate' )
+    
+    PyIsEven = []
+    PyIsEven.append( 'from time import * ' )
+    PyIsEven.append( 'def IsEven() :  ' )
+    PyIsEven.append( '    sleep(1) ' )
+    PyIsEven.append( '    return  ' )
+    IsEven = GraphSwitchGatesNoDefaultAborted.INode( 'IsEven' , PyIsEven )
+    IsEven.SetName( 'IsEven' )
+    IsEven.SetAuthor( '' )
+    IsEven.SetComment( 'Compute Node' )
+    IsEven.Coords( 428 , 345 )
+    IIsEvenGate = IsEven.GetInPort( 'Gate' )
+    OIsEvenGate = IsEven.GetOutPort( 'Gate' )
+    
+    # Creation of Loop Nodes
+    PyLoopGates = []
+    PyLoopGates.append( 'def InitLoop(Index,Max,Min) :    ' )
+    PyLoopGates.append( '    Index = Max   ' )
+    PyLoopGates.append( '    return Index,Max,Min    ' )
+    PyMoreLoopGates = []
+    PyMoreLoopGates.append( 'from time import *  ' )
+    PyMoreLoopGates.append( 'def MoreLoop(Index,Max,Min) :  ' )
+    PyMoreLoopGates.append( '    sleep(1)  ' )
+    PyMoreLoopGates.append( '    DoLoop = 0   ' )
+    PyMoreLoopGates.append( '    if Index >= Min :   ' )
+    PyMoreLoopGates.append( '        DoLoop = 1   ' )
+    PyMoreLoopGates.append( '    return DoLoop,Index,Max,Min ' )
+    PyNextLoopGates = []
+    PyNextLoopGates.append( 'def  NextLoop(Index,Max,Min) :   ' )
+    PyNextLoopGates.append( '    Index = Index - 1   ' )
+    PyNextLoopGates.append( '    return Index,Max,Min   ' )
+    LoopGates,EndLoopGates = GraphSwitchGatesNoDefaultAborted.LNode( 'InitLoop' , PyLoopGates , 'MoreLoop' , PyMoreLoopGates , 'NextLoop' , PyNextLoopGates )
+    EndLoopGates.SetName( 'EndLoopGates' )
+    EndLoopGates.SetAuthor( '' )
+    EndLoopGates.SetComment( 'Compute Node' )
+    EndLoopGates.Coords( 875 , 216 )
+    PyEndLoopGates = []
+    EndLoopGates.SetPyFunction( 'EndLoopGates' , PyEndLoopGates )
+    ILoopGatesDoLoop = LoopGates.GetInPort( 'DoLoop' )
+    ILoopGatesIndex = LoopGates.InPort( 'Index' , 'long' )
+    ILoopGatesMax = LoopGates.InPort( 'Max' , 'long' )
+    ILoopGatesMin = LoopGates.InPort( 'Min' , 'long' )
+    ILoopGatesGate = LoopGates.GetInPort( 'Gate' )
+    OLoopGatesDoLoop = LoopGates.GetOutPort( 'DoLoop' )
+    OLoopGatesIndex = LoopGates.GetOutPort( 'Index' )
+    OLoopGatesMax = LoopGates.GetOutPort( 'Max' )
+    OLoopGatesMin = LoopGates.GetOutPort( 'Min' )
+    IEndLoopGatesDoLoop = EndLoopGates.GetInPort( 'DoLoop' )
+    IEndLoopGatesIndex = EndLoopGates.GetInPort( 'Index' )
+    IEndLoopGatesMax = EndLoopGates.GetInPort( 'Max' )
+    IEndLoopGatesMin = EndLoopGates.GetInPort( 'Min' )
+    IEndLoopGatesGate = EndLoopGates.GetInPort( 'Gate' )
+    OEndLoopGatesDoLoop = EndLoopGates.GetOutPort( 'DoLoop' )
+    OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    OEndLoopGatesGate = EndLoopGates.GetOutPort( 'Gate' )
+    LoopGates.SetName( 'LoopGates' )
+    LoopGates.SetAuthor( '' )
+    LoopGates.SetComment( 'Compute Node' )
+    LoopGates.Coords( 13 , 236 )
+    
+    # Creation of Switch Nodes
+    PySwitchGates = []
+    PySwitchGates.append( 'def SwitchGates(Index) :   ' )
+    PySwitchGates.append( '    Odd = 0   ' )
+    PySwitchGates.append( '    Even = 0   ' )
+    PySwitchGates.append( '    if Index > 0 : ' )
+    PySwitchGates.append( '        if (Index & 1) == 1 :   ' )
+    PySwitchGates.append( '            Odd = 1   ' )
+    PySwitchGates.append( '        if (Index & 1) == 0 :   ' )
+    PySwitchGates.append( '            Even = 1   ' )
+    PySwitchGates.append( '    return Odd,Even    ' )
+    SwitchGates,EndSwitchGates = GraphSwitchGatesNoDefaultAborted.SNode( 'SwitchGates' , PySwitchGates )
+    EndSwitchGates.SetName( 'EndSwitchGates' )
+    EndSwitchGates.SetAuthor( '' )
+    EndSwitchGates.SetComment( 'Compute Node' )
+    EndSwitchGates.Coords( 648 , 276 )
+    PyEndSwitchGates = []
+    PyEndSwitchGates.append( 'from time import * ' )
+    PyEndSwitchGates.append( 'def EndSwitchGates() : ' )
+    PyEndSwitchGates.append( '    sleep(1) ' )
+    PyEndSwitchGates.append( '    return ' )
+    PyEndSwitchGates.append( '' )
+    EndSwitchGates.SetPyFunction( 'EndSwitchGates' , PyEndSwitchGates )
+    IEndSwitchGatesDefault = EndSwitchGates.GetInPort( 'Default' )
+    OEndSwitchGatesGate = EndSwitchGates.GetOutPort( 'Gate' )
+    SwitchGates.SetName( 'SwitchGates' )
+    SwitchGates.SetAuthor( '' )
+    SwitchGates.SetComment( 'Compute Node' )
+    SwitchGates.Coords( 204 , 236 )
+    ISwitchGatesIndex = SwitchGates.InPort( 'Index' , 'long' )
+    ISwitchGatesGate = SwitchGates.GetInPort( 'Gate' )
+    OSwitchGatesOdd = SwitchGates.OutPort( 'Odd' , 'long' )
+    OSwitchGatesEven = SwitchGates.OutPort( 'Even' , 'long' )
+    OSwitchGatesDefault = SwitchGates.GetOutPort( 'Default' )
+    
+    # Creation of Links
+    LLoopGatesIndexEndLoopGatesIndex = GraphSwitchGatesNoDefaultAborted.Link( OLoopGatesIndex , IEndLoopGatesIndex )
+    
+    LLoopGatesIndexSwitchGatesIndex = GraphSwitchGatesNoDefaultAborted.Link( OLoopGatesIndex , ISwitchGatesIndex )
+    
+    LLoopGatesMaxEndLoopGatesMax = GraphSwitchGatesNoDefaultAborted.Link( OLoopGatesMax , IEndLoopGatesMax )
+    
+    LLoopGatesMinEndLoopGatesMin = GraphSwitchGatesNoDefaultAborted.Link( OLoopGatesMin , IEndLoopGatesMin )
+    
+    LSwitchGatesOddIsOddGate = GraphSwitchGatesNoDefaultAborted.Link( OSwitchGatesOdd , IIsOddGate )
+    
+    LSwitchGatesEvenIsEvenGate = GraphSwitchGatesNoDefaultAborted.Link( OSwitchGatesEven , IIsEvenGate )
+    
+    LEndSwitchGatesGateEndLoopGatesGate = GraphSwitchGatesNoDefaultAborted.Link( OEndSwitchGatesGate , IEndLoopGatesGate )
+    
+    LIsOddGateEndSwitchGatesDefault = GraphSwitchGatesNoDefaultAborted.Link( OIsOddGate , IEndSwitchGatesDefault )
+    
+    LIsEvenGateEndSwitchGatesDefault = GraphSwitchGatesNoDefaultAborted.Link( OIsEvenGate , IEndSwitchGatesDefault )
+    
+    # Input datas
+    ILoopGatesIndex.Input( 0 )
+    ILoopGatesMax.Input( 13 )
+    ILoopGatesMin.Input( -7 )
+    
+    # Output Ports of the graph
+    #OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    #OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    #OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    return GraphSwitchGatesNoDefaultAborted
+
+
+GraphSwitchGatesNoDefaultAborted = DefGraphSwitchGatesNoDefaultAborted()
diff --git a/examples/GraphSwitchGatesNoDefaultAborted.xml b/examples/GraphSwitchGatesNoDefaultAborted.xml
new file mode 100644 (file)
index 0000000..76ee607
--- /dev/null
@@ -0,0 +1,355 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GraphSwitchGatesNoDefaultAborted</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GraphSwitchGatesDefault_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>16/2/2005 - 10:40:8</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>JR</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>LoopGates</node-name>
+    <kind>4</kind>
+    <coupled-node>EndLoopGates</coupled-node>
+    <service>
+<service-name>LoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>InitLoop</FuncName>
+      <PyFunc><![CDATA[def InitLoop(Index,Max,Min) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Max   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min    ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>MoreLoop</FuncName>
+      <PyFunc><![CDATA[from time import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def MoreLoop(Index,Max,Min) :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    DoLoop = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index >= Min :   ]]></PyFunc>
+      <PyFunc><![CDATA[        DoLoop = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return DoLoop,Index,Max,Min ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>NextLoop</FuncName>
+      <PyFunc><![CDATA[def  NextLoop(Index,Max,Min) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Index - 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:12:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>13</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndLoopGates</node-name>
+    <kind>5</kind>
+    <coupled-node>LoopGates</coupled-node>
+    <service>
+<service-name>EndLoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndLoopGates</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:12:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>875</x-position>
+    <y-position>216</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>SwitchGates</node-name>
+    <kind>6</kind>
+    <coupled-node>EndSwitchGates</coupled-node>
+    <service>
+<service-name>SwitchGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Odd</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Even</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>SwitchGates</FuncName>
+      <PyFunc><![CDATA[def SwitchGates(Index) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Odd = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    Even = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index > 0 : ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 1 :   ]]></PyFunc>
+      <PyFunc><![CDATA[            Odd = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 0 :   ]]></PyFunc>
+      <PyFunc><![CDATA[            Even = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Odd,Even    ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:12:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>204</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndSwitchGates</node-name>
+    <kind>7</kind>
+    <coupled-node>SwitchGates</coupled-node>
+    <service>
+<service-name>EndSwitchGates</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndSwitchGates</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def EndSwitchGates() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return ]]></PyFunc>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:12:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>648</x-position>
+    <y-position>276</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsOdd</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsOdd</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsOdd</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsOdd() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:12:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>424</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsEven</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsEven</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsEven</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsEven() :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:12:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:12:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>428</x-position>
+    <y-position>345</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>SwitchGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Max</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Min</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndLoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Odd</fromserviceparameter-name>
+    <tonode-name>IsOdd</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Even</fromserviceparameter-name>
+    <tonode-name>IsEven</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndSwitchGates</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsOdd</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsEven</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GraphSwitchGatesNoDefaultAborted</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Index</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesNoDefaultAborted</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Max</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>13</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesNoDefaultAborted</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Min</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>-7</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/GraphSwitchGatesdefault.py b/examples/GraphSwitchGatesdefault.py
new file mode 100644 (file)
index 0000000..0a5ccdf
--- /dev/null
@@ -0,0 +1,163 @@
+
+# Generated python file of Graph GraphSwitchGatesdefault
+
+from SuperV import *
+
+# Graph creation of GraphSwitchGatesdefault
+def DefGraphSwitchGatesdefault() :
+    GraphSwitchGatesdefault = Graph( 'GraphSwitchGatesdefault' )
+    GraphSwitchGatesdefault.SetName( 'GraphSwitchGatesdefault' )
+    GraphSwitchGatesdefault.SetAuthor( 'JR' )
+    GraphSwitchGatesdefault.SetComment( '' )
+    GraphSwitchGatesdefault.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    PyIsOdd = []
+    PyIsOdd.append( 'from time import * ' )
+    PyIsOdd.append( 'def IsOdd() : ' )
+    PyIsOdd.append( '    sleep(1) ' )
+    PyIsOdd.append( '    return  ' )
+    IsOdd = GraphSwitchGatesdefault.INode( 'IsOdd' , PyIsOdd )
+    IsOdd.SetName( 'IsOdd' )
+    IsOdd.SetAuthor( '' )
+    IsOdd.SetComment( 'Compute Node' )
+    IsOdd.Coords( 424 , 116 )
+    IIsOddGate = IsOdd.GetInPort( 'Gate' )
+    OIsOddGate = IsOdd.GetOutPort( 'Gate' )
+    
+    PyIsEven = []
+    PyIsEven.append( 'from time import * ' )
+    PyIsEven.append( 'def IsEven() :  ' )
+    PyIsEven.append( '    sleep(1) ' )
+    PyIsEven.append( '    return  ' )
+    IsEven = GraphSwitchGatesdefault.INode( 'IsEven' , PyIsEven )
+    IsEven.SetName( 'IsEven' )
+    IsEven.SetAuthor( '' )
+    IsEven.SetComment( 'Compute Node' )
+    IsEven.Coords( 428 , 345 )
+    IIsEvenGate = IsEven.GetInPort( 'Gate' )
+    OIsEvenGate = IsEven.GetOutPort( 'Gate' )
+    
+    # Creation of Loop Nodes
+    PyLoopGates = []
+    PyLoopGates.append( 'def InitLoop(Index,Max,Min) :    ' )
+    PyLoopGates.append( '    Index = Max   ' )
+    PyLoopGates.append( '    return Index,Max,Min    ' )
+    PyMoreLoopGates = []
+    PyMoreLoopGates.append( 'from time import *  ' )
+    PyMoreLoopGates.append( 'def MoreLoop(Index,Max,Min) :  ' )
+    PyMoreLoopGates.append( '    sleep(1)  ' )
+    PyMoreLoopGates.append( '    DoLoop = 0   ' )
+    PyMoreLoopGates.append( '    if Index >= Min :   ' )
+    PyMoreLoopGates.append( '        DoLoop = 1   ' )
+    PyMoreLoopGates.append( '    return DoLoop,Index,Max,Min ' )
+    PyNextLoopGates = []
+    PyNextLoopGates.append( 'def  NextLoop(Index,Max,Min) :   ' )
+    PyNextLoopGates.append( '    Index = Index - 1   ' )
+    PyNextLoopGates.append( '    return Index,Max,Min   ' )
+    LoopGates,EndLoopGates = GraphSwitchGatesdefault.LNode( 'InitLoop' , PyLoopGates , 'MoreLoop' , PyMoreLoopGates , 'NextLoop' , PyNextLoopGates )
+    EndLoopGates.SetName( 'EndLoopGates' )
+    EndLoopGates.SetAuthor( '' )
+    EndLoopGates.SetComment( 'Compute Node' )
+    EndLoopGates.Coords( 875 , 216 )
+    PyEndLoopGates = []
+    EndLoopGates.SetPyFunction( 'EndLoopGates' , PyEndLoopGates )
+    ILoopGatesDoLoop = LoopGates.GetInPort( 'DoLoop' )
+    ILoopGatesIndex = LoopGates.InPort( 'Index' , 'long' )
+    ILoopGatesMax = LoopGates.InPort( 'Max' , 'long' )
+    ILoopGatesMin = LoopGates.InPort( 'Min' , 'long' )
+    ILoopGatesGate = LoopGates.GetInPort( 'Gate' )
+    OLoopGatesDoLoop = LoopGates.GetOutPort( 'DoLoop' )
+    OLoopGatesIndex = LoopGates.GetOutPort( 'Index' )
+    OLoopGatesMax = LoopGates.GetOutPort( 'Max' )
+    OLoopGatesMin = LoopGates.GetOutPort( 'Min' )
+    IEndLoopGatesDoLoop = EndLoopGates.GetInPort( 'DoLoop' )
+    IEndLoopGatesIndex = EndLoopGates.GetInPort( 'Index' )
+    IEndLoopGatesMax = EndLoopGates.GetInPort( 'Max' )
+    IEndLoopGatesMin = EndLoopGates.GetInPort( 'Min' )
+    IEndLoopGatesGate = EndLoopGates.GetInPort( 'Gate' )
+    OEndLoopGatesDoLoop = EndLoopGates.GetOutPort( 'DoLoop' )
+    OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    OEndLoopGatesGate = EndLoopGates.GetOutPort( 'Gate' )
+    LoopGates.SetName( 'LoopGates' )
+    LoopGates.SetAuthor( '' )
+    LoopGates.SetComment( 'Compute Node' )
+    LoopGates.Coords( 13 , 236 )
+    
+    # Creation of Switch Nodes
+    PySwitchGates = []
+    PySwitchGates.append( 'def SwitchGates(Index) :    ' )
+    PySwitchGates.append( '    Odd = 0    ' )
+    PySwitchGates.append( '    Even = 0    ' )
+    PySwitchGates.append( '    default = 0 ' )
+    PySwitchGates.append( '    if Index > 0 :  ' )
+    PySwitchGates.append( '        if (Index & 1) == 1 :    ' )
+    PySwitchGates.append( '            Odd = 1    ' )
+    PySwitchGates.append( '        if (Index & 1) == 0 :    ' )
+    PySwitchGates.append( '            Even = 1    ' )
+    PySwitchGates.append( '    else : ' )
+    PySwitchGates.append( '        default = 1 ' )
+    PySwitchGates.append( '    return Odd,Even,default ' )
+    SwitchGates,EndSwitchGates = GraphSwitchGatesdefault.SNode( 'SwitchGates' , PySwitchGates )
+    EndSwitchGates.SetName( 'EndSwitchGates' )
+    EndSwitchGates.SetAuthor( '' )
+    EndSwitchGates.SetComment( 'Compute Node' )
+    EndSwitchGates.Coords( 648 , 276 )
+    PyEndSwitchGates = []
+    PyEndSwitchGates.append( 'from time import * ' )
+    PyEndSwitchGates.append( 'def EndSwitchGates() : ' )
+    PyEndSwitchGates.append( '    sleep(1) ' )
+    PyEndSwitchGates.append( '    return ' )
+    PyEndSwitchGates.append( '' )
+    EndSwitchGates.SetPyFunction( 'EndSwitchGates' , PyEndSwitchGates )
+    IEndSwitchGatesDefault = EndSwitchGates.GetInPort( 'Default' )
+    OEndSwitchGatesGate = EndSwitchGates.GetOutPort( 'Gate' )
+    SwitchGates.SetName( 'SwitchGates' )
+    SwitchGates.SetAuthor( '' )
+    SwitchGates.SetComment( 'Compute Node' )
+    SwitchGates.Coords( 204 , 236 )
+    ISwitchGatesIndex = SwitchGates.InPort( 'Index' , 'long' )
+    ISwitchGatesGate = SwitchGates.GetInPort( 'Gate' )
+    OSwitchGatesOdd = SwitchGates.OutPort( 'Odd' , 'long' )
+    OSwitchGatesEven = SwitchGates.OutPort( 'Even' , 'long' )
+    OSwitchGatesdefault = SwitchGates.OutPort( 'default' , 'long' )
+    OSwitchGatesDefault = SwitchGates.GetOutPort( 'Default' )
+    
+    # Creation of Links
+    LLoopGatesIndexEndLoopGatesIndex = GraphSwitchGatesdefault.Link( OLoopGatesIndex , IEndLoopGatesIndex )
+    
+    LLoopGatesIndexSwitchGatesIndex = GraphSwitchGatesdefault.Link( OLoopGatesIndex , ISwitchGatesIndex )
+    
+    LLoopGatesMaxEndLoopGatesMax = GraphSwitchGatesdefault.Link( OLoopGatesMax , IEndLoopGatesMax )
+    
+    LLoopGatesMinEndLoopGatesMin = GraphSwitchGatesdefault.Link( OLoopGatesMin , IEndLoopGatesMin )
+    
+    LSwitchGatesOddIsOddGate = GraphSwitchGatesdefault.Link( OSwitchGatesOdd , IIsOddGate )
+    
+    LSwitchGatesEvenIsEvenGate = GraphSwitchGatesdefault.Link( OSwitchGatesEven , IIsEvenGate )
+    
+    LSwitchGatesdefaultEndSwitchGatesDefault = GraphSwitchGatesdefault.Link( OSwitchGatesdefault , IEndSwitchGatesDefault )
+    
+    LEndSwitchGatesGateEndLoopGatesGate = GraphSwitchGatesdefault.Link( OEndSwitchGatesGate , IEndLoopGatesGate )
+    
+    LIsOddGateEndSwitchGatesDefault = GraphSwitchGatesdefault.Link( OIsOddGate , IEndSwitchGatesDefault )
+    
+    LIsEvenGateEndSwitchGatesDefault = GraphSwitchGatesdefault.Link( OIsEvenGate , IEndSwitchGatesDefault )
+    
+    # Input datas
+    ILoopGatesIndex.Input( 0 )
+    ILoopGatesMax.Input( 13 )
+    ILoopGatesMin.Input( -7 )
+    
+    # Output Ports of the graph
+    #OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    #OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    #OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    return GraphSwitchGatesdefault
+
+
+GraphSwitchGatesdefault = DefGraphSwitchGatesdefault()
diff --git a/examples/GraphSwitchGatesdefault.xml b/examples/GraphSwitchGatesdefault.xml
new file mode 100644 (file)
index 0000000..e4a0692
--- /dev/null
@@ -0,0 +1,367 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GraphSwitchGatesdefault</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GraphSwitchGatesdefault</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>16/2/2005 - 10:40:8</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:31</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>JR</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>LoopGates</node-name>
+    <kind>4</kind>
+    <coupled-node>EndLoopGates</coupled-node>
+    <service>
+<service-name>LoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>InitLoop</FuncName>
+      <PyFunc><![CDATA[def InitLoop(Index,Max,Min) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Max   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min    ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>MoreLoop</FuncName>
+      <PyFunc><![CDATA[from time import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def MoreLoop(Index,Max,Min) :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    DoLoop = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index >= Min :   ]]></PyFunc>
+      <PyFunc><![CDATA[        DoLoop = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return DoLoop,Index,Max,Min ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>NextLoop</FuncName>
+      <PyFunc><![CDATA[def  NextLoop(Index,Max,Min) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Index - 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:13:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>13</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndLoopGates</node-name>
+    <kind>5</kind>
+    <coupled-node>LoopGates</coupled-node>
+    <service>
+<service-name>EndLoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndLoopGates</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:13:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>875</x-position>
+    <y-position>216</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>SwitchGates</node-name>
+    <kind>6</kind>
+    <coupled-node>EndSwitchGates</coupled-node>
+    <service>
+<service-name>SwitchGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Odd</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Even</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>default</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>SwitchGates</FuncName>
+      <PyFunc><![CDATA[def SwitchGates(Index) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Odd = 0    ]]></PyFunc>
+      <PyFunc><![CDATA[    Even = 0    ]]></PyFunc>
+      <PyFunc><![CDATA[    default = 0 ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index > 0 :  ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 1 :    ]]></PyFunc>
+      <PyFunc><![CDATA[            Odd = 1    ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 0 :    ]]></PyFunc>
+      <PyFunc><![CDATA[            Even = 1    ]]></PyFunc>
+      <PyFunc><![CDATA[    else : ]]></PyFunc>
+      <PyFunc><![CDATA[        default = 1 ]]></PyFunc>
+      <PyFunc><![CDATA[    return Odd,Even,default ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:13:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>204</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndSwitchGates</node-name>
+    <kind>7</kind>
+    <coupled-node>SwitchGates</coupled-node>
+    <service>
+<service-name>EndSwitchGates</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndSwitchGates</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def EndSwitchGates() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return ]]></PyFunc>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:13:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>648</x-position>
+    <y-position>276</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsOdd</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsOdd</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsOdd</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsOdd() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:13:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>424</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsEven</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsEven</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsEven</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsEven() :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 12:13:25</creation-date>
+    <lastmodification-date>16/2/2005 - 12:13:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>428</x-position>
+    <y-position>345</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>SwitchGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Max</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Min</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndLoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Odd</fromserviceparameter-name>
+    <tonode-name>IsOdd</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Even</fromserviceparameter-name>
+    <tonode-name>IsEven</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>default</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndSwitchGates</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsOdd</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsEven</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GraphSwitchGatesdefault</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Index</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesdefault</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Max</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>13</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesdefault</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Min</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>-7</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/GraphSwitchGatesdefaultBranch.py b/examples/GraphSwitchGatesdefaultBranch.py
new file mode 100644 (file)
index 0000000..14b03d0
--- /dev/null
@@ -0,0 +1,178 @@
+
+# Generated python file of Graph GraphSwitchGatesdefaultBranch
+
+from SuperV import *
+
+# Graph creation of GraphSwitchGatesdefaultBranch
+def DefGraphSwitchGatesdefaultBranch() :
+    GraphSwitchGatesdefaultBranch = Graph( 'GraphSwitchGatesdefaultBranch' )
+    GraphSwitchGatesdefaultBranch.SetName( 'GraphSwitchGatesdefaultBranch' )
+    GraphSwitchGatesdefaultBranch.SetAuthor( 'JR' )
+    GraphSwitchGatesdefaultBranch.SetComment( '' )
+    GraphSwitchGatesdefaultBranch.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    PyIsOdd = []
+    PyIsOdd.append( 'from time import * ' )
+    PyIsOdd.append( 'def IsOdd() : ' )
+    PyIsOdd.append( '    sleep(1) ' )
+    PyIsOdd.append( '    return  ' )
+    IsOdd = GraphSwitchGatesdefaultBranch.INode( 'IsOdd' , PyIsOdd )
+    IsOdd.SetName( 'IsOdd' )
+    IsOdd.SetAuthor( '' )
+    IsOdd.SetComment( 'Compute Node' )
+    IsOdd.Coords( 424 , 116 )
+    IIsOddGate = IsOdd.GetInPort( 'Gate' )
+    OIsOddGate = IsOdd.GetOutPort( 'Gate' )
+    
+    PyIsEven = []
+    PyIsEven.append( 'from time import * ' )
+    PyIsEven.append( 'def IsEven() :  ' )
+    PyIsEven.append( '    sleep(1) ' )
+    PyIsEven.append( '    return  ' )
+    IsEven = GraphSwitchGatesdefaultBranch.INode( 'IsEven' , PyIsEven )
+    IsEven.SetName( 'IsEven' )
+    IsEven.SetAuthor( '' )
+    IsEven.SetComment( 'Compute Node' )
+    IsEven.Coords( 428 , 345 )
+    IIsEvenGate = IsEven.GetInPort( 'Gate' )
+    OIsEvenGate = IsEven.GetOutPort( 'Gate' )
+    
+    PydefaultNode = []
+    PydefaultNode.append( 'from time import * ' )
+    PydefaultNode.append( 'def defaultNode() :  ' )
+    PydefaultNode.append( '    sleep(1) ' )
+    PydefaultNode.append( '    return  ' )
+    defaultNode = GraphSwitchGatesdefaultBranch.INode( 'defaultNode' , PydefaultNode )
+    defaultNode.SetName( 'defaultNode' )
+    defaultNode.SetAuthor( '' )
+    defaultNode.SetComment( 'Compute Node' )
+    defaultNode.Coords( 425 , 232 )
+    IdefaultNodeGate = defaultNode.GetInPort( 'Gate' )
+    OdefaultNodeGate = defaultNode.GetOutPort( 'Gate' )
+    
+    # Creation of Loop Nodes
+    PyLoopGates = []
+    PyLoopGates.append( 'def InitLoop(Index,Max,Min) :    ' )
+    PyLoopGates.append( '    Index = Max   ' )
+    PyLoopGates.append( '    return Index,Max,Min    ' )
+    PyMoreLoopGates = []
+    PyMoreLoopGates.append( 'from time import *  ' )
+    PyMoreLoopGates.append( 'def MoreLoop(Index,Max,Min) :  ' )
+    PyMoreLoopGates.append( '    sleep(1)  ' )
+    PyMoreLoopGates.append( '    DoLoop = 0   ' )
+    PyMoreLoopGates.append( '    if Index >= Min :   ' )
+    PyMoreLoopGates.append( '        DoLoop = 1   ' )
+    PyMoreLoopGates.append( '    return DoLoop,Index,Max,Min ' )
+    PyNextLoopGates = []
+    PyNextLoopGates.append( 'def  NextLoop(Index,Max,Min) :   ' )
+    PyNextLoopGates.append( '    Index = Index - 1   ' )
+    PyNextLoopGates.append( '    return Index,Max,Min   ' )
+    LoopGates,EndLoopGates = GraphSwitchGatesdefaultBranch.LNode( 'InitLoop' , PyLoopGates , 'MoreLoop' , PyMoreLoopGates , 'NextLoop' , PyNextLoopGates )
+    EndLoopGates.SetName( 'EndLoopGates' )
+    EndLoopGates.SetAuthor( '' )
+    EndLoopGates.SetComment( 'Compute Node' )
+    EndLoopGates.Coords( 875 , 216 )
+    PyEndLoopGates = []
+    EndLoopGates.SetPyFunction( 'EndLoopGates' , PyEndLoopGates )
+    ILoopGatesDoLoop = LoopGates.GetInPort( 'DoLoop' )
+    ILoopGatesIndex = LoopGates.InPort( 'Index' , 'long' )
+    ILoopGatesMax = LoopGates.InPort( 'Max' , 'long' )
+    ILoopGatesMin = LoopGates.InPort( 'Min' , 'long' )
+    ILoopGatesGate = LoopGates.GetInPort( 'Gate' )
+    OLoopGatesDoLoop = LoopGates.GetOutPort( 'DoLoop' )
+    OLoopGatesIndex = LoopGates.GetOutPort( 'Index' )
+    OLoopGatesMax = LoopGates.GetOutPort( 'Max' )
+    OLoopGatesMin = LoopGates.GetOutPort( 'Min' )
+    IEndLoopGatesDoLoop = EndLoopGates.GetInPort( 'DoLoop' )
+    IEndLoopGatesIndex = EndLoopGates.GetInPort( 'Index' )
+    IEndLoopGatesMax = EndLoopGates.GetInPort( 'Max' )
+    IEndLoopGatesMin = EndLoopGates.GetInPort( 'Min' )
+    IEndLoopGatesGate = EndLoopGates.GetInPort( 'Gate' )
+    OEndLoopGatesDoLoop = EndLoopGates.GetOutPort( 'DoLoop' )
+    OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    OEndLoopGatesGate = EndLoopGates.GetOutPort( 'Gate' )
+    LoopGates.SetName( 'LoopGates' )
+    LoopGates.SetAuthor( '' )
+    LoopGates.SetComment( 'Compute Node' )
+    LoopGates.Coords( 13 , 236 )
+    
+    # Creation of Switch Nodes
+    PySwitchGates = []
+    PySwitchGates.append( 'def SwitchGates(Index) :    ' )
+    PySwitchGates.append( '    Odd = 0    ' )
+    PySwitchGates.append( '    Even = 0    ' )
+    PySwitchGates.append( '    default = 0 ' )
+    PySwitchGates.append( '    if Index > 0 :  ' )
+    PySwitchGates.append( '        if (Index & 1) == 1 :    ' )
+    PySwitchGates.append( '            Odd = 1    ' )
+    PySwitchGates.append( '        if (Index & 1) == 0 :    ' )
+    PySwitchGates.append( '            Even = 1    ' )
+    PySwitchGates.append( '    else : ' )
+    PySwitchGates.append( '        default = 1 ' )
+    PySwitchGates.append( '    return Odd,Even,default ' )
+    SwitchGates,EndSwitchGates = GraphSwitchGatesdefaultBranch.SNode( 'SwitchGates' , PySwitchGates )
+    EndSwitchGates.SetName( 'EndSwitchGates' )
+    EndSwitchGates.SetAuthor( '' )
+    EndSwitchGates.SetComment( 'Compute Node' )
+    EndSwitchGates.Coords( 647 , 272 )
+    PyEndSwitchGates = []
+    PyEndSwitchGates.append( 'from time import * ' )
+    PyEndSwitchGates.append( 'def EndSwitchGates() : ' )
+    PyEndSwitchGates.append( '    sleep(1) ' )
+    PyEndSwitchGates.append( '    return ' )
+    PyEndSwitchGates.append( '' )
+    EndSwitchGates.SetPyFunction( 'EndSwitchGates' , PyEndSwitchGates )
+    IEndSwitchGatesDefault = EndSwitchGates.GetInPort( 'Default' )
+    OEndSwitchGatesGate = EndSwitchGates.GetOutPort( 'Gate' )
+    SwitchGates.SetName( 'SwitchGates' )
+    SwitchGates.SetAuthor( '' )
+    SwitchGates.SetComment( 'Compute Node' )
+    SwitchGates.Coords( 204 , 236 )
+    ISwitchGatesIndex = SwitchGates.InPort( 'Index' , 'long' )
+    ISwitchGatesGate = SwitchGates.GetInPort( 'Gate' )
+    OSwitchGatesOdd = SwitchGates.OutPort( 'Odd' , 'long' )
+    OSwitchGatesEven = SwitchGates.OutPort( 'Even' , 'long' )
+    OSwitchGatesdefault = SwitchGates.OutPort( 'default' , 'long' )
+    OSwitchGatesDefault = SwitchGates.GetOutPort( 'Default' )
+    
+    # Creation of Links
+    LLoopGatesIndexEndLoopGatesIndex = GraphSwitchGatesdefaultBranch.Link( OLoopGatesIndex , IEndLoopGatesIndex )
+    
+    LLoopGatesIndexSwitchGatesIndex = GraphSwitchGatesdefaultBranch.Link( OLoopGatesIndex , ISwitchGatesIndex )
+    
+    LLoopGatesMaxEndLoopGatesMax = GraphSwitchGatesdefaultBranch.Link( OLoopGatesMax , IEndLoopGatesMax )
+    
+    LLoopGatesMinEndLoopGatesMin = GraphSwitchGatesdefaultBranch.Link( OLoopGatesMin , IEndLoopGatesMin )
+    
+    LSwitchGatesOddIsOddGate = GraphSwitchGatesdefaultBranch.Link( OSwitchGatesOdd , IIsOddGate )
+    
+    LSwitchGatesEvenIsEvenGate = GraphSwitchGatesdefaultBranch.Link( OSwitchGatesEven , IIsEvenGate )
+    
+    LSwitchGatesdefaultdefaultNodeGate = GraphSwitchGatesdefaultBranch.Link( OSwitchGatesdefault , IdefaultNodeGate )
+    
+    LEndSwitchGatesGateEndLoopGatesGate = GraphSwitchGatesdefaultBranch.Link( OEndSwitchGatesGate , IEndLoopGatesGate )
+    
+    LIsOddGateEndSwitchGatesDefault = GraphSwitchGatesdefaultBranch.Link( OIsOddGate , IEndSwitchGatesDefault )
+    
+    LIsEvenGateEndSwitchGatesDefault = GraphSwitchGatesdefaultBranch.Link( OIsEvenGate , IEndSwitchGatesDefault )
+    
+    LdefaultNodeGateEndSwitchGatesDefault = GraphSwitchGatesdefaultBranch.Link( OdefaultNodeGate , IEndSwitchGatesDefault )
+    
+    # Input datas
+    ILoopGatesIndex.Input( 0 )
+    ILoopGatesMax.Input( 13 )
+    ILoopGatesMin.Input( -7 )
+    
+    # Output Ports of the graph
+    #OEndLoopGatesIndex = EndLoopGates.GetOutPort( 'Index' )
+    #OEndLoopGatesMax = EndLoopGates.GetOutPort( 'Max' )
+    #OEndLoopGatesMin = EndLoopGates.GetOutPort( 'Min' )
+    return GraphSwitchGatesdefaultBranch
+
+
+GraphSwitchGatesdefaultBranch = DefGraphSwitchGatesdefaultBranch()
diff --git a/examples/GraphSwitchGatesdefaultBranch.xml b/examples/GraphSwitchGatesdefaultBranch.xml
new file mode 100644 (file)
index 0000000..811665e
--- /dev/null
@@ -0,0 +1,399 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GraphSwitchGatesdefaultBranch</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GraphSwitchGatesdefaultBranch</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>LoopGates__Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>EndLoopGates__Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>16/2/2005 - 10:40:8</creation-date>
+    <lastmodification-date>16/2/2005 - 15:13:4</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>JR</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>LoopGates</node-name>
+    <kind>4</kind>
+    <coupled-node>EndLoopGates</coupled-node>
+    <service>
+<service-name>LoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>InitLoop</FuncName>
+      <PyFunc><![CDATA[def InitLoop(Index,Max,Min) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Max   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min    ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>MoreLoop</FuncName>
+      <PyFunc><![CDATA[from time import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def MoreLoop(Index,Max,Min) :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    DoLoop = 0   ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index >= Min :   ]]></PyFunc>
+      <PyFunc><![CDATA[        DoLoop = 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return DoLoop,Index,Max,Min ]]></PyFunc>     </PyFunction>
+     <PyFunction>
+<FuncName>NextLoop</FuncName>
+      <PyFunc><![CDATA[def  NextLoop(Index,Max,Min) :   ]]></PyFunc>
+      <PyFunc><![CDATA[    Index = Index - 1   ]]></PyFunc>
+      <PyFunc><![CDATA[    return Index,Max,Min   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:4:47</creation-date>
+    <lastmodification-date>16/2/2005 - 15:4:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>13</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndLoopGates</node-name>
+    <kind>5</kind>
+    <coupled-node>LoopGates</coupled-node>
+    <service>
+<service-name>EndLoopGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Max</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Min</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Index</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Max</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Min</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndLoopGates</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:4:47</creation-date>
+    <lastmodification-date>16/2/2005 - 15:4:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>875</x-position>
+    <y-position>216</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>SwitchGates</node-name>
+    <kind>6</kind>
+    <coupled-node>EndSwitchGates</coupled-node>
+    <service>
+<service-name>SwitchGates</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Index</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Odd</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>Even</outParameter-name>      </outParameter>
+      <outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>default</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>SwitchGates</FuncName>
+      <PyFunc><![CDATA[def SwitchGates(Index) :    ]]></PyFunc>
+      <PyFunc><![CDATA[    Odd = 0    ]]></PyFunc>
+      <PyFunc><![CDATA[    Even = 0    ]]></PyFunc>
+      <PyFunc><![CDATA[    default = 0 ]]></PyFunc>
+      <PyFunc><![CDATA[    if Index > 0 :  ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 1 :    ]]></PyFunc>
+      <PyFunc><![CDATA[            Odd = 1    ]]></PyFunc>
+      <PyFunc><![CDATA[        if (Index & 1) == 0 :    ]]></PyFunc>
+      <PyFunc><![CDATA[            Even = 1    ]]></PyFunc>
+      <PyFunc><![CDATA[    else : ]]></PyFunc>
+      <PyFunc><![CDATA[        default = 1 ]]></PyFunc>
+      <PyFunc><![CDATA[    return Odd,Even,default ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:4:47</creation-date>
+    <lastmodification-date>16/2/2005 - 15:4:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>204</x-position>
+    <y-position>236</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>EndSwitchGates</node-name>
+    <kind>7</kind>
+    <coupled-node>SwitchGates</coupled-node>
+    <service>
+<service-name>EndSwitchGates</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>EndSwitchGates</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def EndSwitchGates() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return ]]></PyFunc>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:4:47</creation-date>
+    <lastmodification-date>16/2/2005 - 15:4:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>647</x-position>
+    <y-position>272</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsOdd</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsOdd</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsOdd</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsOdd() : ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:4:47</creation-date>
+    <lastmodification-date>16/2/2005 - 15:4:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>424</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>IsEven</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>IsEven</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>IsEven</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def IsEven() :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:4:47</creation-date>
+    <lastmodification-date>16/2/2005 - 15:4:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>428</x-position>
+    <y-position>345</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>defaultNode</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>defaultNode</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>defaultNode</FuncName>
+      <PyFunc><![CDATA[from time import * ]]></PyFunc>
+      <PyFunc><![CDATA[def defaultNode() :  ]]></PyFunc>
+      <PyFunc><![CDATA[    sleep(1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>16/2/2005 - 15:12:49</creation-date>
+    <lastmodification-date>16/2/2005 - 15:12:49</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>425</x-position>
+    <y-position>232</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Index</fromserviceparameter-name>
+    <tonode-name>SwitchGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Max</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>LoopGates</fromnode-name>
+    <fromserviceparameter-name>Min</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndLoopGates</fromnode-name>
+    <fromserviceparameter-name>DoLoop</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>DoLoop</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Odd</fromserviceparameter-name>
+    <tonode-name>IsOdd</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>Even</fromserviceparameter-name>
+    <tonode-name>IsEven</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SwitchGates</fromnode-name>
+    <fromserviceparameter-name>default</fromserviceparameter-name>
+    <tonode-name>defaultNode</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>EndSwitchGates</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndLoopGates</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsOdd</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>IsEven</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>defaultNode</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>EndSwitchGates</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GraphSwitchGatesdefaultBranch</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Index</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Index</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesdefaultBranch</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Max</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Max</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>13</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphSwitchGatesdefaultBranch</fromnode-name>
+    <fromserviceparameter-name>LoopGates__Min</fromserviceparameter-name>
+    <tonode-name>LoopGates</tonode-name>
+    <toserviceparameter-name>Min</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>-7</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
index e1f588daf8b8ab27b5c65aaa36758b4a4035263c..3c07542758896370be3a48641c893a6971921003 100644 (file)
@@ -118,12 +118,12 @@ def DefGraphSwitchNOTValid() :
     
     LSwitchOddIsOddGate = GraphSwitchNOTValid.Link( OSwitchOdd , IIsOddGate )
     
+    LSwitchEvenEndOfSwitchDefault = GraphSwitchNOTValid.Link( OSwitchEven , IEndOfSwitchDefault )
+    
     LSwitchaIsOdda = GraphSwitchNOTValid.Link( OSwitcha , IIsOdda )
     LSwitchaIsOdda.AddCoord( 1 , 375 , 136 )
     LSwitchaIsOdda.AddCoord( 2 , 375 , 201 )
     
-    LSwitchaEndOfSwitcha = GraphSwitchNOTValid.Link( OSwitcha , IEndOfSwitcha )
-    
     LSwitchDefaultEndOfSwitchDefault = GraphSwitchNOTValid.Link( OSwitchDefault , IEndOfSwitchDefault )
     
     LEndOfSwitchaEndOfInitLoopIndex = GraphSwitchNOTValid.Link( OEndOfSwitcha , IEndOfInitLoopIndex )
@@ -137,7 +137,6 @@ def DefGraphSwitchNOTValid() :
     #OEndOfInitLoopIndex = EndOfInitLoop.GetOutPort( 'Index' )
     #OEndOfInitLoopMin = EndOfInitLoop.GetOutPort( 'Min' )
     #OEndOfInitLoopMax = EndOfInitLoop.GetOutPort( 'Max' )
-    #OSwitchEven = Switch.GetOutPort( 'Even' )
     return GraphSwitchNOTValid
 
 
index 4cbd8c7fa13976834cedd955e1946e50bb25f2db..933e9eae1518961dc455fb4ec5c182103ea5d0a0 100644 (file)
        <outParameter-name>EndOfInitLoop__Min</outParameter-name>      </outParameter>
       <outParameter>
 <outParameter-type>long</outParameter-type>
-       <outParameter-name>EndOfInitLoop__Max</outParameter-name>      </outParameter>
-      <outParameter>
-<outParameter-type>int</outParameter-type>
-       <outParameter-name>Switch__Even</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+       <outParameter-name>EndOfInitLoop__Max</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
     <creation-date>1/10/2003 - 17:12:48</creation-date>
-    <lastmodification-date>15/2/2005 - 9:51:57</lastmodification-date>
+    <lastmodification-date>16/2/2005 - 15:19:14</lastmodification-date>
     <editor-release>1.05</editor-release>
     <author>JR</author>
     <container>?</container>
@@ -69,8 +66,8 @@
       <PyFunc><![CDATA[    print a,"IsOdd (GraphSwitch1)"      ]]></PyFunc>
       <PyFunc><![CDATA[    sleep( 1 )   ]]></PyFunc>
       <PyFunc><![CDATA[    return a     ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>15/2/2005 - 9:51:57</creation-date>
-    <lastmodification-date>15/2/2005 - 9:51:57</lastmodification-date>
+    <creation-date>16/2/2005 - 15:16:28</creation-date>
+    <lastmodification-date>16/2/2005 - 15:16:28</lastmodification-date>
     <editor-release>1.05</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[def NextLoop(Index,Min,Max) :     ]]></PyFunc>
       <PyFunc><![CDATA[        Index = Index + 1     ]]></PyFunc>
       <PyFunc><![CDATA[        return Index,Min,Max     ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>15/2/2005 - 9:51:57</creation-date>
-    <lastmodification-date>15/2/2005 - 9:51:57</lastmodification-date>
+    <creation-date>16/2/2005 - 15:16:28</creation-date>
+    <lastmodification-date>16/2/2005 - 15:16:28</lastmodification-date>
     <editor-release>1.05</editor-release>
     <author>?</author>
     <container>?</container>
 <PyFunction>
 <FuncName>?</FuncName>
       <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>15/2/2005 - 9:51:57</creation-date>
-    <lastmodification-date>15/2/2005 - 9:51:57</lastmodification-date>
+    <creation-date>16/2/2005 - 15:16:28</creation-date>
+    <lastmodification-date>16/2/2005 - 15:16:28</lastmodification-date>
     <editor-release>1.05</editor-release>
     <author>?</author>
     <container>?</container>
       <PyFunc><![CDATA[    if ( a & 1 ) == 0 :  ]]></PyFunc>
       <PyFunc><![CDATA[        sleep(1)  ]]></PyFunc>
       <PyFunc><![CDATA[    return a & 1,1-(a&1),a    ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>15/2/2005 - 9:51:57</creation-date>
-    <lastmodification-date>15/2/2005 - 9:51:57</lastmodification-date>
+    <creation-date>16/2/2005 - 15:16:28</creation-date>
+    <lastmodification-date>16/2/2005 - 15:16:28</lastmodification-date>
     <editor-release>1.05</editor-release>
     <author>?</author>
     <container>?</container>
 <PyFunction>
 <FuncName>?</FuncName>
       <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>15/2/2005 - 9:51:57</creation-date>
-    <lastmodification-date>15/2/2005 - 9:51:57</lastmodification-date>
+    <creation-date>16/2/2005 - 15:16:28</creation-date>
+    <lastmodification-date>16/2/2005 - 15:16:28</lastmodification-date>
     <editor-release>1.05</editor-release>
     <author>?</author>
     <container>?</container>
     <toserviceparameter-name>Gate</toserviceparameter-name>
     <coord-list/>   </link>
    <link>
+<fromnode-name>Switch</fromnode-name>
+    <fromserviceparameter-name>Even</fromserviceparameter-name>
+    <tonode-name>EndOfSwitch</tonode-name>
+    <toserviceparameter-name>Default</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
 <fromnode-name>Switch</fromnode-name>
     <fromserviceparameter-name>a</fromserviceparameter-name>
     <tonode-name>IsOdd</tonode-name>
 <x>375</x>
       <y>201</y>     </coord>    </coord-list>   </link>
    <link>
-<fromnode-name>Switch</fromnode-name>
-    <fromserviceparameter-name>a</fromserviceparameter-name>
-    <tonode-name>EndOfSwitch</tonode-name>
-    <toserviceparameter-name>a</toserviceparameter-name>
-    <coord-list/>   </link>
-   <link>
 <fromnode-name>Switch</fromnode-name>
     <fromserviceparameter-name>Default</fromserviceparameter-name>
     <tonode-name>EndOfSwitch</tonode-name>