comp.lang.ada
 help / color / mirror / Atom feed
From: Freejack <freejack@nowhere.net>
Subject: Re: Objects and the Stack?
Date: Fri, 17 Dec 2004 08:45:31 GMT
Date: 2004-12-17T08:45:31+00:00	[thread overview]
Message-ID: <pan.2004.12.17.03.54.12.727310@nowhere.net> (raw)
In-Reply-To: HKpwd.1478$9j5.1379@newsread3.news.pas.earthlink.net

On Fri, 17 Dec 2004 00:28:23 +0000, Jeffrey Carter wrote:

 
> The fact that pointers are generally not needed in Ada except when 
> creating things such as dynamic data structures has nothing to do with 
> tagged types. If you create objects of a classwide type, they are put on 
> the stack if you declare them there, and in a storage pool if you 
> allocate them there.
> 
Something like ...
	declare
		Stack : Obstack'Class := Item'(SomeIndex);
	begin
		IsPushed := Push(Item);
		NewItem := Pop;
	end;
Is what I have in mind. 

However what I'd like to be able to do( and what I'm working on. ) is
something like this...

	package body obstacks is
		type obstack is abstract tagged null record;
		
		Stack : Obstack'Class; -- Problematic, needs some kind
					  of discriminant.

		function pkgbodyPush(X : Item) return obstack'class is
			type NewStack is new Obstack with
				record
				Prev : Obstack'Class := Stack;
				NewItem : Item := X;
				end record;
			PushedStack : NewStack; --Again, problematic
		begin
			return PushedStack;
		
		end pkgbodyPush;

	And then, every time the internal pkgbodyPush is called we get..

		Stack := pkgbodyPush(X);

See where I'm going with this? The above code is riddled with problems
that I gotta figure out. But that's the gist of it. The "Stack" variable
should remain on the "stack" as long as the package body is in scope.
That's my assumption at least. I'll know soon enough if I'm wrong. Heh.
	
> I'm not sure what you mean by "extended" here, whether you're referring
> to type extension or a value that becomes larger in 'Size, but this
> doesn't work the way I think you think it will.

Probably not. But then again, that's what experimentation is for. ;->
That's one of the ways I learn new programming methods. By taking a
concept to the most absurd extreme I can imagine.




  reply	other threads:[~2004-12-17  8:45 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-16 22:27 Objects and the Stack? Freejack
2004-12-16 23:13 ` Nick Roberts
2004-12-20 14:50   ` Marc A. Criley
2004-12-20 16:22     ` Marius Amado Alves
2004-12-20 18:31       ` Dmitry A. Kazakov
2004-12-17  0:28 ` Jeffrey Carter
2004-12-17  8:45   ` Freejack [this message]
2004-12-17 11:11     ` Martin Dowie
2004-12-17 11:46     ` Nick Roberts
2004-12-17 19:52       ` Freejack
2004-12-18  4:02         ` Nick Roberts
2004-12-27  4:34         ` Dave Thompson
2004-12-18 19:41       ` Warren W. Gay VE3WWG
2004-12-18 20:50         ` Freejack
2004-12-18 21:15           ` Dmitry A. Kazakov
2004-12-27  4:34         ` Dave Thompson
2004-12-18  0:12     ` Jeffrey Carter
2004-12-18  0:43       ` Jeffrey Carter
replies disabled

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