comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Multiple procedures in the same adb file?
Date: Mon, 12 Jan 2015 09:57:58 -0500
Date: 2015-01-12T09:57:58-05:00	[thread overview]
Message-ID: <wcck30s2gi1.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: m902gd$sp3$1@dont-email.me

"J-P. Rosen" <rosen@adalog.fr> writes:

> Le 12/01/2015 01:53, Robert A Duff a écrit :
>> This happened to me:  Existing code:
>> 
>>     function Some_Root_Package.Some_Function(...) return String;
>> 
>> Now I happen to know that it always returns String(1..20).
>> And returning known-length strings is more efficient,
>> and this one is a bottleneck, so it's worth changing to
>> something like:
>> 
>>     subtype String_20 is String(1..20);
>>     function Some_Function(...) return String_20;
>> 
>> But that doesn't work without adding a new package, which breaks
>> compatibility.  And this was a widely-used library, so I couldn't do
>> that.  And String_20 really doesn't belong in Some_Root_Package,
>> nor anywhere else than the package that Some_Function is (directly) in
>> (which didn't exist!).
>
> Put the function in a package, and declare Some_Function as:
> function Some_Function (...) renames New_Package.Some_Function;
>
> (For compatibility, new programs would use directly the function in the
> package).

I started to reply, "Good idea", but then I remembered it doesn't work.
A library unit can only rename another library unit.  If it did work,
I'd still prefer to use packages from the start.

I see AARM-10.1.1(14.a) explains why we have this restriction, in part
"because they wouldn't be particularly useful".  Probably written by
somebody who doesn't like library subprograms.  ;-)

- Bob


  reply	other threads:[~2015-01-12 14:57 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-11 18:37 Multiple procedures in the same adb file? John Smith
2015-01-11 19:05 ` John Smith
2015-01-11 19:51 ` Robert A Duff
2015-01-11 20:38   ` John Smith
2015-01-11 21:02     ` Robert A Duff
2015-01-11 21:51       ` John Smith
2015-01-12  0:53         ` Robert A Duff
2015-01-12  0:55         ` Robert A Duff
2015-01-13  0:11       ` Randy Brukardt
2015-01-11 21:38   ` Niklas Holsti
2015-01-12  0:53     ` Robert A Duff
2015-01-12  9:01       ` J-P. Rosen
2015-01-12 14:57         ` Robert A Duff [this message]
2015-01-13  0:09           ` Randy Brukardt
2015-01-12  0:55     ` Robert A Duff
2015-01-11 20:04 ` Jeffrey Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox