Post by ThomasPost by J-P. RosenIl n'y a pas de miracle ni de magie en Ada, juste des déclarations et
des règles de visibilité. Quand on déclare le type t_couleurs, le
compilateur déclare automatiquement une fonction dont le nom est
t_couleurs'Pos. C'est cette fonction qui est appelée. Quelle déclaration
correspondrait à la syntaxe couleur'pos?
(c'est pas clair mais heureusement t'as expliqué dans le msg suivant)
http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-K-2.html
si je comprend bien,
"X'Image denotes the result of calling function S'Image"
n'a pas exactement la même signification que
"S'Image denotes a function with the following specification"
non, X'Image provoque l'appel de la fonction, et dénote le résultat.
S'Image est la fonction elle-même (il faut l'appeler), on peut très bien
par exemple la passer à une instanciation de générique
Post by Thomashttps://gcc.gnu.org/onlinedocs/gcc-10.3.0/gnat_rm/Attribute-Img.html
X'Img conserve son utilité en tant que fonction déclarée
automatiquement, qu'on peut manipuler comme une fonction déclarée
normalement,
alors qu'avec X'Image on ne peut pas ?
X'Img est une fonction sans paramètre, pas le résultat d'un appel.
Post by ThomasPost by J-P. RosenNB: Cette dernière explication est un peu "tong in cheek", car pour
l'attribut 'Image, cette syntaxe a été autorisée - suite à un grand
nombre de gens qui la réclamaient. Perso j'aime bien avoir un modèle
propre, mais bon, 'Image n'est censé être utilisé que pour debugger...
http://www.ada-auth.org/standards/12rat/html/Rat12-0-4.html
http://www.ada-auth.org/standards/12rat/html/RCorr-0-2.html
https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gnat_rm/Attribute-Img.html
je ne vois pas énormément l'intérêt, alors (d'après ce que tu dis)
plutôt que de le reporter dans la norme, ils auraient mieux fait
d'ajouter un avertissement quand on s'en sert dans des conditions où les
"pragma Debug" ne sont pas activés ...
Rien n'interdit de l'utiliser partout, quand je dis que c'est pour le
debug, c'est une opinion personnelle.
En fait Text_IO est très bien fait, à condition de bien l'utiliser.
En particulier, il possède une particularité très intéressante:
si on prend une séquence qui écrit des données de types variés (via les
bonnes instantiations), il suffit de reprendre exactement le même code
et de remplacer tous les PUT par des GET, et on relira les données
correctement. Ca ne marche plus si on utilise des 'Image , en
particulier parce que si la longueur de ligne est limitée, les string
peuvent être repliées, alors que pour les autres données, on forcera un
New_Line pour être sûr qu'une donnée n'est jamais à cheval sur deux lignes.
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52
https://www.adalog.fr