comp.lang.ada
 help / color / mirror / Atom feed
From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: Implementing a stream
Date: 1998/12/15
Date: 1998-12-15T00:00:00+00:00	[thread overview]
Message-ID: <F40s4K.68M.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 7563nn$evn$1@nnrp1.dejanews.com

dennison@telepath.com wrote:

: I'm looking at implementing a stream class, but I don't think I quite
: understand the expected interface. I know I have to implement the following
: subprogram:

:            procedure Read(
:              Stream : in out Root_Stream_Type;
:              Item   : out Stream_Element_Array;
:              Last   : out Stream_Element_Offset);

: But how is it called by default (iaw: from default 'Read and 'Input
: routines)? For instance, if my read returns with Last < Item'length, does
: read get repeatedly called until Item'length items have been read? 

In general, if Last /= Item'Last, then you will get an exception
raised by the default 'Read or 'Input implementation.  I doubt that
it would loop (I agree RM95 is a bit hazy in this section, but it is
numbered 13.13, remember ;-).

: ... Would
: returning Last =0 result in a fast busy-loop? 

No, it will almost certainly result in an exception being raised.

: ... If so, I'd think the preferred
: method in this instance would be for Read to raise an exception or to block
: until there is more data.

Yes, your Read should only return with Last < Item'Last if you have
reached end-of-stream (see 13.13.1(8)).

: --
: T.E.D.

--
-Tucker Taft   stt@averstar.com   http://www.averstar.com/~stt/
Technical Director, Intermetrics, Inc.  Burlington, MA  USA
An AverStar Company (www.averstar.com)




      parent reply	other threads:[~1998-12-15  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-12-15  0:00 Implementing a stream dennison
1998-12-15  0:00 ` David C. Hoos
1998-12-15  0:00 ` Tucker Taft [this message]
replies disabled

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