1 #@ MODIF N_MCLIST Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 Ce module contient la classe MCList qui sert à controler la valeur
23 d'une liste de mots-clés facteur par rapport à sa définition portée par un objet
29 class MCList(UserList.UserList):
30 """ Liste semblable a la liste Python
31 mais avec quelques methodes en plus
35 def init(self,nom,parent):
36 self.definition = None
40 self.jdc = self.parent.jdc
41 self.niveau = self.parent.niveau
42 self.etape = self.parent.etape
44 # Le mot cle a été créé sans parent
51 Retourne la "valeur" d'un objet MCList. Sert à construire
52 un contexte d'évaluation pour une expression Python.
53 On retourne l'objet lui-meme.
59 Une autre méthode qui retourne une "autre" valeur d'une MCList
60 Elle est utilisée par la méthode get_mocle
66 Méthode qui supprime toutes les références arrières afin que l'objet puisse
67 etre correctement détruit par le garbage collector
73 for child in self.data :
76 def get_child(self,name):
78 Retourne le fils de nom name s'il est contenu dans self
79 Par défaut retourne le fils du premier de la liste
82 # Phase 1 : on cherche dans les fils directs de obj
83 for child in obj.mc_liste :
84 if child.nom == name: return child
85 # Phase 2 : on cherche dans les blocs de self
86 for child in obj.mc_liste:
88 resu = child.get_child(name)
89 if resu != None : return resu
90 # Phase 3 : on cherche dans les entites possibles pour les défauts
91 for k,v in obj.definition.entites.items():
92 #if k == name: return v.defaut
94 if v.defaut != None : return v(None,k,None)
95 # si on passe ici, c'est que l'on demande un fils qui n'est pas possible --> erreur
96 #print "Erreur : %s ne peut etre un descendant de %s" %(name,self.nom)
101 Indique si l'objet est de type BLOC
105 def accept(self,visitor):
107 Cette methode permet de parcourir l'arborescence des objets
108 en utilisant le pattern VISITEUR
110 visitor.visitMCList(self)