2 Vérification des cycles de référence d'objets sur
3 un exemple avec des opérateurs
7 sys.path[:0]=['../..','../../..']
9 from Accas import SIMP,FACT,OPER
11 # Construction objet de définition
14 def __init__(self,etape):
17 """ Retourne 1 si sd est du bon type par rapport à la classe """
22 OP1 = OPER(nom='OP1',op=1,sd_prod=concept,reentrant='f',
24 c=SIMP(typ='I',position='global'),
28 # Vérification objet de définition
31 print "L'objet de définition est valide "
39 self.cata_ordonne_dico=None
42 def register(self,etape):
43 self.etapes.append(etape)
44 return self.etapes.index(etape)
45 def get_jdc_root(self):
47 def create_sdprod(self,etape,nomsd):
48 sd= etape.get_sd_prod()
49 if sd != None and etape.reuse == None:
50 # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation d un concept
56 CONTEXT.set_current_step(cont)
59 # Création de l'objet ETAPE
62 # Vérification objet ETAPE
66 print "L'objet ETAPE est valide "
68 print "L'objet ETAPE n'est pas valide "
71 # Test avec reutilisation de concept
72 co=OP1(reuse=co1,a=1,b=sd)
76 print "L'objet ETAPE est valide "
78 print "L'objet ETAPE n'est pas valide "
86 Cette fonction permet de détecter les cycles de références entre objets
87 à l'aide du module Cyclops
89 from Misc import Cyclops
91 z=Cyclops.CycleFinder()
101 print "dead root set objects:"
102 for rc, cyclic, x in z.get_rootset():