1 #@ MODIF N_CONVERT Noyau DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE COURTOIS M.COURTOIS
4 # CONFIGURATION MANAGEMENT OF EDF VERSION
5 # ======================================================================
6 # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG
7 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
8 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
9 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
10 # (AT YOUR OPTION) ANY LATER VERSION.
12 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
13 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
14 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
15 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
17 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
18 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
19 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
23 Module de conversion des valeurs saisies par l'utilisateur après vérification.
26 from N_types import is_int, is_float, is_enum
29 def has_int_value(real):
30 """Est-ce que 'real' a une valeur entière ?
32 return abs(int(real) - real) < 1.e-12
36 """Conversion de type.
38 def __init__(self, name, typ):
42 def convert(self, obj):
45 in_as_enum = is_enum(obj)
51 result.append(self.function(o))
56 # ne marche pas avec MACR_RECAL qui attend une liste et non un tuple
59 def function(self, o):
60 raise NotImplementedError, 'cette classe doit être dérivée'
63 class TypeConversion(Conversion):
66 def __init__(self, typ):
67 Conversion.__init__(self, 'type', typ)
70 class IntConversion(TypeConversion):
71 """Conversion en entier
74 TypeConversion.__init__(self, 'I')
76 def function(self, o):
77 if is_float(o) and has_int_value(o):
82 class FloatConversion(TypeConversion):
86 TypeConversion.__init__(self, 'R')
88 def function(self, o):
94 _convertI = IntConversion()
95 _convertR = FloatConversion()
97 def ConversionFactory(name, typ):