1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 Ce module contient la classe PROC_ETAPE qui sert à vérifier et à exécuter
28 import types,sys,string
32 import N_MCCOMPO, N_ETAPE
33 from N_Exception import AsException
36 class PROC_ETAPE(N_ETAPE.ETAPE):
38 Cette classe hérite de ETAPE. La seule différence porte sur le fait
39 qu'une procédure n'a pas de concept produit
43 def __init__(self, oper=None, reuse=None, args={}):
46 - definition : objet portant les attributs de définition d'une étape de type opérateur. Il
47 est initialisé par l'argument oper.
48 - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args.
49 - reuse : forcément None pour une PROC
51 N_ETAPE.ETAPE.__init__(self, oper, reuse=None, args=args, niveau=5)
56 Cette methode applique la fonction op_init au contexte du parent
57 et lance l'exécution en cas de traitement commande par commande
58 Elle doit retourner le concept produit qui pour une PROC est toujours None
59 En cas d'erreur, elle leve une exception : AsException ou EOFError
61 if not self.isactif():return
64 if type(self.definition.op_init) == types.FunctionType:
65 apply(self.definition.op_init,(self,self.parent.g_context))
69 raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
70 'fichier : ',self.appel[1],e)
74 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
75 raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
76 'fichier : ',self.appel[1]+'\n',
84 Méthode qui supprime toutes les références arrières afin que l'objet puisse
85 etre correctement détruit par le garbage collector
87 N_MCCOMPO.MCCOMPO.supprime(self)
91 def accept(self,visitor):
93 Cette methode permet de parcourir l'arborescence des objets
94 en utilisant le pattern VISITEUR
96 visitor.visitPROC_ETAPE(self)
98 def update_context(self,d):
100 Met à jour le contexte de l'appelant passé en argument (d)
101 Une PROC_ETAPE n ajoute pas directement de concept dans le contexte
102 Seule une fonction enregistree dans op_init pourrait le faire
104 if type(self.definition.op_init) == types.FunctionType:
105 apply(self.definition.op_init,(self,d))