On 21/04/2008, at 2:04 PM, Xavier wrote:
> Sebastian Nowicki wrote:
>> I noticed that alpm_list_last simply returns a pointer to the  
>> previous
>> node. Is this expected behavior? My interpretation of "last" would be
>> to return the absolute last node, as the comment suggests. In my
>> opinion the function as it is now should be called alpm_list_prev.
>>
>> From alpm_list.c:
>>> alpm_list_t SYMEXPORT *alpm_list_last(const alpm_list_t *list)
>>> {
>>>     if(list) {
>>>             return(list->prev);
>>>     } else {
>>>             return(NULL);
>>>     }
>>> }
>>
>
> That's because a alpm_list_t element is not really a list, but a  
> list node.
> So when you use a list in alpm (with alpm_list_t *list), it's actually
> just the head node that you manipulate.
> And head->prev == tail.
>
> _______________________________________________
> pacman-dev mailing list
> [email protected]
> http://archlinux.org/mailman/listinfo/pacman-dev


Ok, but there's also alpm_list_first and alpm_list_next. According to  
your description alpm_list_first should be the same as alpm_list_next,  
unless I misunderstood you. Since alpm_list_t is a node in a double  
linked list, it is possible to be somewhere in the middle of a list.  
Using alpm_list_last somewhere in a progrem, I would expect to go to  
the absolute last node within the list in general. The doxygen comment  
seems to suggest this as well, as it talks about a list in general,  
and not the node (alpm_list_t). It just seems a bit confusing/ 
misleading to me, and possibly others looking at the documentation.

--
Sebastian Nowicki







_______________________________________________
pacman-dev mailing list
[email protected]
http://archlinux.org/mailman/listinfo/pacman-dev

Reply via email to