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, LOTS_OF_MONEY autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,573be8c453ecbff4 X-Google-Attributes: gid103376,public From: Stephen Leake Subject: Re: 'Read for pointers Date: 2000/07/28 Message-ID: #1/1 X-Deja-AN: 651972432 References: <8lndgv$1om$1@nnrp1.deja.com> Content-Type: text/plain; charset=us-ascii X-Complaints-To: dscoggin@cne-odin.gsfc.nasa.gov X-Trace: skates.gsfc.nasa.gov 964822414 5210 128.183.220.71 (28 Jul 2000 22:13:34 GMT) Organization: NASA Goddard Space Flight Center Mime-Version: 1.0 User-Agent: Gnus/5.0803 (Gnus v5.8.3) Emacs/20.5 NNTP-Posting-Date: 28 Jul 2000 22:13:34 GMT Newsgroups: comp.lang.ada Date: 2000-07-28T22:13:34+00:00 List-Id: "Pat Rogers" writes: > "Ted Dennison" wrote in message > news:8lndgv$1om$1@nnrp1.deja.com... > > package Example is > > type Handle is private; > > > > ... > > private > > > > type Instance; > > > > type Handle is access all Instance; > > > > end Example; > > > > But there's a problem. Following is the profile for 'Read: > > > > procedure Read > > (Stream : access Ada.Streams.Root_Stream_Type'Class; > > Item : out Handle > > ); > > for Handle'Read use Read; > > > > The problem is that Item is an *out* parameter. That means I won't > have > > acces to the pointer's old value inside Read. > > You can read mode out parameters in Ada 95 (unlike Ada 83). (Am I > missing something?) Yes, you are missing something. Suppose the user writes: My_Handle : Handle; (somehow, My_Handle is given some value) Read (Stream, My_Handle); The value of My_Handle is _not_ copied to Item at the procedure call. That only happens for "in" or "in out" parameters, not "out" parameters. Inside the body of Read, you can indeed do something like: Foo := Item; This allows refering to a previously assigned Item. It does _not_ provide access to the user's value My_Handle. -- -- Stephe