comp.lang.ada
 help / color / mirror / Atom feed
From: Caffeine Junky <nospam@hotmail.com>
Subject: On functions and access types.
Date: Wed, 26 Jun 2002 22:57:18 GMT
Date: 2002-06-26T22:57:18+00:00	[thread overview]
Message-ID: <eFrS8.4786$Uu2.750@sccrnsc03> (raw)

In a related post where I asked for help with Generics I posted this spec
file...

generic
   Max : Positive;
   type Item is private;

package genstack is

   type Stack is limited private;

   procedure Push(X : in Item; S : in out Stack);
   function Pop(S: in Stack) return Item;
   function Is_Empty(S : in Stack) return Boolean;

private

   type Cell;
   type Stack is access Cell;
   type Cell is
      record
         Value: Item;
         Next: Stack;
      end record;

   -- This package will be expanded to include other forms of stacks --
   -- as time permits.                                               --

end genstack;


Now, function Pop was written thusley...


function Pop(S : in Stack) return Item is

	X : Item;

begin

	X := S.Value
	S := S.Next;
	return X;

end Pop;


Now the compiler tells me that I cannot assign to an 'in' parameter.
However, as I understand it, a function can only take an 'in' parameter.
I can copy S to a stack which is local to the function, but results in
the function only returning the last item in the stack.
If I use a procedure, it works fine. But I run into problems whenever I
try to use similiar acess types into a function.

I'm definitely overlooking something here. Probably something obvious.
I'll continue to search through my book for an answer, but any pointers
or references would be appreciated.


Now, eventually I changed this to a procedure for the sake of expediancy.
But I'm continuing to work on the problem.


Thanks for your patience.

Staple



             reply	other threads:[~2002-06-26 22:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-26 22:57 Caffeine Junky [this message]
2002-06-27  0:25 ` On functions and access types Robert A Duff
2002-06-27  2:33   ` Ted Dennison
2002-06-27  1:29 ` SteveD
  -- strict thread matches above, loose matches on Subject: below --
2002-06-27  7:36 Grein, Christoph
replies disabled

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