From: Laurent <daemon2@internet.lu>
Subject: A few questions
Date: Sat, 7 Feb 2015 09:43:27 -0800 (PST)
Date: 2015-02-07T09:43:27-08:00 [thread overview]
Message-ID: <a62b917d-f06f-4d2b-9471-679c0a5f4645@googlegroups.com> (raw)
Hi
1) Trying to implement a search function in my linked list. Doesn't compile because the return type :List_Ptr is not visible in the ads file?
spec:
function Search (L : in List; Element : in Element_Type) return List_Ptr;
-- Pre: L is defined; L may be empty; Element is a scalar type
-- Post: returns access to found node
body
function Search (L : in List; Element : in Element_Type) return List_Ptr is
Temp : List_Ptr;
Current : List;
begin
Current := L.Head;
while Current.Head /= null loop
if Equals(Current.Head.Element, Element) then
Temp:= Current.Head;
return Temp;
end if;
Current.Head := Current.Head.Next;
end loop;
end Search;
The List_Ptr is defined as:
private
----------
-- List --
----------
type List_Node;
type List_Ptr is access List_Node;
type List_Node is record
Element : Element_Type;
Next : List_Ptr;
Previous:List_Ptr;
end record;
type List is record
Head : List_Ptr;
Tail : List_Ptr;
end record;
I have put the search function in a child package.
2) Tried the same thing but this time using an iterator but fails with
65:20 (Ada 2005) cannot copy object of a limited type (RM-2005 6.5(5.5/2))
65:20 return by reference not permitted in Ada 2005
on
return It;
spec
function Search (L : access List; Element : Element_Type) return Iterator;
-- Pre: L is defined; L may be empty; Element is a scalar type
-- Post: returns access to found node
body
function Search (L : access List; Element : Element_Type) return Iterator is
It : Iterator (L);
begin
Start (It);
while not Done (It) loop
if Equals (It.This.Element, Element) then
return It;
end if;
Next(It);
end loop;
end Search;
The Iterator is defined as:
private
--------------
-- Iterator --
--------------
type Iterator (L : access List) is limited
record
This : List_Ptr;
end record;
I have tried to understand RM-2005 6.5(5.5/2) but don't know what
"If the result subtype of the function is defined by a subtype_mark, the return_subtype_indication shall be a subtype_indication. The type of the subtype_indication shall be the result type of the function"
is supposed to look like.
If someone could enlighten me on both problems.
https://github.com/Chutulu/Chapter-15.git
3) How can I take a look at the assembler code of both versions? Just curious to see if there is actually a difference between both versions. I have no idea of assembler but that doesn't keep me from trying.
Thanks
Laurent
next reply other threads:[~2015-02-07 17:43 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-07 17:43 Laurent [this message]
2015-02-07 22:15 ` A few questions Brad Moore
2015-02-08 22:37 ` Laurent
2015-02-09 13:56 ` Brad Moore
2015-02-09 18:36 ` Laurent
-- strict thread matches above, loose matches on Subject: below --
2015-10-31 20:29 Laurent
2015-10-31 20:49 ` Dmitry A. Kazakov
2015-11-01 13:16 ` Laurent
2015-11-01 0:25 ` Jeffrey R. Carter
2015-11-01 13:30 ` Laurent
2015-11-03 6:25 ` Randy Brukardt
2015-11-01 9:05 ` Jacob Sparre Andersen
2015-11-01 13:40 ` Laurent
2015-11-01 18:14 ` Jacob Sparre Andersen
2015-11-01 18:40 ` Laurent
2015-11-01 13:42 ` brbarkstrom
2015-11-01 13:52 ` Laurent
2015-11-01 17:59 ` Jeffrey R. Carter
2015-11-01 18:35 ` Laurent
2015-11-02 13:25 ` brbarkstrom
2015-11-01 15:15 ` Dennis Lee Bieber
2015-11-01 16:33 ` gautier_niouzes
2015-11-01 16:36 ` gautier_niouzes
2015-11-01 18:17 ` Stephen Leake
2015-11-01 18:53 ` Laurent
2015-11-02 0:41 ` Dennis Lee Bieber
2015-11-02 16:42 ` Stephen Leake
2015-11-02 17:45 ` Simon Wright
2015-11-02 18:48 ` Simon Wright
2015-11-03 6:33 ` Randy Brukardt
2015-11-03 8:26 ` Simon Wright
2015-11-03 6:40 ` Randy Brukardt
2015-11-03 8:34 ` Simon Wright
2015-11-04 16:19 ` Simon Wright
2015-11-05 1:20 ` Randy Brukardt
2015-11-05 8:34 ` briot.emmanuel
2015-11-12 18:28 ` Randy Brukardt
2015-11-12 20:19 ` Simon Wright
2015-11-12 20:56 ` Dmitry A. Kazakov
2015-11-12 21:15 ` Randy Brukardt
2015-11-13 8:40 ` Dmitry A. Kazakov
2015-11-13 17:52 ` Randy Brukardt
2015-11-13 20:37 ` Dmitry A. Kazakov
2015-11-13 22:15 ` Randy Brukardt
2015-11-14 11:42 ` Dmitry A. Kazakov
2015-11-14 12:37 ` Simon Wright
2015-11-14 17:24 ` Shark8
2015-11-14 20:09 ` Simon Wright
2015-11-15 18:54 ` Brad Moore
2015-11-13 8:45 ` briot.emmanuel
2015-11-13 17:41 ` Randy Brukardt
2015-11-14 19:57 ` briot.emmanuel
2015-11-16 19:13 ` Randy Brukardt
2015-11-16 20:47 ` Dmitry A. Kazakov
2015-11-17 21:30 ` Randy Brukardt
2015-11-18 9:53 ` Dmitry A. Kazakov
2015-11-18 22:27 ` Randy Brukardt
2015-11-19 8:52 ` Dmitry A. Kazakov
2015-11-19 21:15 ` Randy Brukardt
2015-11-16 21:50 ` Simon Wright
2015-11-17 21:33 ` Randy Brukardt
2015-11-17 23:14 ` Simon Wright
2015-11-17 8:49 ` briot.emmanuel
2015-11-17 22:09 ` Randy Brukardt
2015-11-05 8:45 ` Simon Wright
2015-11-05 8:52 ` Simon Wright
2015-11-12 18:29 ` Randy Brukardt
2015-11-12 18:32 ` Randy Brukardt
2015-11-12 20:02 ` Simon Wright
2015-11-12 21:08 ` Randy Brukardt
2015-11-15 17:56 ` Brad Moore
2015-11-15 21:42 ` Simon Wright
2015-11-16 19:16 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox