!standard 13.13.1(10/5) 20-02-05 AI12-0361-1/01 !standard 13.13.1(11/5) !class Amendment 20-02-05 !status work item 20-02-05 !status received 19-11-04 !priority Low !difficulty Easy !subject Ada.Streams.Storage packages are still useful !summary The Ada.Streams.Storage packages are still useful. !problem The reason for introducing Ada.Streams.Storage (AI12-0293-1 as modified by AI12-0329-1) was that it was needed for user-defined Image. When used-defined Image was changed to use Ada.Strings.Text_Buffers by AI12-0340-1, this jusification was removed. Should these packages should be removed? (No.) !proposal (See Summary.) !wording None needed. !discussion The reason these packages were defined separately from the Image AI was that they were considered generally useful. As the original !problem in AI12-0293-1 says: A similar need appears in many other cases. One common example is storing and retrieving Ada objects in an existing API (for example, the Windows Clipboard and the Windows Registry). Claw includes a package much like these specifically for these needs. These needs aren't really related in any way to the Windows GUI (the purpose of Claw), it's just a missing Ada capability. Note that Ada has Ada.Storage_IO for a similar purpose. But Storage_IO doesn't allow any control over the data written, as it does not use stream attributes. It seems to be an obvious omission to not have a similar package for use with stream attributes. --- Editor's note: If we ignore my advice here, we should vote all three AIs (AI12-0293-1, AI12-0329-1, and AI12-0361-1 - this AI) No Action. That would take them all out of the final list of AIs (otherwise, they would be confusing). !ASIS No ASIS change. !ACATS test No ACATS tests are needed to support no change. !appendix From: Bob Duff Sent: Monday, November 4, 2019 7:55 AM I think AI12-0293-1 and AI12-0329-1 are made obsolete by AI12-0340-1, and should be "no action". Should we have a letter ballot? AI12-0020-1 'Image for all types uses Ada.Streams.Root_Stream_Type'Class. AI12-0293-1 defines "fifo stream" types. The primary rationale seems to be that they can be used by AI12-0020-1. AI12-0329-1 renames "fifo streams" to be "storage streams". All of the above streams are basically untyped sequences of bytes. AI12-0340-1 defines "text buffers", to be used by AI12-0020-1 instead of 293/329. (BTW, I think AI12-0340-1 is on the right track of using characters instead of bytes, but I think it will need some changes. I'm prototyping AI12-0020-1. We'll see.) **************************************************************** From: Tucker Taft Sent: Monday, November 4, 2019 8:04 AM I agree, these are obsolete. **************************************************************** From: Arnaud Charlet Sent: Monday, November 4, 2019 8:07 AM Agreed as well. **************************************************************** From: Randy Brukardt Sent: Monday, November 4, 2019 5:23 PM > I think AI12-0293-1 and AI12-0329-1 are made obsolete by AI12-0340-1, > and should be "no action". Should we have a letter ballot? I disagree. The reason that AI12-0293-1 was created as a separate AI was that the buffers defined there were considered separately useful. For instance, Claw needs (and defines) a buffer like these in order to put arbitrary Ada objects into the clipboard (and similarly for the registry). Ada streams is defined to write each component individually (with an optimization permission, which only works in limited circumstances); while the operations for the clipboard and registry require sending a single buffer at a time. Thus, some sort of stream buffer is needed. There are similar issues for most external transports (sending a word at a time over the internet is not a very good idea). I've thought that a standard stream buffer makes sense because of these examples; Ada has Storage_IO but it doesn't allow any sort of control of the data written (meaning no chance to match external requirements). So Ada has no adequate standard solution for these problems. I note that when I was creating AI12-0340-1 I asked here whether we wanted to keep AI12-0293-1 et. al., and the answer was that we did. Not sure what's changed in the interim (which has been only a few months). Note that the character buffer of AI12-0340-1 is solving a rather different problem; it is in no way a replacement for the stream buffer of AI12-0293-1 (outside of AI12-0020-1, which should never have used streams in the first place). It's probably debatable whether these problems are important enough to standardize, but the AIs in question certainly are not "obsolete". If you want to make a case that they aren't important enough without the usage from AI12-0020-1, feel free to do that, but don't imply that they are somehow replaced by AI12-0340-1. P.S. I think our procedures have a bug if someone can request a Letter Ballot more than a year after an AI was approved. Can I request a Letter Ballot on anonymous access types?? ;-) **************************************************************** From: John Barnes Sent: Tuesday, November 5, 2019 3:56 AM > P.S. I think our procedures have a bug if someone can request a Letter Ballot > more than a year after an AI was approved. Can I request a Letter Ballot on > anonymous access types?? ;-) Yes Please!!!! ****************************************************************