- From: Gregory Nicholls <gnicholls@level8.com>
- Date: Thu, 08 Jun 2000 16:51:50 -0400
- To: www-lib@w3.org
The last shall be first and the first shall be last. OK I can live with that.
Thanks for the clarification
G.
(who still has to figure out why he got a NULL return from the original code)
"Desrochers, Gary" wrote:
> No, the routine is right. The HTList is in backwards order so that the
> first item in the list is at the end of the chain. The last item in the
> list is the first in the chain. (Unless it was sorted.) While there is
> extraneous code, the code is right. It looks like it is copied from the
> HTList_removeFirstObject routine above it. If you remove the extraneous
> stuff you get:
> PUBLIC void * HTList_firstObject (HTList * me)
> {
> if (me && me->next) {
> while (me->next)
> me = me->next;
> return me->object;
> } else
> return NULL;
> }
>
> Your routine is actually returning the last object in the list. This would
> be the routine which does not exist called HTList_lastObject:
> PUBLIC void * HTList_lastObject (HTList * me)
> {
> if (me && me->next)
> {
> return me->next->object;
> }
> return NULL;
> }
> -----Original Message-----
> From: Gregory Nicholls [mailto:gnicholls@level8.com]
> Sent: Thursday, June 08, 2000 3:00 PM
> To: www-lib@w3.org
> Subject: do I really understand this or not ?
>
> Hi,
> I've found something odd with the HTList_firstObject() function. My
> read on this is that it should return a pointer to the first object in
> the list. Running some tests shows that this doesn't happen.
> After looking at the source it seems (to my naive eye) that this
> routine will always return NULL.
> Here's the source I have with a mod that I put in to make it work
> the way I _think_ it's supposed to.
> Could someone more knowledgable please comment on this please ?
>
> Thanks,
> G
> --------------- snip -----------------------
> PUBLIC void * HTList_firstObject (HTList * me)
> {
> /* This is the original code
> if (me && me->next) {
> HTList * prevNode;
> while (me->next) {
> prevNode = me;
> me = me->next;
> }
> return me->object;
> } else
> return NULL;
> */
> /* This is my new stuff */
> if (me && me->next)
> {
> return me->next->object;
> }
> return NULL;
> }
Received on Thursday, 8 June 2000 16:48:53 UTC