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
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;
|
|
}
|