comp.lang.ada
 help / color / mirror / Atom feed
From: Michael Hardeman <mhardeman25@gmail.com>
Subject: Re: Better way to fill Storage_IO?
Date: Mon, 17 May 2021 13:48:10 -0700 (PDT)	[thread overview]
Message-ID: <11979adf-d841-4b67-8693-567e6fe8bc55n@googlegroups.com> (raw)
In-Reply-To: <s7uj5p$10p7$1@gioia.aioe.org>

On Monday, May 17, 2021 at 4:20:14 PM UTC-4, Dmitry A. Kazakov wrote:
> On 2021-05-17 21:14, Simon Wright wrote: 
> > Michael Hardeman <mhard...@gmail.com> writes: 
> > 
> >> So I've been messing around with the new Ada 2020 package 
> >> Ada.Streams.Storage.Bounded/Unbounded; and if I'm understand it 
> >> correctly it allows you to treat your program's memory like a stream 
> >> without having to open file descriptors (which should make it 
> >> faster?). That seems like a powerful abstraction to me and a great 
> >> addition to the language.
> 1. It was always possible, since Ada 95, actually. So it is not that 
> great addition. 
> 
> 2. The package as described is not a replacement for I/O, because it 
> lacks blocking/synchronization and because it does not work between 
> processes. E.g. at the end of the stream Read must rather block for an 
> incoming Write. Both are quite possible to implement though. 
> 
> A great addition would be properly tagged protected objects and tasks. A 
> blocking stream cannot support timed entry call syntax like this: 
> 
> select 
> S := String'Input (Pipe'Access); -- This is not Ada! 
> or delay 1.0; 
> raise Timed_Out; 
> end select; 
> 
> And note another problem. Entries do not work with indefinite objects. 
> You cannot return String from an entry call. 
> 
> And yet another problem, you cannot use returned objects in many places, 
> like in an entry call above.
> >> I was wondering if we could find a better way to fill the stream other 
> >> than writing the variables into it? Can anyone figure out a good way 
> >> to just stream a variable's bytes directly?
> Allocators, of course. I am using both allocators and memory-mapped 
> streams (though of a greater variety, e.g. for blocked exchange, 
> encryption, interporcess communication).
> > This *is* the way to just stream the variable's bytes directly. What 
> > sort of syntax were you hoping for?
> Both allocators and streams require explicit specification of the type. 
> Clearly, that is a way around multiple dispatch, but it is way too 
> heavy. Access to stream is no more necessary in 'Input. It was not 
> necessary when it was introduced in Ada 95. The Rosen's trick allows 
> circumvent in- parameter modes, when necessary. 
> 
> -- 
> Regards, 
> Dmitry A. Kazakov 
> http://www.dmitry-kazakov.de

Hey Dmitry,

> Allocators, of course. I am using both allocators and memory-mapped 
> streams (though of a greater variety, e.g. for blocked exchange, 
> encryption, interporcess communication).

Could you show me an example of how I could do this with allocators?

  reply	other threads:[~2021-05-17 20:48 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17 18:44 Better way to fill Storage_IO? Michael Hardeman
2021-05-17 19:14 ` Simon Wright
2021-05-17 19:23   ` Michael Hardeman
2021-05-18 20:39     ` Simon Wright
2021-05-19  6:24       ` Dmitry A. Kazakov
2021-05-19  7:17       ` J-P. Rosen
2021-05-19  8:26         ` Björn Lundin
2021-05-19 19:25           ` J-P. Rosen
2021-05-19 19:58             ` Dmitry A. Kazakov
2021-05-19 20:18             ` Björn Lundin
2021-05-20  5:38               ` Niklas Holsti
2021-05-20  6:50                 ` J-P. Rosen
2021-05-20 22:24                   ` Randy Brukardt
2021-05-19 15:39         ` Simon Wright
2021-05-17 20:20   ` Dmitry A. Kazakov
2021-05-17 20:48     ` Michael Hardeman [this message]
2021-05-18 14:00       ` Per Sandberg
2021-05-18  9:08     ` J-P. Rosen
2021-05-18 10:10       ` Jeffrey R. Carter
2021-05-18 16:50 ` Shark8
replies disabled

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