Re: Adding functions to generic package
- From: Matthew Heaney <matthewjheaney@xxxxxxxxxxxxx>
- Date: Sun, 29 May 2005 22:27:45 GMT
Preben Randhol <randhol+valid_for_reply_from_news@xxxxxxx> writes:
> I have two different questions. How can one splice an element to the end
> of the list?
Just splice the element prior to the distinguished iterator value Back:
C : Container_Type;
procedure Op (I : Iterator_Type) is
begin
Splice (C, Before => Back (C), Iterator => I);
end;
Back is the iterator that designates the virtual element
one-beyond-the-end of the list.
> Mustn't one then Append it and Delete or call Splice twice; first
> moving the element to the second last place and then move the last
> place in front of it?
No; just splice the element to the position before Back. See above.
> Reading the source code I find that the Splice function can only
> splice an element before a given position.
Yes. But if you splice an element before Back, that's the same as
appending it.
> Another question. Why isn't there a Swap function in the library like
> the one that you have in the Reverse_Container? I can make something
> using two splices although a bit less effective I should imagine?
Hmmm, not sure what you're asking for. Swap exchanges the internal
linked lists of a pair of list containers. Reverse_Container reverses
the nodes on the internal linked lists of a single list container.
The list container has both of the these operations, so what operation
do you need, that you want to implement using splice?
Thinking about it more, I think that what you're asking for is an
operation to swap a pair of nodes in the list, a la the Swap_Links
operation in the Ada 200Y container library. I can add that operation,
if that's what you need. (I just need to make sure I understand your
request.)
Note that I would probably just implement it using Splice. That's what
I did in the standard container library reference implementation.
-Matt
.
- References:
- Adding functions to generic package
- From: Preben Randhol
- Re: Adding functions to generic package
- From: Matthew Heaney
- Re: Adding functions to generic package
- From: Preben Randhol
- Re: Adding functions to generic package
- From: Matthew Heaney
- Re: Adding functions to generic package
- From: Preben Randhol
- Re: Adding functions to generic package
- From: Matthew Heaney
- Re: Adding functions to generic package
- From: Preben Randhol
- Adding functions to generic package
- Prev by Date: Re: Adding functions to generic package
- Next by Date: Re: Adding functions to generic package
- Previous by thread: Re: Adding functions to generic package
- Next by thread: GtkAda & OpenGl on linux
- Index(es):
Relevant Pages
|