From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: How can one record component be local and another not?
Date: Tue, 5 May 2020 23:11:39 +0300
Date: 2020-05-05T23:11:39+03:00 [thread overview]
Message-ID: <hhdvjsFkrklU1@mid.individual.net> (raw)
In-Reply-To: <hhdrmkFk1kgU1@mid.individual.net>
On 2020-05-05 22:04, Niklas Holsti wrote:
> On 2020-05-05 20:32, hreba wrote:
>> Ok, with all your hints I came to the following solution:
>>
>> --
>> package Aux is
>> type Integer_P is access all Integer;
>> type Rec is limited record
>> a: aliased Integer;
>> p: Integer_P;
>> end record;
>>
>> procedure Init (r: access Rec);
>> end Aux;
>> --
>> package body Aux is
>> procedure Init (r: access Rec) is
>> begin
>> r.p:= r.a'Access;
>> end Init;
>> end Aux;
>> --
>> with Aux;
>> procedure Test is
>> r: aliased Aux.Rec;
>> begin
>> Aux.Init (r'Access);
>> end Test;
>> --
>>
>> It compiles nicely, and then:
>>
>> frank@pc-frank:~/Temp/Test0$ ./test
>> raised PROGRAM_ERROR : aux.adb:4 accessibility check failed
>>
>> #@!!0ßx*~@!!!
>
> Ok, apologies if I led you down the wrong path. I admit I did not build
> a running program to check my suggestion of the "access" parameter, and
> I have not myself often used this kind of code.
>
> You should be able to get rid of this error by using
> r.a'Unchecked_Access instead of r.a'Access, and then (I think) you can
> return to using an "in out" parameter mode instead of "access" mode.
... but better make it "aliased in out" to ensure pass-by-reference.
I do agree with Dmitry that records with internal pointers-to-component
should be "limited" or "controlled".
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2020-05-05 20:11 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-05 11:04 How can one record component be local and another not? hreba
2020-05-05 11:33 ` AdaMagica
2020-05-05 11:38 ` AdaMagica
2020-05-05 12:59 ` hreba
2020-05-05 13:19 ` J-P. Rosen
2020-05-05 13:37 ` Jere
2020-05-05 14:28 ` hreba
2020-05-05 15:18 ` AdaMagica
2020-05-05 14:32 ` hreba
2020-05-05 11:43 ` AdaMagica
2020-05-05 12:55 ` hreba
2020-05-05 11:46 ` Simon Wright
2020-05-05 13:07 ` hreba
2020-05-05 17:00 ` Dmitry A. Kazakov
2020-05-05 11:48 ` Niklas Holsti
2020-05-05 13:44 ` hreba
2020-05-05 15:45 ` Jeffrey R. Carter
2020-05-05 17:17 ` hreba
2020-05-05 19:08 ` Niklas Holsti
2020-05-06 19:31 ` hreba
2020-05-09 19:43 ` Niklas Holsti
2020-05-10 15:10 ` hreba
2020-05-05 19:19 ` Jere
2020-05-06 6:42 ` Mark Lorenzen
2020-05-06 8:26 ` Simon Wright
2020-05-06 8:33 ` Mark Lorenzen
2020-05-05 17:32 ` hreba
2020-05-05 19:04 ` Niklas Holsti
2020-05-05 20:11 ` Niklas Holsti [this message]
2020-05-06 13:13 ` hreba
2020-05-06 17:30 ` Niklas Holsti
2020-05-06 18:28 ` Jere
2020-05-06 19:09 ` Niklas Holsti
2020-05-07 9:07 ` J-P. Rosen
2020-05-07 10:15 ` Niklas Holsti
2020-05-07 13:00 ` Egil H H
2020-05-07 13:25 ` Simon Wright
2020-05-07 10:31 ` Stefan.Lucks
2020-05-07 11:58 ` J-P. Rosen
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox