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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,19bec73ca578366e X-Google-Attributes: gid103376,public From: stt@houdini.camb.inmet.com (Tucker Taft) Subject: Re: Implementing a stream Date: 1998/12/15 Message-ID: #1/1 X-Deja-AN: 422580981 Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.camb.inmet.com References: <7563nn$evn$1@nnrp1.dejanews.com> Organization: Intermetrics, Inc. Newsgroups: comp.lang.ada Date: 1998-12-15T00:00:00+00:00 List-Id: 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)