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=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,9d303864ae4c70ad X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-04-07 19:22:27 PST Path: archiver1.google.com!news1.google.com!news.glorb.com!news.tele.dk!news.tele.dk!small.news.tele.dk!proxad.net!usenet-fr.net!enst.fr!melchior!cuivre.fr.eu.org!melchior.frmug.org!not-for-mail From: Stephen Leake Newsgroups: comp.lang.ada Subject: Re: Reprise: 'in out' parameters for functions Date: 07 Apr 2004 22:21:08 -0400 Organization: Cuivre, Argent, Or Message-ID: References: NNTP-Posting-Host: lovelace.ada-france.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: melchior.cuivre.fr.eu.org 1081390878 90968 212.85.156.195 (8 Apr 2004 02:21:18 GMT) X-Complaints-To: usenet@melchior.cuivre.fr.eu.org NNTP-Posting-Date: Thu, 8 Apr 2004 02:21:18 +0000 (UTC) To: comp.lang.ada@ada-france.org Return-Path: In-Reply-To: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 X-Virus-Scanned: by amavisd-new-20030616-p7 (Debian) at ada-france.org X-BeenThere: comp.lang.ada@ada-france.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Gateway to the comp.lang.ada Usenet newsgroup" List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: archiver1.google.com comp.lang.ada:6831 Date: 2004-04-07T22:21:08-04:00 "Alexander E. Kopilovich" writes: > Stephen Leake wrote: > > > This is what I wanted to declare: > > > > function Parse > > (Error_Label : in String; > > Token : in out Token_List.List_Iterator) > > return String; > > -- Process Token, which should contain '([Config_File =>] )'. > > -- Return the string. > > -- Delete parsed tokens from Token. > > > One thing is missing in this your explanation: why exactly you don't want to > make that List_Iterator global (instead of passing it as IN OUT argument) ? Hmm. I suppose that is a legitimate question. My answer is "I never make anything global unless it has to be, because that usually leads to trouble". In this case, Token is actually the contents of an aggregate, part of a larger statement that is dynamically allocated. It must be modified in place; copying it to a global to pass it to this routine would be a maintenance nightmare. And no, I don't consider "Ada doesn't allow 'in out' in functions" a good reason to make something global; I'll change it to a procedure first. -- -- Stephe