Name

loc_network_list_push, loc_network_list_pop, loc_network_list_pop_first, loc_network_list_merge - Add networks to a list and take them off again

Synopsis

#include <libloc/network-list.h>

int loc_network_list_push(struct loc_network_list* list,
        struct loc_network* network);

struct loc_network* loc_network_list_pop(struct loc_network_list* list);

struct loc_network* loc_network_list_pop_first(struct loc_network_list* list);

int loc_network_list_merge(struct loc_network_list* self,
        struct loc_network_list* other);

Description

loc_network_list_push() adds network at the right place. Nothing happens if the same network is already on the list. The list holds a reference to it, so that the caller may let go of it.

loc_network_list_pop() takes the last network off the list, and loc_network_list_pop_first() takes the first one off the list. Both are fast enough to use the list as a queue.

loc_network_list_merge() adds all networks of other to self.

Return Value

loc_network_list_push() and loc_network_list_merge() return zero on success, and a negative error number (see errno(3)) on error.

loc_network_list_pop() and loc_network_list_pop_first() return the network, whose reference now belongs to the caller, or NULL if the list is empty.

See Also

Authors

Michael Tremer