From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,48b3e9df2fd37d9d X-Google-Attributes: gid103376,public From: stt@houdini.camb.inmet.com (Tucker Taft) Subject: Re: unconstrained array clarification Date: 1998/09/19 Message-ID: #1/1 X-Deja-AN: 392711795 Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.camb.inmet.com References: Organization: Intermetrics, Inc. Newsgroups: comp.lang.ada Date: 1998-09-19T00:00:00+00:00 List-Id: Technobabble (WishList@2600.com) wrote: : Ok, thanks ! Now what if all I have is an unconstrained array type like this: : type xyz_array is array (integer <>) of integer; -- this is it ^^ insert "range" : type xyz_array_pointer is access xyz_array; ^^ insert "all" if you want to use 'Access : type xyz_array_pointer_array is array (1..100) of xyz_array_pointer; : type Object is : record : XYZ : xyz_array_pointer_array; : abc : integer; : end record; : Now I declare an Object, : This : Object; -- record is not constrained, legal or not? This record *is* constrained since its type doesn't have any discriminants. If its type did have discriminants, this would be legal if the discriminants had defaults. : Now I want to have say a 5 element xyz_array: : xyz5_array : xyz_array (1..5); : and I assign my pointer : This.XYZ(1) := xyz5_array'ACCESS; -- address of xyz_array type is assigned This is not legal for two reasons. First, xyz5_array needs to be declared "aliased". Secondly, the "nominal subtype" of xyz5_array must exactly match the "designated" subtype of the access type. Since the designated subtype is xyz_array (unconstrained), then xyz5_array needs to have an unconstrained "nominal" subtype, as follows: xyz5_array : aliased xyz_array := (1..5 => 0); This requirement for subtype matching is a bit of a pain, but using 'Access imposes some stringent requirements on matching of representation, and for pointers to arrays, it can matter greatly whether the nominal subtype is constrained or unconstrained (you'll have to trust me on this one). : now I want to loop: : for I in This.XYZ(1)'RANGE : loop : .......... : ???? Will this work ??? Is the syntax totally incorrect ??? This can be made to work, with the above changes. It might be interesting to have some idea where you are headed with all of this. There might be a simpler overall solution. : help !!! : Richmond -- -Tucker Taft stt@inmet.com http://www.inmet.com/~stt/ Intermetrics, Inc. Burlington, MA USA An AverStar Company