comp.lang.ada
 help / color / mirror / Atom feed
From: Victor Porton <porton@narod.ru>
Subject: Re: Convert an access to constant to access to variable
Date: Sat, 05 Aug 2017 04:00:56 +0300
Date: 2017-08-05T04:00:56+03:00	[thread overview]
Message-ID: <om35c6$1jfb$1@gioia.aioe.org> (raw)
In-Reply-To: om33bk$f3c$1@franka.jacob-sparre.dk

Randy Brukardt wrote:

> "Victor Porton" <porton@narod.ru> wrote in message
> news:om2rph$18jt$1@gioia.aioe.org...
>> What is the proper way to convert an access to constant to access to
>> variable? (Yes, I know that then I need to be careful not to modify this
>> "variable".)
> 
> Well, it's not a proper conversion, so there isn't going to be a "proper"
> way.
> 
>> Maybe Unchecked_Conversion?
> 
> That's one possibility.
> 
>> But:
>>
>> 1. Is Unchecked_Conversion guaranteed by the standard to work well in
>> this case?
> 
> I think so. The rules for what must work are found in 13.9(5-10). I
> suppose a compiler could represent access-to-constant and
> access-to-variable differently.
> 
> In any case, your program is erroneous if it tries to write a constant.
> (But you knew that.)
> 
>> 2. Is there a simpler way than Unchecked_Conversion?
> 
> The alternative (assuming the access-to-variable is a general access type)
> is to use 'Access to convert:
> 
>      Ptr.all'Access
> 
> Nope, that won't work, because Ptr.all is a constant, and the result here
> has to be a variable in order to assign it into an access-to-variable.
> 
> You could certainly use Address_to_Access_Conversions, but whether that's
> "simpler" is in the eye of the beholder. (It also requires an
> instantiation, and usually an extra type conversion.)

Address_to_Access_Conversions seems not to solve my problem, because 

function To_Address(Value : Object_Pointer) return Address

accepts only variable pointers not constant pointers. So I am unable to do 
anything with my constant pointer.

It's bad! I can dealt with this only with a horrible workaround.

Hard to believe that there is no any way in Ada2012 to convert an access to 
constant to an access to variable. I'm sure many people wanted this. How 
such a feature may be missing?!

Should we develop and submit a language change proposal?!

Maybe A'Unchecked_Variable?

-- 
Victor Porton - http://portonvictor.org


  reply	other threads:[~2017-08-05  1:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-04 22:17 Convert an access to constant to access to variable Victor Porton
2017-08-05  0:26 ` Randy Brukardt
2017-08-05  1:00   ` Victor Porton [this message]
2017-08-07 23:21     ` Randy Brukardt
2017-08-05  1:37 ` Victor Porton
2017-08-05 17:27 ` Stephen Leake
2017-08-05 17:41   ` Victor Porton
2017-08-07 23:16     ` Randy Brukardt
replies disabled

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