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=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,a3736685ef876ab2 X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!postnews.google.com!v4g2000hsf.googlegroups.com!not-for-mail From: braver Newsgroups: comp.lang.ada Subject: Re: OO Style with Ada Containers Date: Fri, 23 Nov 2007 14:25:30 -0800 (PST) Organization: http://groups.google.com Message-ID: <2e37536e-55fb-42d5-a073-10b47cc31128@v4g2000hsf.googlegroups.com> References: <1195082906.420079.195000@d55g2000hsg.googlegroups.com> <1195084214.480299.13970@t8g2000prg.googlegroups.com> <1195084752.840598.174460@v65g2000hsc.googlegroups.com> <1195086265.070953.93180@d55g2000hsg.googlegroups.com> NNTP-Posting-Host: 85.30.231.120 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: posting.google.com 1195856730 4784 127.0.0.1 (23 Nov 2007 22:25:30 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 23 Nov 2007 22:25:30 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: v4g2000hsf.googlegroups.com; posting-host=85.30.231.120; posting-account=V2cESwoAAACnN32CFvmyu4DCs-heiisG User-Agent: G2/1.0 X-HTTP-UserAgent: Opera/9.24 (Macintosh; Intel Mac OS X; U; en),gzip(gfe),gzip(gfe) Content-Disposition: inline Xref: g2news1.google.com comp.lang.ada:18591 Date: 2007-11-23T14:25:30-08:00 List-Id: Very ineteresting -- Matt, can you pls elucidate these idioms below? On Nov 19, 5:24 am, Matthew Heaney wrote: > type Scanner (<>) is tagged limited private; What does (<>) say here -- that the type is unconstrained? > private > > type Handle (S : not null access Scanner) is limited null record; > > type Scanner (Last : Natural) is tagged limited record > H : Handle (Scanner'Access); > Line : String (1 .. Last); > Word_First : Positive; > Word_Last : Natural; > end record; > > end Scanners; > function Scan (Line : String) return Scanner is > begin > return S : Scanner (Line'Length) do > S.Line := Line; > -- S.Word_First := 1; > S.Word_Last := 0; > Next (S); > end return; > end Scan; > function Word (S : Scanner) return String is > L : constant Positive := S.Word_Last - S.Word_First + 1; > > begin > return Result : String (1 .. L) do > Result := S.Line (S.Word_First .. S.Word_Last); > Next (S.H.S.all); > end return; > end Word; What's the logic behind the definition and usage of the Handle H throughout? Cheers, Alexy