# import de modules Python
import string,types
+from math import *
# import de modules Eficas
from Noyau.N_CR import CR
def __init__(self,nom,valeur=None):
# parent ne peut être qu'un objet de type JDC
+ self.dict_valeur=[]
self.valeur = self.interprete_valeur(valeur)
self.val=valeur
self.nom = nom
self.state='undetermined'
self.register()
+ def __getitem__(self,key):
+ param_item=ITEM_PARAMETRE(self,key)
+ return param_item
+
+ def __neg__(self):
+ try:
+ return -1*self.valeur
+ except:
+ print "******* Probleme : pas de valeur négative"
+ return None
+
+ def __add__(self,a):
+ try :
+ return self.valeur+a.valeur
+ except :
+ print "******* Probleme : a l addition"
+ return None
+
+ def __radd__(self,a):
+ try :
+ return self.valeur+a.valeur
+ except :
+ print "******* Probleme : a l addition"
+ return None
+
+ def __sub__(self,a):
+ try :
+ return self.valeur - a.valeur
+ except :
+ print "******* Probleme : a la soustraction"
+ return None
+
+ def __rsub__(self,a):
+ try :
+ return a.valeur - self.valeur
+ except :
+ print "******* Probleme : a la soustraction"
+ return None
+
+ def __mul__(self,a):
+ try :
+ return self.valeur*a.valeur
+ except :
+ print "******* Probleme : a la multiplication"
+ return None
+
+ def __rmul__(self,a):
+ try :
+ return self.valeur*a.valeur
+ except :
+ print "******* Probleme : a la multiplication"
+ return None
+
+ def __mul__(self,a):
+ try :
+ return self.valeur*a.valeur
+ except :
+ print "******* Probleme : a la multiplication"
+ return None
+
+ def __rmul__(self,a):
+ try :
+ return self.valeur*a.valeur
+ except :
+ print "******* Probleme : a la multiplication"
+ return None
+
+ def __add__(self,other):
+ try :
+ return self.valeur+other
+ except :
+ print "******* Probleme : a l addition"
+ return None
+
+ def __radd__(self,other):
+ try :
+ return self.valeur+other
+ except :
+ print "******* Probleme : a l addition"
+ return None
+
+ def __sub__(self,other):
+ try :
+ return self.valeur - other
+ except :
+ print "******* Probleme : a la soustraction"
+ return None
+
+ def __rsub__(self,other):
+ try :
+ return other - self.valeur
+ except :
+ print "******* Probleme : a la soustraction"
+ return None
+
+ def __mul__ (self,other):
+ retour=None
+ try :
+ retour = eval(self.valeur) * other
+ except :
+ try :
+ retour = self.valeur * other
+ except :
+ print "******* Probleme : a la multiplication"
+ return retour
+
+ def __rmul__ (self,other):
+ retour=None
+ try :
+ retour = eval(self.valeur) * other
+ except :
+ try :
+ retour = self.valeur * other
+ except :
+ print "******* Probleme : a la multiplication"
+ return retour
+
+
def interprete_valeur(self,val):
"""
Essaie d'interpréter val (chaîne de caractères)comme :
valeur = eval(val)
except:
pass
+ #PN je n ose pas modifier je rajoute
if valeur != None :
if type(valeur) == types.TupleType:
l_new_val = []
#print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
#print 'on trouve : ',str(valeur),' de type : ',type(valeur)
# on retourne val comme une string car on n'a pas su l'interpréter
+ if valeur != None :
+ if type(valeur).__name__ == 'list':
+ self.dict_valeur=[]
+ for i in range(len(valeur)):
+ self.dict_valeur.append(valeur[i])
return val
+ def get_valeurs(self):
+ valeurretour=[]
+ if self.dict_valeur != []:
+ for val in self.dict_valeur:
+ valeurretour.append(val)
+ else:
+ valeurretour.append(self.valeur)
+ return valeurretour
+
def set_valeur(self,new_valeur):
"""
Remplace la valeur de self par new_valeur interprétée
+class ITEM_PARAMETRE :
+ def __init__(self,param_pere,item=None):
+ self.param_pere = param_pere
+ self.item = item
+
+ def __repr__(self):
+ return self.param_pere.nom+'['+str(self.item)+']'
+
+
+ def isvalid(self):
+ isvalid = 1
+ if self.item < 0:
+ isvalid = 0
+ try:
+ longueur= len(self.param_pere.dict_valeur) - 1
+ except:
+ longueur=0
+ if self.item > longueur :
+ isvalid= 0
+ return isvalid