Salome HOME
CCAR: mise en coherence de Build_sd de mACRO_ETAPE avec celle de ETAPE
[tools/eficas.git] / Exemples / cyclops / main.py
1 """
2    Vérification des cycles de références d'objets dans Accas
3
4    Cet exemple met en oeuvre plusieurs éléments de définition et
5    après l'opération de vérification du dictionnaire d
6    et l'appel à la méthode supprime de l'objet o 
7    exécute l'utilitaire Cyclops pour vérifier qu'il ne reste plus
8    de cycles de références.
9 """
10
11 import sys
12 sys.path[:0]=['../..','../../..']
13
14 from Accas import SIMP,FACT,BLOC
15 from Accas import AU_MOINS_UN
16
17 # Construction objet de définition
18
19 cata= FACT(mcf1=FACT(a=SIMP(typ='I'),b=SIMP(typ='I')),
20            mcf2=FACT(c=SIMP(typ='I'),d=SIMP(typ='I')),
21            a    =SIMP(typ='I'),
22            bloc1=BLOC(condition="a==1",
23                        c=SIMP(typ='I'),
24                        d=SIMP(typ='I')
25                      ),
26            sect3=FACT(c=SIMP(typ='I'),d=SIMP(typ='I')),
27            regles=AU_MOINS_UN('sect3'),
28           )
29
30 # Vérification objet de définition
31 cr=cata.report()
32 if cr.estvide():
33    print "L'objet de définition est valide "
34 else:
35    print cr
36
37
38 d= {'mcf1':{'a':1,'b':2},
39     'mcf2':({'c':3},{'c':5}),
40     'sect3':{'c':3,'d':5},
41     'a':1,
42     'c':2,
43    }
44
45 # Création de l'objet MCFACT de nom mcf1
46 o=cata(d,'mcf1',None)
47 # Vérification objet MCFACT
48 cr= o.report()
49 if cr.estvide():
50    print "L'objet MCFACT basé sur le dictionnaire %s est valide " % d
51 else:
52    print "L'objet MCFACT basé sur le dictionnaire %s n'est pas valide " % d
53    print cr
54
55 o.supprime()
56
57 def testcycle():
58    """
59        Cette fonction permet de détecter les cycles de références entre objets
60        à l'aide du module Cyclops
61    """
62    from Misc import Cyclops
63    global o,cr,cata
64    z=Cyclops.CycleFinder()
65    z.register(o)
66    z.register(cata)
67    del o,cr,cata
68    z.find_cycles()
69    z.show_stats()
70    z.show_cycles()
71    z.show_cycleobjs()
72    z.show_sccs()
73    z.show_arcs()
74    print "dead root set objects:"
75    for rc, cyclic, x in z.get_rootset():
76       if rc == 0:
77          z.show_obj(x)
78    z.find_cycles(1)
79    z.show_stats()
80
81 testcycle()
82