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 pacman-dev@archlinux.org 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