]> SALOME platform Git repositories - tools/eficas.git/blob - Exemples/cyclops2/main.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Exemples / cyclops2 / main.py
1 # -*- coding: utf-8 -*-
2 """
3    Vérification des cycles de référence d'objets sur 
4    un exemple avec des opérateurs
5 """
6
7 import sys
8 sys.path[:0]=['../..','../../Aster']
9
10 from Accas import SIMP,FACT,OPER,JDC_CATA
11 JdC=JDC_CATA(code="ASTER")
12
13 # Construction objet de définition
14
15 class concept:
16    def __init__(self,etape):
17       self.etape=etape
18    def is_object(sd):
19       """ Retourne 1 si sd est du bon type par rapport à la classe """
20       return 0
21    def supprime(self):
22       self.etape=None
23
24 OP1 = OPER(nom='OP1',op=1,sd_prod=concept,reentrant='f',
25            a=SIMP(typ='I'),
26            c=SIMP(typ='I',position='global'),
27            b=SIMP(typ=concept),
28           )
29
30 # Vérification objet de définition
31 cr=OP1.report()
32 if cr.estvide():
33    print "L'objet de définition est valide "
34 else:
35    print cr
36
37 class context:
38    def __init__(self):
39       self.etapes=[]
40       self.mc_globaux={}
41       self.cata_ordonne_dico=None
42       self.par_lot="OUI"
43       self.UserError="UserError"
44
45    def register(self,etape):
46       self.etapes.append(etape)
47       return self.etapes.index(etape)
48    def get_jdc_root(self):
49       return self
50    def create_sdprod(self,etape,nomsd):
51       sd= etape.get_sd_prod()
52       if sd != None and etape.reuse == None:
53          # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation d un concept
54          sd.nom=nomsd
55       return sd
56
57
58 cont=context()
59 CONTEXT.set_current_step(cont)
60
61 sd=concept(None)
62 # Création de l'objet ETAPE
63 co1=OP1(a=1,b=sd)
64
65 # Vérification objet ETAPE
66 e1=cont.etapes[0]
67 cr= e1.report()
68 if cr.estvide():
69    print "L'objet ETAPE  est valide " 
70 else:
71    print "L'objet ETAPE  n'est pas valide " 
72    print cr
73
74 # Test avec reutilisation de concept
75 co=OP1(reuse=co1,a=1,b=sd)
76 e2=cont.etapes[1]
77 cr= e2.report()
78 if cr.estvide():
79    print "L'objet ETAPE  est valide "
80 else:
81    print "L'objet ETAPE  n'est pas valide "
82    print cr
83
84 e1.supprime()
85 e2.supprime()
86
87 def testcycle():
88    """
89        Cette fonction permet de détecter les cycles de références entre objets
90        à l'aide du module Cyclops
91    """
92    from Misc import Cyclops
93    global e1,e2
94    z=Cyclops.CycleFinder()
95    z.register(e1)
96    z.register(e2)
97    del e1,e2
98    z.find_cycles()
99    z.show_stats()
100    z.show_cycles()
101    z.show_cycleobjs()
102    z.show_sccs()
103    z.show_arcs()
104    print "dead root set objects:"
105    for rc, cyclic, x in z.get_rootset():
106       if rc == 0:
107          z.show_obj(x)
108    z.find_cycles(1)
109    z.show_stats()
110
111 testcycle()
112