comp.lang.ada
 help / color / mirror / Atom feed
From: "Matthew Heaney" <mheaney@on2.com>
Subject: Re: functions, packages & characters
Date: Fri, 22 Feb 2002 10:34:34 -0500
Date: 2002-02-22T10:34:34-05:00	[thread overview]
Message-ID: <u7coukk8m7087@corp.supernews.com> (raw)
In-Reply-To: u7bcro6je1h519@corp.supernews.com


"Randy Brukardt" <randy@rrsoftware.com> wrote in message
news:u7bcro6je1h519@corp.supernews.com...
>
> >   loop
> >      Get_Line (Line, Last);
> >      Append (Buffer, Line (Line'First .. Last));
> >      exit when Last < Line'Last;
> >   end loop;
>
> This is, of course, the inefficiency that I was commenting on.

No, the inefficiency you were commenting on was the size of the string
buffer Line, which you said had to be one.  That is wrong -- as in my
example, it can be of arbitrary size.

> This would be slow, and would cause an awful lot of memory allocation and
> deallocation, with the possible exception of the first iteration.

Well, the inefficiency of appending to an Unbounded_String is a separate
issue.  We were talking about the inefficiency of Get_Line.  If you don't
like Unbounded_String, then use another data structure.

> It would only be a good idea if the size of Line was larger than almost
all
> expected lines.

Fine, then declare a large size for Line.  I typically use 81 or 133, when
reading text from standard input.

> (Personally, I never use Unbounded strings, mainly because it took me
> years to figure out how to use regular Ada strings effectively, and
> Unbounded strings don't buy anything if you are used to doing that.)

If Unbounded_String offends you, then use a recursive implementation to
return an unconstrained String.  Or use another data structure.

The point is that of course you can distinguish when you've consumed the
entire input line.  My example illustrates the standard idiom, per AI-50.






  parent reply	other threads:[~2002-02-22 15:34 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-21  8:59 functions, packages & characters Christoph Grein
2002-02-21 18:07 ` Unversed Angel
2002-02-21 18:28   ` Hyman Rosen
2002-02-21 23:44     ` Randy Brukardt
2002-02-22  0:37       ` Matthew Heaney
2002-02-22  1:12         ` Matthew Heaney
2002-02-22  2:57         ` Randy Brukardt
2002-02-22 13:54           ` Marin David Condic
2002-02-23  1:10             ` Matthew Heaney
2002-02-25 15:47               ` Marin David Condic
2002-02-26 15:58                 ` Matthew Heaney
2002-02-25 19:37             ` Randy Brukardt
2002-02-25 20:49               ` Marin David Condic
2002-02-26  3:30               ` David Starner
2002-02-26 15:44                 ` Hyman Rosen
2002-02-26 21:43                   ` David Starner
2002-02-27  6:32                     ` Hyman Rosen
2002-02-28  3:55                       ` Chad R. Meiners
2002-02-28 18:44                         ` Hyman Rosen
2002-03-02  3:25                           ` Chad R. Meiners
2002-03-03  8:22                             ` Hyman Rosen
2002-03-03 17:50                               ` Chad R. Meiners
2002-03-01  2:08                         ` David Starner
2002-03-05 14:36                       ` Marin David Condic
2002-02-26  7:42               ` tmoran
2002-02-22 15:34           ` Matthew Heaney [this message]
2002-02-22  2:47       ` Jeffrey Carter
2002-02-22 13:41       ` Marin David Condic
2002-02-23  1:08         ` Matthew Heaney
2002-02-23  2:03         ` Jeffrey Carter
2002-02-22 16:27       ` Hyman Rosen
2002-02-21 23:49     ` unversedangel
2002-02-21 22:48   ` unversedangel
2002-02-21 23:14     ` Hyman Rosen
2002-02-22 14:11     ` Marin David Condic
  -- strict thread matches above, loose matches on Subject: below --
2002-02-21  0:16 Unversed Angel
2002-02-21  0:37 ` tmoran
2002-02-21  1:13   ` Unversed Angel
2002-02-21  2:53     ` tmoran
2002-02-21  8:25       ` Unversed Angel
2002-02-21 13:47         ` Marin David Condic
2002-02-22  0:22         ` tmoran
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox