Discussion:
Decimal fixed point, attribut small.
(trop ancien pour répondre)
Blady
2017-12-09 16:43:05 UTC
Permalink
Bonjour,

Avec un type "decimal fixed point", je souhaite définir le "small" égal
au "delta".
La compilation GNAT est ok avec le code suivant :
type Frational_Range_Type is delta 0.001 range 0.0 .. 1.0;
for Frational_Range_Type'Small use 0.001;

Pourtant, si je mets le code suivant comme indiqué au § 10.5 (page 433)
du livre "Programming with Ada 2012" de John Barnes, j'ai une erreur :
type Frational_Range_Type is delta 0.001 range 0.0 .. 1.0;
for Frational_Range_Type'Small use Frational_Range_Type'Delta;
gnoga-types.ads:82:04: representation item appears too late
gnoga-types.ads:82:04: warning: no more representation items for type
"Frational_Range_Type" defined at line 81

Pour l'attribut Small, le RM indique "the expression of such a clause
shall be static." mais pas que l'attribut Delta est statique ou non.

Est-ce un problème de GNAT ?

Merci pour votre aide, Pascal.
http://blady.pagesperso-orange.fr
J-P. Rosen
2017-12-11 12:10:22 UTC
Permalink
Post by Blady
Avec un type "decimal fixed point", je souhaite définir le "small" égal
au "delta".
   type Frational_Range_Type is delta 0.001 range 0.0 .. 1.0;
   for Frational_Range_Type'Small use 0.001;
Remarque au passage: ceci est un point fixe ordinaire dont le 'Small est
une puissance de 10, pas un point fixe décimal, qui serait:
type Frational_Range_Type is delta 0.001 digits 4;
(et la clause de représenation serait inutile)
Post by Blady
Pourtant, si je mets le code suivant comme indiqué au § 10.5 (page 433)
   type Frational_Range_Type is delta 0.001 range 0.0 .. 1.0;
   for Frational_Range_Type'Small use Frational_Range_Type'Delta;
gnoga-types.ads:82:04: representation item appears too late
gnoga-types.ads:82:04: warning: no more representation items for type
"Frational_Range_Type" defined at line 81
Pour l'attribut Small, le RM indique "the expression of such a clause
shall be static." mais pas que l'attribut Delta est statique ou non.
Est-ce un problème de GNAT ?
Encore une victime des "Freezing rules"!
L'utilisation d'un attribut de représentation ('Delta) gèle le type. Une
fois le type gelé, on ne peut plus spécifier d'attribut de
représentation. Sinon on aurait le droit d'écrire:
for Frational_Range_Type'Delta use Frational_Range_Type'Delta;
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Continuer la lecture sur narkive:
Loading...