You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.5 KiB

/* -*- coding: utf-8 -*-
* ----------------------------------------------------------------------
* Copyright © 2011-2014, RedJack, LLC.
* All rights reserved.
*
* Please see the COPYING file in this distribution for license details.
* ----------------------------------------------------------------------
*/
#include "libcork/core/api.h"
#include "libcork/core/types.h"
#include "libcork/ds/dllist.h"
/* Include a linkable (but deprecated) version of this to maintain ABI
* compatibility. */
#undef cork_dllist_init
CORK_API void
cork_dllist_init(struct cork_dllist *list)
{
list->head.next = &list->head;
list->head.prev = &list->head;
}
void
cork_dllist_map(struct cork_dllist *list,
cork_dllist_map_func func, void *user_data)
{
struct cork_dllist_item *curr;
struct cork_dllist_item *next;
cork_dllist_foreach_void(list, curr, next) {
func(curr, user_data);
}
}
int
cork_dllist_visit(struct cork_dllist *list, void *ud,
cork_dllist_visit_f *visit)
{
struct cork_dllist_item *curr;
struct cork_dllist_item *next;
cork_dllist_foreach_void(list, curr, next) {
int rc = visit(ud, curr);
if (rc != 0) {
return rc;
}
}
return 0;
}
size_t
cork_dllist_size(const struct cork_dllist *list)
{
size_t size = 0;
struct cork_dllist_item *curr;
struct cork_dllist_item *next;
cork_dllist_foreach_void(list, curr, next) {
size++;
}
return size;
}