+#@ MODIF N_MCBLOC Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+
"""
Ce module contient la classe MCBLOC qui sert à controler la valeur
d'un bloc de mots-clés par rapport à sa définition portée par un objet
"""
dico={}
- for v in self.mc_liste:
- val = v.get_valeur()
- if type(val)==types.DictionaryType:
- for i,w in val.items():
- dico[i]=w
- else :
- dico[v.nom]=val
+ for mocle in self.mc_liste:
+ if mocle.isBLOC():
+ # Si mocle est un BLOC, on inclut ses items dans le dictionnaire
+ # représentatif de la valeur de self. Les mots-clés fils de blocs sont
+ # donc remontés au niveau supérieur.
+ dico.update(mocle.get_valeur())
+ else:
+ dico[mocle.nom]=mocle.get_valeur()
+
+ # On rajoute tous les autres mots-clés locaux possibles avec la valeur
+ # par défaut ou None
+ # Pour les mots-clés facteurs, on ne traite que ceux avec statut défaut ('d')
+ # et caché ('c')
+ # On n'ajoute aucune information sur les blocs. Ils n'ont pas de défaut seulement
+ # une condition.
+ for k,v in self.definition.entites.items():
+ if not dico.has_key(k):
+ if v.label == 'SIMP':
+ # Mot clé simple
+ dico[k]=v.defaut
+ elif v.label == 'FACT':
+ if v.statut in ('c','d') :
+ # Mot clé facteur avec défaut ou caché provisoire
+ dico[k]=v(val=None,nom=k,parent=self)
+ # On demande la suppression des pointeurs arrieres
+ # pour briser les eventuels cycles
+ dico[k].supprime()
+ else:
+ dico[k]=None
+
return dico
-
+
def isBLOC(self):
"""
Indique si l'objet est un BLOC
"""
visitor.visitMCBLOC(self)
+ def makeobjet(self):
+ return self.definition(val = None, nom = self.nom,parent = self.parent)