Salome HOME
Merge from BR_V5_DEV 17Feb09
[samples/component.git] / src / FactorialComponent / FactorialComponent.py
1 #! /usr/bin/env python
2 #  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 #  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 #  This library is free software; you can redistribute it and/or
8 #  modify it under the terms of the GNU Lesser General Public
9 #  License as published by the Free Software Foundation; either
10 #  version 2.1 of the License.
11 #
12 #  This library is distributed in the hope that it will be useful,
13 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 #  Lesser General Public License for more details.
16 #
17 #  You should have received a copy of the GNU Lesser General Public
18 #  License along with this library; if not, write to the Free Software
19 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23 #  SuperVisionTest FactorialComponent : example of component that calculates factorial
24 #  File   : FactorialComponent.py
25 #  Author : 
26 #  Module : SuperVisionTest
27 #  $Header$
28 #
29 import sys
30 from omniORB import CORBA, PortableServer
31 import CosNaming
32 import Engines, Engines__POA
33 import SuperVisionTest, SuperVisionTest__POA
34 from SALOME_ComponentPy import *
35
36 from FactorialComponent_idl import *
37
38 class FactorialComponent( SuperVisionTest__POA.FactorialComponent, SALOME_ComponentPy_i):
39
40     def eval(self, val):
41         self.beginService( 'FactorialComponent eval' )
42         print "eval :",val
43         if (val < 0):
44             raise ArgumentError("factorial must be positive, not " + `val`)
45         if (val < 2):
46             print "eval return",val
47             self.sendMessage( NOTIF_STEP , "Done" )
48             self.endService( 'FactorialComponent eval' )
49             return val
50         else:
51             val1 = self.eval(val-1)
52             self.sendMessage( NOTIF_TRACE , "One More Time" )
53             print "eval return",val," * ",val1
54             return val * val1
55     
56     def sigma(self, val):
57         self.beginService( 'FactorialComponent sigma' )
58         print "sigma :",val
59         if (val < 0):
60             raise ArgumentError("sigma must be positive, not " + `val`)
61         i = 0
62         while i < 10000 :
63             n = 1
64             s = 0
65             while n <= val :
66                 s = s + n
67                 n = n + 1
68             i = i + 1
69         print "sigma returns",s
70         self.endService( 'FactorialComponent sigma' )
71         return s
72     
73     def __init__(self, orb, poa, this, containerName, instanceName, interfaceName):
74         SALOME_ComponentPy_i.__init__(self, orb, poa, this, containerName,
75                                       instanceName, interfaceName, 0)
76         print "FactorialComponent::__init__"
77