comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: De-serializing and stack sizes
Date: Sat, 2 Sep 2006 10:14:12 +0200
Date: 2006-09-02T10:13:35+02:00	[thread overview]
Message-ID: <71n306fev9s3$.12vqt5uyk5bak.dlg@40tude.net> (raw)
In-Reply-To: 4lrakfF3b2jqU1@individual.net

On Fri, 01 Sep 2006 19:57:55 +0200, Alex R. Mosteo wrote:

> I'm now facing a problem that I don't know how to solve. I'm going to give
> some thought to it over the week-end and any ideas are welcome.
> 
> I have some objects that I want to serialize to files. For their creation I
> use access types so they get created in heap and there's no problem. I
> simply output them with
> 
> Item_Type'Output (Stream, Item.all);
> 
> However, you see the problem, loading them back is a no-no:
> 
> Item : constant Item_Access := new Item_Type'(Item_Type'Input (Stream));
> 
> The 'Input attribute is trying to return the object in the stack and so it
> doesn't work. My items are around 20 MB in size (now, they could grow
> bigger) and I'd like not to have to raise my stack to these sizes (also
> making it doable from the environment task would be a plus).

I think what you have is stream attributes for *limited* types. You didn't
declare Item_Type limited, but in fact it is, because you want to prevent
copying it, for example, from the stack to the heap. As we know it didn't
work in Ada 95. It must be different in Ada 05.

For Ada 95, in an analogous case, I wrote a limited types factory of my
own. It was necessary anyway, because stream attributes are not portable.
There are clear disadvantages of such approach (again for Ada 95), because
of single inheritance. In Ada 05, it should be much better, because the
number of ancestors is unlimited as long as they are interfaces.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2006-09-02  8:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-01 17:57 De-serializing and stack sizes Alex R. Mosteo
2006-09-02  8:14 ` Dmitry A. Kazakov [this message]
2006-09-04 13:44   ` Alex R. Mosteo
2006-09-02 10:20 ` Simon Wright
2006-09-04 13:45   ` Alex R. Mosteo
replies disabled

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