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.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!nntp-feed.chiark.greenend.org.uk!ewrotcd!newsfeed.xs3.de!io.xs3.de!news.jacob-sparre.dk!franka.jacob-sparre.dk!pnx.dk!.POSTED.rrsoftware.com!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Limited object by reference or access argument? Date: Mon, 7 Aug 2017 18:28:14 -0500 Organization: JSA Research & Innovation Message-ID: References: Injection-Date: Mon, 7 Aug 2017 23:28:16 -0000 (UTC) Injection-Info: franka.jacob-sparre.dk; posting-host="rrsoftware.com:24.196.82.226"; logging-data="28995"; mail-complaints-to="news@jacob-sparre.dk" X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.7246 Xref: news.eternal-september.org comp.lang.ada:47643 Date: 2017-08-07T18:28:14-05:00 List-Id: I strongly prefer keeping "access" out of interfaces unless absolutely necessary. Claw only uses "access" in a couple of circumstances; the vast majority of routines use normal object parameter passing. BTW, "access" has to pass runtime accessibility information, and it's possible to trip over that when converting the parameter to some other type (causing Program_Error to be raised). That doesn't happen when using normal parameters (although you have to use 'Unchecked_Access if you need an access value). Randy. "Victor Porton" wrote in message news:om80vg$1a68$1@gioia.aioe.org... > Suppose we have > > type World_Type is tagged limited private; > > type BNode_ID_Handler is abstract tagged limited private; > > We need to set a bnode handler for a world object. Should the procedure > signature be > > procedure Set_Handler (World: World_Type; > Handler: access BNode_ID_Handler'Class); > > or > > procedure Set_Handler (World: World_Type; > Handler: BNode_ID_Handler'Class); > > The later can work with limited BNode_ID_Handler type, because tagged and > limited types are always passed by reference. > > I prefer the second one, because with the first procedure signature it is > possible to pass an access to an already finalized object what is an > error, > but want to ask you opinion which of the two procedure signatures is > better. > > -- > Victor Porton - http://portonvictor.org