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
next 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