gratifiant > comp.lang.* > comp.lang.ada

Blady (23/01/2019, 09h12)
Bonjour,

Ada.Strings.Bounded se présente come ci-dessous avec un niveau non
générique et un niveau interne générique Generic_Bounded_Length :

package Ada.Strings.Bounded is
pragma Preelaborate(Bounded);
generic
Max : Positive; -- Maximum length of a Bounded_String
package Generic_Bounded_Length is
Max_Length : constant Positive := Max;
type Bounded_String is private;
Null_Bounded_String : constant Bounded_String;
<...>
private
... -- not specified by the language
end Generic_Bounded_Length;
end Ada.Strings.Bounded;

On aurait pu avoir directement :

generic
Max : Positive; -- Maximum length of a Bounded_String
package Ada.Strings.Bounded is
Max_Length : constant Positive := Max;
type Bounded_String is private;
Null_Bounded_String : constant Bounded_String;
<...>
private
... -- not specified by the language
end Ada.Strings.Bounded;

Y a-t-il une raison particulière pour que cela n'ai pas été défini ainsi ?

Merci, Pascal.
J-P. Rosen (30/01/2019, 22h51)
Le 23/01/2019 à 08:12, Blady a écrit :
[..]
>        ... -- not specified by the language
> end Ada.Strings.Bounded;
> Y a-t-il une raison particulière pour que cela n'ai pas été défini ainsi ?

L'annotated ARM dit:
"Reason: Strings.Bounded declares an inner generic package, versus
itself being directly a generic child of Strings, in order to retain
compatibility with a version of the string-handling packages that is
generic with respect to the character and string types."

Honnêtement, je ne trouve pas ça lumineux comme raison...
Discussions similaires